当我尝试启动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'
它使用以下gem:newrelic_rpm(3.4.2)。 如果我在gemfile中评论newrelic行,那么效果很好,
有什么想法吗?
答案 0 :(得分:10)
我在New Relic工作,我们已经找到了问题。
当nil
被明确设置为应用名称时会发生这种情况,这通常适用于本地开发从ENV["NEW_RELIC_APP_NAME"]
提取其应用名称的heroku应用。由于此环境变量通常不在您的本地开发框中设置,因此它将代理的配置作为nil进入并崩溃本地服务器。它不会影响已设置此变量的应用程序的已部署版本。
显然,代理人应该优雅地处理这个案子,我们将在接下来的一两天内修补。我们刚刚完成了代理配置的重大重构,在我们的内部测试中错过了这个边缘案例。
etoleb在评论中提供了一个很好的解决方法。我们非常抱歉让你头疼。
如果您有任何问题或疑虑,请随时直接发送电子邮件至sam@newrelic.com。
谢谢!
答案 1 :(得分:3)
此问题似乎与您的newrelic配置中app_name
设置为空白有关。我个人经历了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"] %>
答案 2 :(得分:3)
很高兴看到能够承担责任的人的回复!干得好,New Relic。谢谢,@ samg。
由于问题只是一个零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文件设置一个本地env var,在那里我做了一些其他类似的事情:
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。
派对!
答案 3 :(得分:1)
感谢您的评论。答案是降级到3.4.1。