【发布时间】:2014-03-01 13:15:45
【问题描述】:
我正在开发一个简单的 Rails 应用程序,它使用 MongoDb 作为数据库(使用 Mongoid)。我一直在应用程序中做我的第一个模型,所以我想使用 rspec 对其进行测试。搜索后,我找到了 rspec-rails 和 mongoid-rspec gems,我按照他们的安装说明进行操作。但是,当我执行:rails g rspec:install,我得到以下错误:
home/jesus/.rvm/gems/ruby-2.0.0-p353/gems/mongoid-3.1.6/lib/mongoid/config/validators/session.rb:99:in `no_database_or_uri?': undefined method `has_key?' for nil:NilClass (NoMethodError)
from /home/jesus/.rvm/gems/ruby-2.0.0-p353/gems/mongoid-3.1.6/lib/mongoid/config/validators/session.rb:45:in `validate_session_database'
from /home/jesus/.rvm/gems/ruby-2.0.0-p353/gems/mongoid-3.1.6/lib/mongoid/config/validators/session.rb:25:in `block in validate'
from /home/jesus/.rvm/gems/ruby-2.0.0-p353/gems/mongoid-3.1.6/lib/mongoid/config/validators/session.rb:24:in `each_pair'
from /home/jesus/.rvm/gems/ruby-2.0.0-p353/gems/mongoid-3.1.6/lib/mongoid/config/validators/session.rb:24:in `validate'
from /home/jesus/.rvm/gems/ruby-2.0.0-p353/gems/mongoid-3.1.6/lib/mongoid/config.rb:239:in `sessions='
from /home/jesus/.rvm/gems/ruby-2.0.0-p353/gems/mongoid-3.1.6/lib/mongoid/config.rb:136:in `load_configuration'
from /home/jesus/.rvm/gems/ruby-2.0.0-p353/gems/mongoid-3.1.6/lib/mongoid/config.rb:93:in `load!'
from /home/jesus/.rvm/gems/ruby-2.0.0-p353/gems/mongoid-3.1.6/lib/mongoid.rb:163:in `load!'
from /home/jesus/.rvm/gems/ruby-2.0.0-p353/gems/mongoid-3.1.6/lib/mongoid/railtie.rb:67:in `block in <class:Railtie>'
from /home/jesus/.rvm/gems/ruby-2.0.0-p353/gems/railties-3.2.15/lib/rails/initializable.rb:30:in `instance_exec'
from /home/jesus/.rvm/gems/ruby-2.0.0-p353/gems/railties-3.2.15/lib/rails/initializable.rb:30:in `run'
from /home/jesus/.rvm/gems/ruby-2.0.0-p353/gems/railties-3.2.15/lib/rails/initializable.rb:55:in `block in run_initializers'
from /home/jesus/.rvm/gems/ruby-2.0.0-p353/gems/railties-3.2.15/lib/rails/initializable.rb:54:in `each'
from /home/jesus/.rvm/gems/ruby-2.0.0-p353/gems/railties-3.2.15/lib/rails/initializable.rb:54:in `run_initializers'
from /home/jesus/.rvm/gems/ruby-2.0.0-p353/gems/railties-3.2.15/lib/rails/application.rb:136:in `initialize!'
from /home/jesus/.rvm/gems/ruby-2.0.0-p353/gems/railties-3.2.15/lib/rails/railtie/configurable.rb:30:in `method_missing'
from /home/jesus/rails_projects/myapp/config/environment.rb:5:in `<top (required)>'
from /home/jesus/.rvm/gems/ruby-2.0.0-p353/gems/activesupport-3.2.15/lib/active_support/dependencies.rb:251:in `require'
from /home/jesus/.rvm/gems/ruby-2.0.0-p353/gems/activesupport-3.2.15/lib/active_support/dependencies.rb:251:in `block in require'
from /home/jesus/.rvm/gems/ruby-2.0.0-p353/gems/activesupport-3.2.15/lib/active_support/dependencies.rb:236:in `load_dependency'
from /home/jesus/.rvm/gems/ruby-2.0.0-p353/gems/activesupport-3.2.15/lib/active_support/dependencies.rb:251:in `require'
from /home/jesus/.rvm/gems/ruby-2.0.0-p353/gems/railties-3.2.15/lib/rails/application.rb:103:in `require_environment!'
from /home/jesus/.rvm/gems/ruby-2.0.0-p353/gems/railties-3.2.15/lib/rails/commands.rb:25:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
我一直在网上冲浪,但找不到任何东西。这是我一直在使用的主要配置文件:
config/mongoid.yml
development:
sessions:
default:
database: myapp_development
hosts:
- localhost:27017
options:
options:
test:
sessions:
default:
database: myapp_test
hosts:
- localhost:27017
options:
consistency: :strong
max_retries: 1
retry_interval: 0
config/initializers/mongo.rb
MongoMapper.connection = Mongo::Connection.new( 'localhost', 27017 )
MongoMapper.database = "myapp_#{Rails.env}"
if defined?(PhusionPassenger)
PhusionPassenger.on_event(:starting_worker_process) do |forked|
MongoMapper.connection.connect if forked
end
end
宝石文件
source 'https://rubygems.org'
gem 'rails', '3.2.15'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'jquery-rails', '3.0.4'
gem 'jquery-ui-rails', '~>4.1.0'
gem 'coffee-rails', '~> 3.2.1'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
gem 'therubyracer'
gem 'uglifier', '>= 1.0.3'
end
gem 'mongo', '1.9.2'
gem 'bson_ext', '1.9.2'
gem 'fancybox-rails', "~> 0.2.1"
gem 'mongo_mapper'
gem 'mongoid', '~> 3.1.6'
gem 'haml', "~> 4.0.4"
gem 'i18n', '~> 0.6.9'
gem 'i18n-js', '2.1.2'
gem 'mongo-i18n', '~> 0.0.3'
gem 'underscore-rails', '~> 1.5.2'
gem 'devise', '~> 3.2.2'
gem 'less-rails', '~> 2.4.2'
gem 'twitter-bootstrap-rails', '~> 2.2.8'
gem 'mongoid-paperclip', '~> 0.0.8'
group :test, :development do
gem "rspec-rails", "~> 2.14.1"
gem "mongoid-rspec", "~> 1.11.0"
end
group :test do
gem 'database_cleaner'
end
当我尝试初始化服务器(rails s)或使用控制台(rails c)时,我得到了同样的错误。我花了很多时间试图找到原因,但我找不到任何东西。
提前致谢。
PD:如果您需要更多配置文件、模型、spec_helper...
,请告诉我【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 mongodb rspec mongoid