开发者

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).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜