Сервер Rails не запускается из-за новой ошибки relic
Когда я пытаюсь запустить свой Rails-сервер, я получаю следующую ошибку:
Я использую ruby 1.9.2
=> Booting WEBrick
=> Rails 3.1.8 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
/Users/toptier/.rvm/gems/ruby-1.9.2-p320/gems/newrelic_rpm-3.4.2/lib/new_relic/agent/agent.rb:318:in `log_app_names': undefined method `join' for nil:NilClass (NoMethodError)
from /Users/toptier/.rvm/gems/ruby-1.9.2-p320/gems/newrelic_rpm-3.4.2/lib/new_relic/agent/agent.rb:439:in `start'
from /Users/toptier/.rvm/gems/ruby-1.9.2-p320/gems/newrelic_rpm-3.4.2/lib/new_relic/control/instance_methods.rb:95:in `start_agent'
from /Users/toptier/.rvm/gems/ruby-1.9.2-p320/gems/newrelic_rpm-3.4.2/lib/new_relic/control/instance_methods.rb:83:in `init_plugin'
from /Users/toptier/.rvm/gems/ruby-1.9.2-p320/gems/newrelic_rpm-3.4.2/lib/newrelic_rpm.rb:36:in `block in <class:Railtie>'
from /Users/toptier/.rvm/gems/ruby-1.9.2-p320/gems/railties-3.1.8/lib/rails/initializable.rb:30:in `instance_exec'
from /Users/toptier/.rvm/gems/ruby-1.9.2-p320/gems/railties-3.1.8/lib/rails/initializable.rb:30:in `run'
from /Users/toptier/.rvm/gems/ruby-1.9.2-p320/gems/railties-3.1.8/lib/rails/initializable.rb:55:in `block in run_initializers'
from /Users/toptier/.rvm/gems/ruby-1.9.2-p320/gems/railties-3.1.8/lib/rails/initializable.rb:54:in `each'
from /Users/toptier/.rvm/gems/ruby-1.9.2-p320/gems/railties-3.1.8/lib/rails/initializable.rb:54:in `run_initializers'
from /Users/toptier/.rvm/gems/ruby-1.9.2-p320/gems/railties-3.1.8/lib/rails/application.rb:96:in `initialize!'
from /Users/toptier/.rvm/gems/ruby-1.9.2-p320/gems/railties-3.1.8/lib/rails/railtie/configurable.rb:30:in `method_missing'
from /Users/toptier/Desktop/Proyectos/CursoIngles/config/environment.rb:5:in `<top (required)>'
from /Users/toptier/.rvm/gems/ruby-1.9.2-p320/gems/activesupport-3.1.8/lib/active_support/dependencies.rb:240:in `require'
from /Users/toptier/.rvm/gems/ruby-1.9.2-p320/gems/activesupport-3.1.8/lib/active_support/dependencies.rb:240:in `block in require'
Используется следующий камень: newrelic_rpm (3.4.2).
Если я комментирую newrelic line в gemfile, он работает хорошо,
Любая идея?
Ответы
Ответ 1
Я работаю в New Relic, и мы обнаружили проблему.
Это происходит, когда nil
явно задается как имя приложения, которое обычно происходит для локальной разработки приложений heroku, которые вытаскивают свое имя приложения из ENV["NEW_RELIC_APP_NAME"]
. Поскольку эта переменная среды обычно не устанавливается в вашем локальном блоке dev, она входит в конфигурацию агента как nil и выдает сбой локального сервера. Это не влияет на развернутые версии приложения, где установлена эта переменная.
Очевидно, агент должен обработать этот случай изящно, и у нас будет исправление на следующий день или два. Мы только что завершили крупный рефакторинг конфигурации агента, и этот краевой случай был пропущен во внутреннем тестировании.
etoleb дает хорошее обходное решение в комментарии. Нам очень жаль причинить вам эту головную боль.
Если у вас есть какие-либо вопросы или замечания, напишите мне прямо на [email protected]
Спасибо!
Ответ 2
Проблема, похоже, связана с тем, что параметр app_name
пуст в вашей конфигурации newrelic. Лично я прошел установку Heroku (так что ваша конфигурация может выглядеть по-другому), но это то, что я сделал:
Внутри config/newrelic.yml
(скопировано из https://gist.github.com/2253296) Я удалил строку
app_name: <%= ENV["NEW_RELIC_APP_NAME"] %>
из конфигурации common
(строка 35 для меня) в конфигурацию production
(после строки 247 для меня), которая заканчивается похожим на
production:
<<: *default_settings
monitor_mode: true
app_name: <%= ENV["NEW_RELIC_APP_NAME"] %>
Ответ 3
Замечательно видеть ответ от кого-то, кто может взять на себя ответственность! Хорошая работа, Новая реликвия. Спасибо, @samg.
Поскольку проблема - это просто значение nil env, вместо того, чтобы понижать качество или использовать файлы конфигурации, я просто добавил переменную окружения.
Легко понять, что настроено на герою:
$ heroku config
...
NEW_RELIC_APP_NAME: my_app_name
NEW_RELIC_ID: 123456
NEW_RELIC_LICENSE_KEY: 982987ae987987af98798something7e897987987c7b9d7
NEW_RELIC_LOG: stdout
...
Затем я решил установить локальный env var через файл моего проекта .rvmrc, где я так несколько других подобных вещей:
rvm use [email protected] --create
export PATH=bin:$PATH
export NEW_RELIC_APP_NAME=my_app_name
Затем он просто взял cd ..
и cd
обратно в мой проект, и он работал с камнем в версии 3.4.2.
Party on!
Ответ 4
Спасибо за комментарий. Ответ заключается в понижении до 3.4.1.