3

Sinatra アプリで Mongoid を使い始めようとしていますが、依存関係の問題が発生しているようです。それが役立つ場合、私は RVM を使用し、Ruby 1.9.3 を実行している Macbook Pro を使用しています。

$ ruby​​ config.ru を実行した後に表示されるエラーは次のとおりです。

/Users/duncanmalashock/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/rubygems/specification.rb:1637:in `raise_if_conflicts': Unable to activate mongoid-3.0.23, because activemodel-4.0.0 conflicts with activemodel (~> 3.1) (Gem::LoadError)
from /Users/duncanmalashock/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/rubygems/specification.rb:746:in `activate'
from /Users/duncanmalashock/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/rubygems.rb:212:in `rescue in try_activate'
from /Users/duncanmalashock/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/rubygems.rb:209:in `try_activate'
from /Users/duncanmalashock/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/rubygems/custom_require.rb:59:in `rescue in require'
from /Users/duncanmalashock/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/rubygems/custom_require.rb:35:in `require'
from /Users/duncanmalashock/Penumbra/penumbra.rb:4:in `<top (required)>'
from /Users/duncanmalashock/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /Users/duncanmalashock/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from config.ru:2:in `<main>'

誰でも助けることができますか?

関連するファイルは次のとおりです。

モンゴイド.yml:

development:
  sessions:
    default:
      database: mongoid
      hosts:
        - localhost:27017

config.ru:

require 'sinatra'
require './penumbra'
run Sinatra::Application

Gemfile:

source :rubygems
source :rubyforge

# Thin Server
gem 'thin'

# Sinatra
gem 'sinatra'
gem 'sinatra-contrib', :require => 'sinatra/multi_route'
gem 'sinatra-partial', :require => 'sinatra/partial'
gem 'sinatra-reloader'

# MongoDB
gem "mongoid"

# Shopify
gem 'shopify_api'

半影.rb:

require 'sinatra'
require 'shopify_api'
require 'mongo'
require 'mongoid'

require 'json'
require "sinatra/reloader" if development?

Mongoid.load!("./mongoid.yml", :production)

def isactivepage(link_name)
    if (link_name == @page_name)
        return ' activelink'
    else return ''
    end
end

get '/' do
    @page_name = "Home"
    erb :"pages/index"
end

get '/about' do
    @page_name = "About"
    erb :"pages/about"
end

$ bundle exec rackup を実行した後:

/Users/duncanmalashock/.rvm/gems/ruby-1.9.3-p448/gems/mongoid-1.0.6/lib/mongoid.rb:68:in `method_missing': undefined method `load!' for #<Mongoid::Config:0x007fc0838cb1d0> (NoMethodError)
from /Users/duncanmalashock/Penumbra/penumbra.rb:9:in `<top (required)>'
from /Users/duncanmalashock/Penumbra/config.ru:2:in `require'
from /Users/duncanmalashock/Penumbra/config.ru:2:in `block in <main>'
from /Users/duncanmalashock/.rvm/gems/ruby-1.9.3-p448/gems/rack-1.5.2/lib/rack/builder.rb:55:in `instance_eval'
from /Users/duncanmalashock/.rvm/gems/ruby-1.9.3-p448/gems/rack-1.5.2/lib/rack/builder.rb:55:in `initialize'
from /Users/duncanmalashock/Penumbra/config.ru:in `new'
from /Users/duncanmalashock/Penumbra/config.ru:in `<main>'
from /Users/duncanmalashock/.rvm/gems/ruby-1.9.3-p448/gems/rack-1.5.2/lib/rack/builder.rb:49:in `eval'
from /Users/duncanmalashock/.rvm/gems/ruby-1.9.3-p448/gems/rack-1.5.2/lib/rack/builder.rb:49:in `new_from_string'
from /Users/duncanmalashock/.rvm/gems/ruby-1.9.3-p448/gems/rack-1.5.2/lib/rack/builder.rb:40:in `parse_file'
from /Users/duncanmalashock/.rvm/gems/ruby-1.9.3-p448/gems/rack-1.5.2/lib/rack/server.rb:277:in `build_app_and_options_from_config'
from /Users/duncanmalashock/.rvm/gems/ruby-1.9.3-p448/gems/rack-1.5.2/lib/rack/server.rb:199:in `app'
from /Users/duncanmalashock/.rvm/gems/ruby-1.9.3-p448/gems/rack-1.5.2/lib/rack/server.rb:314:in `wrapped_app'
from /Users/duncanmalashock/.rvm/gems/ruby-1.9.3-p448/gems/rack-1.5.2/lib/rack/server.rb:250:in `start'
from /Users/duncanmalashock/.rvm/gems/ruby-1.9.3-p448/gems/rack-1.5.2/lib/rack/server.rb:141:in `start'
from /Users/duncanmalashock/.rvm/gems/ruby-1.9.3-p448/gems/rack-1.5.2/bin/rackup:4:in `<top (required)>'
from /Users/duncanmalashock/.rvm/gems/ruby-1.9.3-p448/bin/rackup:23:in `load'
from /Users/duncanmalashock/.rvm/gems/ruby-1.9.3-p448/bin/rackup:23:in `<main>'
4

1 に答える 1

3

がありますが、GemfileBundler を使用してアプリを起動していないため、競合が発生しています。

(3.0.3)の現在のバージョンは、バージョン要件が に設定されたviaにshopify_api依存しています。システムに Rails 4 がインストールされているため、4.0 がロードされます。activemodelactiveresource>=3.0.0activemodel

の現在のバージョンmongoidも に依存していますactivemodelが、今回のバージョン要件は~> 3.2です。

これら 2 つのバージョン要件には互換性がないため、エラーが発生しますactivemodel-4.0.0 conflicts with activemodel (~> 3.1)

これを修正するには、Bundler を使用してアプリを起動するだけです。で実行していると言いますが$ ruby config.ru、これは a を使用する正しい方法ではありませんconfig.ru(依存関係の問題を修正したとしても、後でエラーが発生します)。を使用する必要がありますrackup。この場合、次を実行する必要があります。

$ bundle exec rackup
于 2013-08-15T23:26:48.303 に答える