Подтвердить что ты не робот

Сервер 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, он работает хорошо,

Любая идея?

4b9b3361

Ответ 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.