Rubygems Загрузка неправильной версии Gem

Вопрос:

Я работаю над Gem.

Несмотря на указание версии activemodel, камень действительно использует 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

Лучший ответ:

Попробовав все, о чем я мог подумать, следующее получило трюк (хотя, если он постоянно вылечил проблему, скажет только время).

  1. $ gem clean
  2. Удалить rbenv
  3. Установить rbenv
  4. Удалить Gemfile.lock
  5. $ bundle
Ответ №1

Убедитесь, что вы используете свой код с bundle exec, иначе Ruby по умолчанию использует самую последнюю версию установленного вами драгоценного камня.

Использование bundle exec запретит загрузку любых драгоценных камней, не входящих в ваш комплект, и должно исправить вашу проблему. Посмотрите man-страницу для получения более подробной информации.

Надеюсь это поможет!

Оцените статью
TechArks.Ru
Добавить комментарий