Работают ли jeweler и gemspec в Gemfile вместе?

#ruby #rubygems #bundler

#ruby #rubygems #bundler

Вопрос:

У меня проблема при использовании gemspec в моем Gemfile и использовании jeweler:

 sudo gem install
pkg/revertible_paper_trail-0.3.0.gem
Fetching: revertible_paper_trail-0.3.0.gem (100%)
ERROR:  Error installing pkg/revertible_paper_trail-0.3.0.gem:
    revertible_paper_trail requires revertible_paper_trail (>= 0)
  

rake gemspec:debug показывает, что это было добавлено:

 if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
  s.add_runtime_dependency(%q<revertible_paper_trail>, [">= 0"])
  

При удалении gemspec из Gemfile зависимость от времени выполнения исчезает, и установка gem работает.

Итак, какова наилучшая практика при использовании jeweler и bundler?

К вашему СВЕДЕНИЮ: код для драгоценного камня находится по адресуhttps://github.com/CyTeam/revertible_paper_trail

Ответ №1:

gem install не имеет ничего общего с bundler или вашим Gemfile, поэтому этот вопрос очень запутанный. (Кстати, ваша ссылка на код ведет на страницу 404.)

Комментарии:

1. Ну, я тоже в замешательстве, в этом проблема;-) Что я вижу, так это то, что jeweler добавляет странную зависимость времени выполнения от самого gem со спецификацией версии > = 0 к генерируемой им gemspec. Но только если gemspec объявление находится в Gemfile. Похоже, что эта зависимость от самоссылки мешает gem install выполнить успешную установку. КСТАТИ: исправлена ссылка (спасибо @iceydee!)

Ответ №2:

Прекратите использовать jeweler и просто поддерживайте свой собственный .gemspec .

Комментарии:

1. Ну, я не против создать .gemspec сам, но мне действительно нравится часть jeweler, посвященная тегированию / выпуску. Прочитав пост Иегуды в другой раз (я знал это), я увидел ссылку на [gem-release] Свена Фукса github.com/svenfuchs/gem-release что могло бы заполнить эту часть. Возможно, стоит попробовать. Итак: спасибо, что заставили меня еще раз переосмыслить это, но жесткий и лаконичный язык почти заставил меня отказаться от вашего комментария 🙂