3

我们在我们的服务器上运行了几个 cron 任务,我们使用 rails runner 来启动它们,像这样:

rails runner 'MyTask.run'

MyTask项目中的类在哪里。问题是,我们使用Bugsnag来处理错误以防万一发生任何故障。当我们运行 rake 任务时,Bugsnag 会保存错误并在他们的网站上列出它们。但是在使用时不会发生这种情况rails runner。发生这种情况时,如何配置 Rails 以将错误发送到 Bugsnag?

4

1 回答 1

5

Rails runner 很难配置或定制。那是因为它实际上是一个带有这个主体的脚本:

if code_or_file.nil?
  $stderr.puts "Run '#{$0} -h' for help."
  exit 1
elsif File.exist?(code_or_file)
  $0 = code_or_file
  Kernel.load code_or_file
else
  eval(code_or_file, binding, __FILE__, __LINE__)
end

如您所见,它只是执行eval您发送的代码,因此没有包装器,没有您可以扩展的类,基本上没有您可以配置的内容。最好创建一个 rake 任务以与 runner 相同的方式执行操作,但这次是在由 Rake 控制的环境中,因此允许您配置所需的一切:

desc 'Wraps a runner command with rake'
task :runner, [:command] => :environment do |t, args|
  eval(args[:command])
end

然后,您使用

rake 'runner["MyTask.run"]'

这将以与 using 非常相似的方式运行任务rails runner,但在 rake 的上下文中(包括使用 Bugsnag)。

于 2014-01-05T15:59:55.293 回答