Если вы измените код в консоли Rails, повлияет ли это на сервер, работающий параллельно?

#ruby-on-rails #ruby-on-rails-3

#ruby-on-rails #ruby-on-rails-3

Вопрос:

Возможно ли запустить «rails console» в одной оболочке, а затем «rails server» в другой, и затем изменения кода в консоли проникнут в запущенное приложение? Предположительно, это невозможно, но я просто хотел бы проверить, есть ли способ.

Редактировать: оба работают в одной среде. И под изменениями кода я подразумеваю изменения в определениях классов (например, переписывание метода в модели Post).

Комментарии:

1. Что вы подразумеваете под «изменениями кода»? Вы можете использовать консоль для обновления, вставки или удаления данных в базе данных. Вот и все, и это повлияет на запущенное приложение.

2. Я говорю код, чтобы отличить его от данных. Т.Е., если я уточню метод в моем классе Post, это распространится на версию Rails, работающую на консоли.

3. Нет, это не повлияет. Ответ Марио правильный.

Ответ №1:

Если вы измените какие-либо данные, это действительно проникнет. Однако модификации методов, выполняемые «на лету» путем открытия классов и их «обезьяньего исправления», не повлияют на ваше запущенное приложение — если только ваш модифицированный метод не изменяет данные.

Однако всегда желательно запускать консоль в другой среде с другими данными, чтобы избежать нанесения вреда запущенному приложению.

Комментарии:

1. Уточним, что исправленный обезьяной код в консольном приложении не повлияет на серверное приложение, потому что вы запускаете разные экземпляры, и только серверное приложение обслуживает живой трафик. Изменения данных (побочные эффекты) будут распространяться, потому что по умолчанию ваша консоль и серверное приложение будут использовать общие ресурсы, такие как одна и та же база данных. Обратите внимание, что ограничение на изменение кода консоли не всегда действует для других стеков. Например, в Elixir вы можете подключить свою консоль к работающему узлу, который обслуживает трафик, перезагрузить модуль, и тогда изменения повлияют на код, работающий на этом сервере.

Ответ №2:

Если вы изменяете данные в своей консоли В ТОЙ же СРЕДЕ, то они будут изменены в браузере.