newrelic_rpm: неопределенный метод `before_save'для #<Class: 0x00000004a28b28>
Поскольку я обновил gem newrelic_rpm с 3.5.8.72 до 3.6.1.88 в своем приложении Heroku, я заметил, что 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 точно, поэтому мне интересно, как я могу отключить его на рейк-задачах.
Я попытался с помощью https://newrelic.com/docs/ruby/forcing-the-ruby-agent-to-start установить переменную ENV, но она также отключит newrelic для веб-приложения. Есть ли способ установить переменную ENV для всех моих задач по рейку, но только на грабли, а не в веб-сервере?
Большое спасибо заранее!
1 ответ
Лучшее решение зависит от того, как вы выполняете грабли. Например, если вы запускаете это из cronjob, то вы можете добавить NEWRELIC_ENABLE=false
к записи cron для вашей задачи по рейку.
В противном случае, если вы запускаете свои грабли вручную, вы должны добавить следующее в ваш файл newrelic.yml.
autostart.blacklisted_executables: rake
Это предотвратит запуск агента в любом случае, когда исполняемый файл называется rake. Обратите внимание, что это также может быть список, разделенный запятыми, если у вас есть другие исполняемые файлы, в которых вы хотите запретить запуск New Relic.