Подтвердить что ты не робот

Как определить, работает ли мой код в консоли в Rails 3?

У меня есть этот код в инициализаторе:

if $0 == 'irb'
  # ...
end

Он отлично работает с Rails 2.3, но в Rails 3 значение $0 равно 'script/rails' независимо от того, было ли оно запущено с rails c или rails s. ARGV - пустой массив. Как определить, запущено ли приложение с помощью "rails c" или "rails console"?

4b9b3361

Ответ 1

Вы можете попробовать это, возможно,

if defined?(Rails::Console)
  # in Rails Console
else
  # Not in Rails Console
end

Ответ 2

Спустя много лет есть лучший способ сделать это, регистрируя блоки для запуска на консоли (используя интерфейс railtie).

Так что в инициализаторе вы можете написать:

Rails.application.console do
  # your code here
end

Хорошая мысль об этом заключается в том, что он также работает для runner и должен также работать с пружиной (но я не проверял это).