Ответ 1
Вы можете попробовать это, возможно,
if defined?(Rails::Console)
# in Rails Console
else
# Not in Rails Console
end
У меня есть этот код в инициализаторе:
if $0 == 'irb'
# ...
end
Он отлично работает с Rails 2.3, но в Rails 3 значение $0 равно 'script/rails' независимо от того, было ли оно запущено с rails c или rails s. ARGV - пустой массив. Как определить, запущено ли приложение с помощью "rails c" или "rails console"?
Вы можете попробовать это, возможно,
if defined?(Rails::Console)
# in Rails Console
else
# Not in Rails Console
end
Спустя много лет есть лучший способ сделать это, регистрируя блоки для запуска на консоли (используя интерфейс railtie).
Так что в инициализаторе вы можете написать:
Rails.application.console do
# your code here
end
Хорошая мысль об этом заключается в том, что он также работает для runner
и должен также работать с пружиной (но я не проверял это).