12

当我尝试启动 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'

它使用以下 gem:newrelic_rpm (3.4.2)。如果我在 gemfile 中注释 newrelic 行,效果很好,

任何的想法?

4

4 回答 4

10

我在 New Relic 工作,我们已经找到了问题所在。

nil显式设置为应用程序名称时会发生这种情况,这通常发生在本地开发从ENV["NEW_RELIC_APP_NAME"]. 由于此环境变量通常不会在您的本地开发盒上设置,因此它会作为 nil 进入代理的配置并导致本地服务器崩溃。它不会影响设置此变量的应用程序的部署版本。

显然代理应该优雅地处理这个案子,我们将在接下来的一两天内发布补丁。我们刚刚完成了对代理配置的重大重构,但在我们的内部测试中错过了这种极端情况。

etoleb 在评论中给出了一个很好的解决方法。让您头疼,我们深感抱歉。

如果您有任何问题或疑虑,请随时通过 sam@newrelic.com 直接给我发送电子邮件。

谢谢!

于 2012-09-10T22:37:39.190 回答
3

该问题似乎与app_name您的 newrelic 配置中的设置为空白有关。我个人经历了 Heroku 安装(所以你的配置可能看起来不同),但这就是我所做的:

在(从https://gist.github.com/2253296config/newrelic.yml复制)我删除了该行

  app_name: <%= ENV["NEW_RELIC_APP_NAME"] %>

common配置(我的第 35 行)到production配置(我的第 247 行之后),最终看起来像

production:
  <<: *default_settings
  monitor_mode: true
  app_name: <%= ENV["NEW_RELIC_APP_NAME"] %>
于 2012-09-10T19:15:45.043 回答
3

很高兴看到可以承担责任的人的回复!干得好,新遗物。谢谢,@samg。

由于问题只是一个 nil env 值,而不是降级 gem 或使用配置文件,我只是添加了环境变量。

很容易看出 heroku 上的设置是什么:

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

然后我选择通过我的项目的 .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 上的 gem 一起使用。

派对!

于 2012-09-11T05:39:35.013 回答
1

感谢您的评论。答案是降级到 3.4.1。

于 2012-09-08T21:13:07.763 回答