определение зависимостей gemspec и конфликт конфликтов - PullRequest
0 голосов
/ 25 июля 2011

У меня конфликт между определениями зависимостей самоцветов и требуют этих самоцветов.

У меня есть это:

# Gemfile
source "http://rubygems.org"
gemspec

-

# my_gem.gemspec
$:.push File.expand_path("../lib", __FILE__)
require "my_gem"

Gem::Specification.new do |s|
  s.version = MyGem::VERSION
  # ...
  s.add_dependency "s3"
end

-

# /lib/my_gem.rb
require 'rubygems'
require 's3'

Строка конфликта является требованием s3 , потому что когда я выполняю bundle install, он жалуется, потому что этот гем еще не установлен.

Обходной путь - прокомментировать это требование, затем выполнить bundle install и снова раскомментировать требование, что совсем не красиво.

Любое предложение приветствуется, если вам нужно больше подробностей, чтобы понятьпроблема, пожалуйста, скажите мне.

Ответы [ 2 ]

3 голосов
/ 26 июля 2011

Во-первых, не требуйте весь свой драгоценный камень в вашем gemspec.Переместите информацию о своей версии в путь, например, «lib / my_gem / version.rb» и требуйте этого.Во-вторых, вы не должны делать «требовать rubygems», если вы не используете API Rubygems для какой-либо функции.Есть некоторые пользователи, которые не используют Rubygems, и вы не должны заставлять их использовать их без необходимости.

1 голос
/ 26 июля 2011

1.- Не требуйте 'rubygems' в библиотеке. Это похоже на то, что для программы Unix требуется apt-get, поэтому никакая другая система не может использовать вашу библиотеку.

2.- В библиотеке поместите свою версию в отдельный файл /lib/lib_name/version.rb и укажите этот файл в gemspec. Только этот файл, поэтому вы не загружаете свою библиотеку и зависимости при попытке загрузить gemspec.

...