2013-02-08 92 views
11

我有一個使用在Heroku上運行的Mongoid 3的rails應用程序。我剛剛更新它使用獨角獸。當我嘗試將它部署到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文件看起來像這樣:

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

而且我的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' 

你有任何想法是什麼引起的?

回答

7

的Rails 3:

嘗試關閉應用程序初始化時預編譯的資產:

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

線應該已經有註釋。

+0

解決了它,謝謝! – AdrienF 2013-02-08 15:43:02

+0

奇怪的是,我有那條線評論*出*,它仍然失敗了這種方式對我來說。 – 2013-07-18 18:39:40

+2

顯然,Rails 4.0不再支持這個功能(它提到它不是必須的),而且我似乎正在收到這個錯誤。 – 2013-07-18 18:50:33

14

正如我最近有這個問題和Rails 4.0和config.assets.initialize_on_precompile = false不再使用Rails 4.0我對Heroku支持談到任何影響,被告知使用該實驗室功能:

heroku labs:enable user-env-compile 

我沒能得到一個答案,說明爲什麼用戶環境只有Unicorn纔是必需的,但它似乎是某種特定的Unicorn問題,或者Thin做了一些阻止整個應用程序啓動的事情。

整個事情對我來說似乎很奇怪,而且資產預編譯的方式也存在問題。

+2

https://devcenter.heroku.com/articles/labs-user-env-compile – Andrei 2013-09-03 19:36:52