2013-02-08 3 views
11

Heroku에서 실행되는 Mongoid 3을 사용하는 레일 앱이 있습니다. 유니콘을 사용하도록 업데이트했습니다.자산 사전 컴파일시 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에서 유니콘을 제거하는 경우, 자산 컴파일이 성공 할 수있다 : 나는에게 Heroku에 배포 할 때 나는 다음과 같은 오류가 발생합니다. 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

레일 3 : 자산을 사전 컴파일 할 때

시도 앱 초기화를 해제는 :

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

라인은 이미 주석 처리해야합니다. 나는 최근에 레일 4.0 및 config.assets.initialize_on_precompile = false에이 문제가 없었

+0

해결해 줘서 고마워! – AdrienF

+0

이상하게 생각하지만, 나는 그 라인을 * out *으로 주석 처리했습니다. 그리고 그것은 여전히 ​​저에게 이런 식으로 실패합니다. –

+2

분명히 이것은 Rails 4.0에서 더 이상 지원되지 않습니다. (꼭 필요한 것은 아닙니다.)이 오류가 발생하는 것 같습니다. –

14

가 더 이상 레일 내가 Heroku가 지원과 이야기 4.0을 어떤 효과를 가지고 있으며,이 실험실을 사용 들었다하는 기능이 없습니다 :

heroku labs:enable user-env-compile 

내가 할 수 없습니다 왜 사용자 환경이 유니콘에서만 필요한지에 대한 답을 얻지 만 유니콘 고유의 문제인 것처럼 보입니다. 또는 씬이 전체 앱 부팅을 방해하는 것을합니다.

모든 것이 나에게 이상하게 보이고 자산을 미리 컴파일하는 방법에 문제가 있습니다.

+2

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

관련 문제