2013-07-05 77 views
1

我正在做一個寶石。Rubygems加載錯誤版本的寶石

儘管指定了activemodel的版本,但gem實際上使用的是activemodel 4.0.0。 從4.0.0開始,構造函數只接受一個參數。所以,當我嘗試通過在第二個參數,我得到的參數錯誤:

/Users/me/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/activerecord-4.0.0/lib/active_record/core.rb:180:in `initialize': wrong number of arguments (2 for 1) (ArgumentError) 

爲什麼使用加載ActiveModel了RubyGems的版本不對?

我指定的gemspec以下依賴性:

gem.add_dependency "log4r" 
    gem.add_dependency "deep_end" 
    gem.add_dependency "google_drive" 

    gem.add_development_dependency 'rake' 
    gem.add_development_dependency 'rspec' 
    gem.add_development_dependency "activemodel", "3.2.13" 
    gem.add_development_dependency "activerecord", "3.2.13" 
    gem.add_development_dependency "activesupport", "3.2.13" 

我Gemfile.lock的是這樣的:

PATH 
    remote: . 
    specs: 
    drive_time (0.0.1) 
     deep_end 
     google_drive 
     log4r 

GEM 
    remote: https://rubygems.org/ 
    specs: 
    activemodel (3.2.13) 
     activesupport (= 3.2.13) 
     builder (~> 3.0.0) 
    activerecord (3.2.13) 
     activemodel (= 3.2.13) 
     activesupport (= 3.2.13) 
     arel (~> 3.0.2) 
     tzinfo (~> 0.3.29) 
    activesupport (3.2.13) 
     i18n (= 0.6.1) 
     multi_json (~> 1.0) 
    arel (3.0.2) 
    builder (3.0.4) 
    deep_end (0.0.1) 
     log4r 
    diff-lcs (1.2.4) 
    faraday (0.8.7) 
     multipart-post (~> 1.1) 
    google_drive (0.3.6) 
     nokogiri (>= 1.4.4, != 1.5.2, != 1.5.1) 
     oauth (>= 0.3.6) 
     oauth2 (>= 0.5.0) 
    httpauth (0.2.0) 
    i18n (0.6.1) 
    jwt (0.1.8) 
     multi_json (>= 1.5) 
    log4r (1.1.10) 
    mini_portile (0.5.0) 
    multi_json (1.7.7) 
    multi_xml (0.5.4) 
    multipart-post (1.2.0) 
    nokogiri (1.6.0) 
     mini_portile (~> 0.5.0) 
    oauth (0.4.7) 
    oauth2 (0.9.2) 
     faraday (~> 0.8) 
     httpauth (~> 0.2) 
     jwt (~> 0.1.4) 
     multi_json (~> 1.0) 
     multi_xml (~> 0.5) 
     rack (~> 1.2) 
    rack (1.5.2) 
    rake (10.1.0) 
    rspec (2.13.0) 
     rspec-core (~> 2.13.0) 
     rspec-expectations (~> 2.13.0) 
     rspec-mocks (~> 2.13.0) 
    rspec-core (2.13.1) 
    rspec-expectations (2.13.0) 
     diff-lcs (>= 1.1.3, < 2.0) 
    rspec-mocks (2.13.1) 
    tzinfo (0.3.37) 

PLATFORMS 
    ruby 

DEPENDENCIES 
    activerecord (= 3.2.13) 
    activesupport (= 3.2.13) 
    drive_time! 
    rake 
    rspec 

我還可以得到以下幾點:

$ bundle show activemodel #/Users/pedr/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/activemodel-3.2.13 

回答

0

在嘗試了我能想到的所有事情之後,以下方法已經完成了這項技巧(儘管它是否已經永久解決了問題,只有時間才能說明問題)。

  1. $ gem clean
  2. 卸載rbenv
  3. 安裝rbenv
  4. 刪除Gemfile.lock的
  5. $ bundle
1

確保你使用bundle exec運行你的代碼,否則ruby會將defa最好使用已安裝的最新版本的gem。

使用bundle exec將禁止加載任何不在您的包中的寶石,並應更正您的問題。查看manpage瞭解更多詳情。

希望這會有所幫助!

+0

這不是在這種情況下的問題,但它是絕好的建議。 – Undistraction