如何检测rails应用程序是否正在从rails runner运行

时间:2014-09-29 08:10:30

标签: ruby-on-rails

我的代码上有这一行

puts "done clearing for #{@transfer_account.inspect}"

我希望它只在我运行cron作业(使用rails runner)时才能运行

所以试图实施

puts_if_runner "done clearing for #{@transfer_account.inspect}"

命令是 bundle exec rails runner -e production "Transfer.process!"

1 个答案:

答案 0 :(得分:1)

由于每个Rails应用程序都是Railtie,因此您可以使用Railties API在进程开始时设置标志。我在config/application.rb

中有这个
class Application < Rails::Application
  # Are we in rails runner?
  config.is_rails_runner = false
  runner do |app|
      app.config.is_rails_runner = true
  end

  #...

然后你可以测试这个标志:

if Rails.application.config.is_rails_runner
  puts "done clearing for #{@transfer_account.inspect}"
end