рельсы генерируют не работающие с монгоидом - PullRequest
3 голосов
/ 08 декабря 2011

Я только что создал приложение в рельсах с 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>'

Пожалуйста, помогите, это убивает меня, я чувствую, что ничего не упускаю, но уже поздно, и я, вероятно, ошибаюсь.

Ответы [ 4 ]

5 голосов
/ 08 декабря 2011

Какую версию рельсов вы используете?

Что-то не так.Убедитесь, что у вас установлены последние гемы (не указывайте версии в вашем гемфайле):

Запустите все это в вашем каталоге rails app dir:

gem update --system
gem update
bundle install
bundle update

Теперь, когда вы в курсеПопробуйте снова.Если это все еще не работает, просто создайте файл самостоятельно.Все, что делает этот генератор, это делает mongoid.yml в каталоге config, который выглядит следующим образом:

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
3 голосов
/ 24 февраля 2012

Эта точная проблема возникает, когда mongoid.yml отсутствует раздел среды. Документы говорят, сделать это:

host: localhost   
database: my_database

Но они предполагают, что вы использовали генератор, который ДЕЙСТВИТЕЛЬНО делает что-то вроде этого:

development:
    host: localhost
    database: my_database

Эта строка в railtie анализирует файл yml, предполагая, что у вас настроена среда. Обратите внимание на другой ответ, который ссылается на это, и если вы следовали инструкциям, БЫЛИ исправили бы его, предполагая, что вы принудительно переопределите существующий сломанный mongoid.yml

2 голосов
/ 13 июня 2015

Мне пришлось временно удалить драгоценный камень spring, чтобы он заработал. В противном случае задача rails g mongoid:config не будет завершена.

2 голосов
/ 08 июня 2012

Я наблюдал эту проблему, когда вы не включили три раздела RAILS_ENV в свой mongoid.yml.Я обнаружил, что вы ДОЛЖНЫ включить все три раздела в файл конфигурации YAML mongoid.yml, как показано ниже ...

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