Adr*_*enF 11 ruby-on-rails heroku unicorn ruby-on-rails-3 mongoid3
我有一个使用在Heroku上运行的Mongoid 3的rails应用程序.我刚刚更新它以使用Unicorn.当我尝试将其部署到Heroku时,我收到以下错误:
Running: rake assets:precompile
rake aborted!
undefined method `match' for nil:NilClass
/tmp/build_3nnbzpfmnjpns/vendor/bundle/ruby/1.9.1/gems/mongoid-3.0.21/lib/mongoid/sessions/mongo_uri.rb:49:in `initialize'
Run Code Online (Sandbox Code Playgroud)
完整的堆栈跟踪可以在http://pastebin.com/8YcJHEmS找到
但是如果我从我的Gemfile中删除Unicorn,资产编译就会成功.查看Mongoid代码,我可以看到当mongoid.yml文件被解析时发生错误,但我无法弄清楚为什么Unicorn会导致失败.我的mongoid.yml文件看起来像这样:
production:
sessions:
default:
uri: <%= ENV['MONGOHQ_URL'] %>
options:
skip_version_check: true
safe: true
Run Code Online (Sandbox Code Playgroud)
我的Gemfile:
source 'https://rubygems.org'
ruby '1.9.3'
gem 'rails', '3.2.11'
gem 'thin'
group :assets do
gem 'sass-rails', '~> 3.2'
gem 'coffee-rails', '~> 3.2'
gem 'uglifier', '>= 1.0.3'
gem "twitter-bootstrap-rails", '>=2.1.8'
gem "bootstrap_form"
end
gem "jquery-rails"
gem 'jquery-ui-rails', "3.0.1"
gem 'newrelic_rpm'
gem "httparty"
gem "resque"
gem "resque-loner"
gem "unicorn", "4.4.0"
gem "mongoid", "~> 3.0.0"
gem "mongo", "~> 1.7.0"
gem "bson", "~> 1.7"
gem "bson_ext", "~> 1.7"
gem 'less-rails', "~> 2.2"
gem 'therubyracer', '>= 0.11.1'
gem 'libv8', '~> 3.11.8'
gem 'devise', '~> 2.1.2'
gem 'devise_invitable', '~> 1.0.0'
gem 'bootstrap_form'
gem 'font-awesome-rails'
gem 'omniauth'
gem 'omniauth-facebook'
gem 'kaminari'
gem 'mongoid_search'
Run Code Online (Sandbox Code Playgroud)
你知道是什么原因造成的吗?
Chr*_*ola 14
由于我最近遇到了Rails 4.0的这个问题并且config.assets.initialize_on_precompile = false不再对Rails 4.0 有任何影响,我采访了Heroku支持,并被告知使用此实验室功能:
heroku labs:enable user-env-compile
Run Code Online (Sandbox Code Playgroud)
我无法得到一个答案,为什么只有Unicorn需要用户环境,但它似乎是某种类型的Unicorn特定问题,或者Thin会阻止整个应用程序启动.
整个事情对我来说似乎很奇怪,并且资产预先编译的方式存在问题.
Rails 3:
在预编译资产时尝试关闭应用初始化:
# config/application.rb
config.assets.initialize_on_precompile = false
Run Code Online (Sandbox Code Playgroud)
这条线应该已经注释掉了.
| 归档时间: |
|
| 查看次数: |
1436 次 |
| 最近记录: |