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



我的代码上有这一行

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!"

由于每个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

最新更新