由于我已经在我的Heroku应用程序上将newrelic_rpm gem从3.5.8.72更新到3.6.1.88,我注意到newrelic正在加载我的rake任务,给我一些奇怪的错误:
rake aborted!
undefined method `before_save' for #<Class:0x00000003d2f908>
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.13/lib/active_record/dynamic_matchers.rb:55:in `method_missing'
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.13/lib/active_record/session_store.rb:90:in `<class:Session>'
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.13/lib/active_record/session_store.rb:79:in `<class:SessionStore>'
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.13/lib/active_record/session_store.rb:53:in `<module:ActiveRecord>'
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.13/lib/active_record/session_store.rb:3:in `<top (required)>'
/app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.13/lib/rails/application/configuration.rb:138:in `session_store'
/app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.13/lib/rails/application.rb:273:in `block in default_middleware_stack'
/app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.13/lib/rails/application.rb:237:in `tap'
/app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.13/lib/rails/application.rb:237:in `default_middleware_stack'
/app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.13/lib/rails/engine.rb:469:in `app'
...
我知道问题来自newrelic_rpm肯定,所以我想知道如何以某种方式在rake任务上禁用它。
我尝试使用https://newrelic.com/docs/ruby/forcing-the-ruby-agent-to-start设置ENV var,但它也会禁用webapp的newrelic。有没有办法为我的所有佣金任务设置ENV var,但只能在rake上而不是在web服务器中设置?
提前非常感谢!
答案 0 :(得分:3)
最佳解决方案取决于您执行rake任务的方式。例如,如果您是从cronjob运行它,那么您可以将NEWRELIC_ENABLE=false
添加到rake任务的cron条目中。
否则,如果您手动运行rake任务,则应将以下内容添加到newrelic.yml文件中。
autostart.blacklisted_executables: rake
这将阻止代理在可执行文件名为rake的任何实例中启动。请注意,如果您希望阻止New Relic启动其他可执行文件,那么这也可以是逗号分隔列表。