2013-02-08 14 views
11

私はHeroku上で動作するMongoid 3を使用するレールアプリを持っています。私はUnicornを使うように更新しました。私はHerokuのにデプロイしようとすると、私は次のエラーを取得する:資産がプリコンパイル中にUnicornがmongoidエラーを引き起こす

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' 

フルスタックトレースがhttp://pastebin.com/8YcJHEmS

で発見することができます。しかし、私は私のGemfileからユニコーンを削除した場合、資産のコンパイルが成功しました。 Mongoidコードを見ると、mongoid.ymlファイルが解析されているときにエラーが発生することがわかりますが、なぜUnicornが失敗するのかわかりません。 マイmongoid.ymlファイルは次のようになります。

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' 

あなたがこれを引き起こしているものの任意のアイデアを持っているでしょう:

production: 
    sessions: 
    default: 
     uri: <%= ENV['MONGOHQ_URL'] %> 
     options: 
     skip_version_check: true 
     safe: true 

そして、私のGemfile?

答えて

7

のRails 3:

がプリコンパイル時に資産をアプリの初期設定をオフにしてください:

# config/application.rb 
config.assets.initialize_on_precompile = false 

行が既に存在コメントアウトする必要があります。私は最近のRails 4.0とconfig.assets.initialize_on_precompile = falseでこの問題があったとして

+0

解決済み、ありがとう! – AdrienF

+0

しかし、奇妙なことに、私はその行を* out *とコメントしました。 –

+2

これは明らかにRails 4.0ではサポートされていません(これは必須ではないと言われています)、このエラーが発生しているようです。 –

14

はもはやRailsの私はHerokuのサポートと話をした4.0を持つ任意の効果を持っており、このラボを使用するように言われたことは備えていません:

heroku labs:enable user-env-compile 

私がすることができませんでしたUnicornでしかユーザ環境が必要ではないが、それはUnicorn固有の問題であると思われます。Thinは、アプリケーション全体が起動しないようにします。

資産全体があらかじめコンパイルされていることで、全体が奇妙に見えて問題の匂いがします。

+2

https://devcenter.heroku.com/articles/labs-user-env-compile – Andrei