2011-12-08 74 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不会完成执行。