How can I detect if my code is running in the console in Rails 3?
I have this code in an initializer:
if $0 == 'irb'
# ...
end
It works fine with Rails 2.3 but in Rails 3 the value of $0 is 'script/rails' no matter if it was started with rails c or rails s. ARGV is an empty array. How can I detect if the application has been started w开发者_如何学Cith "rails c" or "rails console"?
You could try this perhaps
if defined?(Rails::Console)
# in Rails Console
else
# Not in Rails Console
end
Many years later there is a better method to do this registering blocks to run for the console (using the railtie interface).
So in the initializer you can write:
Rails.application.console do
# your code here
end
The good think about this is that it also works for runner
and it should also work with spring (but I didn't test that).
精彩评论