如何在Rails 3中检测我的代码是否在控制台中运行?

时间:2011-01-05 11:50:19

标签: ruby-on-rails console ruby-on-rails-3

我在初始化程序中有这段代码:

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

它适用于Rails 2.3,但在Rails 3中,无论是使用rails c还是rails s启动,$ 0的值都是'script / rails'。 ARGV是一个空数组。如何检测应用程序是否已使用“rails c”或“rails console”启动?

2 个答案:

答案 0 :(得分:82)

你可以尝试这个

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

答案 1 :(得分:0)

很多年以后,有一种更好的方法来注册要在控制台上运行的块(使用railtie界面)。

因此在初始化程序中,您可以编写:

Rails.application.console do
  # your code here
end

关于这一点的好想法是,它也适用于runner,并且也应该与spring一起使用(但我没有测试)。