簡體   English   中英

Rubygems加載錯誤版本的寶石

[英]Rubygems Loading Wrong Version of Gem

我正在研究寶石。

盡管指定了activemodel的版本,gem實際上仍在使用activemodel 4.0.0。 從4.0.0版本開始,構造函數只接受一個參數。 因此,當我嘗試傳遞第二個參數時,會收到一個Argument錯誤:

/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)

為什么Rubygems使用錯誤版本的ActiveModel?

我在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

確保您使用bundle exec運行代碼,否則ruby將默認使用已安裝的gem的最新版本。

使用bundle exec將禁止加載捆綁中未包含的所有gem,並應糾正您的問題。 查閱手冊以獲取更多詳細信息。

希望這可以幫助!

在嘗試了我所能想到的一切之后,下面的方法就可以解決問題(盡管它是否能夠永久解決問題,只有時間才能證明這一點)。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM