0

プロジェクトにrspecとmongoidをインストールしようとしましたが(「RailsDeep Dive」という本の例に従って)、RSpecからジェネレーターを実行しようとするとエラーが発生します。

これがgemfileです:

gem 'rails', '3.2.11'
gem 'devise', "~> 1.4.2"
gem 'mongoid', "~> 2.1.8"
gem 'mongoid_spacial', '~> 0.2.13'
gem 'haml', '~> 3.1.2'
gem 'bson_ext', '~> 1.3.1'
gem 'rails-backbone'

group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'
  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'
group :test, :development do
  gem 'rspec-rails', '~> 2.6.1'
  gem 'mongoid-rspec', '~> 1.4.4'
  gem 'capybara', '~> 1.0.1'
  gem 'factory_girl_rails', '~> 1.1.0'
  gem 'database_cleaner', '~> 0.6.7'
  gem 'jasmine', '~> 1.0.2.1'
end

ジェネレーターを使用してmongo構成ファイルを生成しました。結果は次のとおりです。

development:
  host: localhost
  database: loccasions_development

test:
  host: localhost
  database: loccasions_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'] %>

MongoDBが稼働していることを確認でき、Webブラウザインターフェイスにアクセスできます。ただし、実行するrails g rspec:installと、次のエラーが発生します。

NOTE: Gem.available? is deprecated, use Specification::find_by_name. It will be removed on or after 2011-11-01.
Gem.available? called from /home/glenn/.rvm/gems/ruby-1.9.3-p362/gems/jasmine-1.0.2.1/lib/jasmine/base.rb:64.
host is not a valid option for Mongo::MongoClient
/home/glenn/.rvm/gems/ruby-1.9.3-p362/gems/bson-1.8.2/lib/bson/bson_c.rb:24:in `serialize': wrong number of arguments(4 for 3) (ArgumentError)

どうすればこれを修正できますか?

4

2 に答える 2

0

bson_ext gem を使用していないのは、おそらく古いものであり、明らかに bson-1.8.2 に問題があるためです。

以下を削除できます: gem 'bson_ext', '~> 1.3.1' を実行し、bundle install を試してください (これにより、デフォルトで bson_ext がインストールされる場合があります)。

または変更: gem 'bson_ext', '~> 1.3.1' を gem 'bson_ext' に変更

bundle upgrade bson_ext を実行します (これにより、強制的に bson_ext にアップグレードされます)。

于 2013-01-29T18:52:38.417 に答える
0

私も同じ問題を抱えていました。以下に示すように、すべてのgemにHEADを使用し、mongo_extを追加しました(ただし、何も変わっていないと思います):

source 'https://rubygems.org'

gem 'rails'
gem 'devise'
gem 'mongoid'
gem 'mongoid_spacial'
gem 'haml'
gem 'bson_ext'
gem 'mongo_ext'
gem 'rails-backbone'

group :assets do
  gem 'sass-rails'
  gem 'coffee-rails'
  gem 'uglifier'
end

gem 'jquery-rails'

group :test, :development do
  gem 'rspec-rails'
  gem 'mongoid-rspec'
  gem 'capybara'
  gem 'factory_girl_rails'
  gem 'database_cleaner'
  gem 'jasmine'
end

モンゴイドジェネレーターを再実行します

rails g mongoid:config

適切な mongoid.yml を再作成してから、rspec インストーラーを再作成するため

rails g rspec:install

それで全部です。私が使用する宝石のバージョンは次のとおりです。

bson_ext (1.8.2)
  bson (~> 1.8.2)

mongo_ext (0.19.3)
mongoid (3.0.21)
  activemodel (~> 3.1)
  moped (~> 1.2)
  origin (~> 1.0)

mongoid-rspec (1.6.0)
  mongoid (>= 3.0.1)
  rake
  rspec (>= 2.9)
mongoid_spacial (0.2.16)
  activesupport (~> 3.0)
  mongoid (>= 2.3.0)

そしてコメントアウト

config.use_transactional_fixtures = true

config.fixture_path = "#{::Rails.root}/spec/fixtures"

spec_helper.rb で

于 2013-02-10T01:54:35.227 に答える