ruby-on-rails - 如何检测您的 Rails 应用程序是否正在从 Rails 运行程序运行

标签 ruby-on-rails

我的代码中有这一行

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

我希望它仅在我运行 cron 作业(使用 Rails runner)时运行

所以尝试实现

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

命令是 bundle execrails 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

关于ruby-on-rails - 如何检测您的 Rails 应用程序是否正在从 Rails 运行程序运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26095275/

相关文章:

ruby-on-rails - Rails 3 将文本制作为可点击的链接

ruby-on-rails - 使用不同 API 结果的设计模式

ruby-on-rails - <span style=...> sanitizer 安全吗?

ruby-on-rails - 如何在 ruby​​ 中打印数组内的对象元素

mysql - 即使没有记录,Rails/MYSQL QUERY也会返回值?

ruby-on-rails - 在 Rails 3.2 的生产模式下检查 500 内部服务器错误

javascript - 调用 Bootstrap 函数时为 "Uncaught TypeError: undefined is not a function"

ruby-on-rails - Rails Arel 选择不同的列

ruby-on-rails - 如何将条形码阅读器添加到我的 Rails 3.2 应用程序

mysql - Rails DateTime 辅助逻辑