Сервер Rails не запускается из-за новой ошибки реликвии

Когда я пытаюсь запустить свой сервер Rails, я получаю следующую ошибку:

Я использую рубин 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 в gemfile, она будет работать хорошо,

Есть идеи?


person Tony    schedule 08.09.2012    source источник
comment
У меня такая же проблема с новой версией нового реликтового камня 3.4.2. Не знаю в чем причина, но с 3.4.1 все работает отлично. Попробуйте понизить версию гем.   -  person Nick Kugaevsky    schedule 09.09.2012


Ответы (4)


Я работаю в New Relic, и мы нашли проблему.

Это происходит, когда nil явно задано в качестве имени приложения, что обычно происходит при локальной разработке приложений heroku, которые берут свое имя приложения из ENV["NEW_RELIC_APP_NAME"]. Поскольку эта переменная среды обычно не устанавливается в вашем локальном окне разработки, она входит в конфигурацию агента как nil и приводит к сбою локального сервера. Это не влияет на развернутые версии приложения, в которых задана эта переменная.

Очевидно, что агент должен изящно справиться с этим случаем, и мы выпустим исправление в ближайшие день или два. Мы только что завершили серьезный рефакторинг конфигурации агента, и этот пограничный случай был упущен при нашем внутреннем тестировании.

Этолеб дает хороший обходной путь в комментарии. Мы очень сожалеем, что доставили вам эту головную боль.

Если у вас есть какие-либо вопросы или проблемы, не стесняйтесь, пишите мне напрямую по адресу [email protected].

Спасибо!

person samg    schedule 10.09.2012
comment
Спасибо, ребята. С нетерпением жду вашего патча для обновления драгоценного камня newrelic. - person Nick Kugaevsky; 11.09.2012
comment
Я получаю это развертывание в Heroku. Приложение развертывается, но ошибка появляется в консоли развертывания. Просто к вашему сведению - person JohnMetta; 13.09.2012

Проблема, похоже, связана с тем, что параметр 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"] %>
person etoleb    schedule 10.09.2012

Приятно видеть ответ от человека, который может взять на себя ответственность! Хорошая работа, Нью Реликвия. Спасибо, @samg.

Поскольку проблема заключается просто в нулевом значении env, а не в понижении версии драгоценного камня или возне с конфигурационными файлами, я просто добавил переменную среды.

Легко увидеть, какие настройки есть на героку:

$ heroku config
  ...
NEW_RELIC_APP_NAME:    my_app_name
NEW_RELIC_ID:          123456
NEW_RELIC_LICENSE_KEY: 982987ae987987af98798something7e897987987c7b9d7
NEW_RELIC_LOG:         stdout
 ...

Затем я решил установить локальную переменную env через файл .rvmrc моего проекта, где я сделал некоторые другие подобные вещи:

rvm use ruby-1.9.2-p290@ConTracker --create
export PATH=bin:$PATH
export NEW_RELIC_APP_NAME=my_app_name

Затем он просто взял cd .. и cd обратно в мой проект, и он работал с драгоценным камнем в версии 3.4.2.

Время вечеринок!

person brookr    schedule 11.09.2012

Спасибо за комментарий. Ответ — перейти на 3.4.1.

person Tony    schedule 08.09.2012
comment
ответ — понизить версию. ;] Несколько других вариантов представлены здесь. Мне показалось, что проще всего просто установить локальную переменную env для того, что отсутствовало. - person brookr; 11.09.2012