2011-12-08 71 views
3

我剛剛在mongoid的rails中創建了一個應用程序。rails生成不與mongoid一起工作

當我嘗試跟隨在mongoid網站上的教程和運行

rails g mongoid:config 

我得到以下一組錯誤的。

/Users/XXXXXX/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.1/lib/active_support/whiny_nil.rb:48:in `method_missing': undefined method `values' for nil:NilClass (NoMethodError) 
from /Users/XXXXXX/.rvm/gems/ruby-1.9.2-p290/gems/mongoid-2.3.4/lib/mongoid/railtie.rb:64:in `block in <class:Railtie>' 
from /Users/XXXXXX/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/initializable.rb:30:in `instance_exec' 
from /Users/XXXXXX/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/initializable.rb:30:in `run' 
from /Users/XXXXXX/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/initializable.rb:55:in `block in run_initializers' 
from /Users/XXXXXX/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/initializable.rb:54:in `each' 
from /Users/XXXXXX/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/initializable.rb:54:in `run_initializers' 
from /Users/XXXXXX/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/application.rb:96:in `initialize!' 
from /Users/XXXXXX/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/railtie/configurable.rb:30:in `method_missing' 
from /Users/XXXXXX/melodizr/config/environment.rb:5:in `<top (required)>' 
from /Users/XXXXXX/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/application.rb:83:in `require' 
from /Users/XXXXXX/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/application.rb:83:in `require_environment!' 
from /Users/XXXXXX/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/commands.rb:22:in `<top (required)>' 
from script/rails:6:in `require' 
from script/rails:6:in `<main>' 

請幫助,這是殺了我,我覺得我不會錯過任何東西,但它的晚了,我可能是錯的。

+0

顯示你有使用方法值的代碼段! –

回答

5

你正在運行什麼版本的導軌?

東西搞砸了。請確保您有最新的寶石(不指定你的Gemfile版本):

運行所有這些在你的Rails應用程序目錄:

gem update --system 
gem update 
bundle install 
bundle update 

既然是最新的再次嘗試。如果它存在缺陷,你可以自己製作文件。所有這確實發電機是讓mongoid.yml中,看起來像這樣的config目錄下:當mongoid.yml缺少環境部分

development: 
    host: localhost 
    database: mongoid_test_development 

test: 
    host: localhost 
    database: mongoid_test_test 

# set these environment variables on your prod server 
production: 
    host: <%= ENV['MONGOID_HOST'] %> 
    port: <%= ENV['MONGOID_PORT'] %> 
    username: <%= ENV['MONGOID_USERNAME'] %> 
    password: <%= ENV['MONGOID_PASSWORD'] %> 
    database: <%= ENV['MONGOID_DATABASE'] %> 
    # slaves: 
    # - host: slave1.local 
    #  port: 27018 
    # - host: slave2.local 
    #  port: 27019 
+0

雖然這應該解決問題,但他的具體問題是我概述的mongoid.yml問題。 – Mainguy

3

這個確切的問題引起的。該文件說這樣做:

host: localhost 
database: my_database 

但他們假設你使用它確實是這樣的發電機:

development: 
    host: localhost 
    database: my_database 

在railtie該線路將被解析YML文件假設你建立了一個環境。請注意另一個答案暗示,如果你按照說明將修復它假設你強制取代現有的破碎mongoid.yml

2

我已經觀察到這個問題,當你未能在你的mongoid.yml中包含三個RAILS_ENV部分。我發現,你MUST包括如下mongoid.yml YAML配置文件中的所有三個部分...

development: 
    host: foo-bar 
    ..... 
test: 
    host: test-bar 
    .... 
production: 
    host: prod-bar 
    .... 
1

,我不得不刪除,暫時,創業板spring爲它工作。否則,任務rails g mongoid:config不會完成執行。