Определение зависимостей Gemspec и требует конфликта
Вопрос
У меня есть конфликт между Определения зависимостей драгоценных камней и требовать из этих драгоценных камней.
У меня есть это:
# 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
и не понаправду, что снова не очень красиво.
Любое предложение приветствуется, если вам нужна более подробная информация, чтобы понять проблему, пожалуйста, скажите мне.
Решение
Во -первых, не требуйте всего своего драгоценного камня в своем Gemspec. Переместите информацию о вашей версии на путь, такой как «lib/my_gem/version.rb», и требуют этого. Во -вторых, вы не должны делать «потребовать» рубигем », если вы не используете API Rubygems для какой -то функции. Есть некоторые пользователи, которые не используют Rubygems, и вы не должны заставить их использовать его, если это необходимо.
Другие советы
1.- Не требуйте «Rubygems» в библиотеке. Похоже, если программа UNIX требует apt-get, поэтому никакая другая система не может использовать вашу библиотеку.
2.- В библиотеке поместите вашу версию в отдельный файл /LIB/LIB_NAME/VERSHOIN.RB и требуйте этого файла на GEMSPEC. Только этот файл, так что вы не загружаете свою библиотеку и зависят от загрузки Gemspec.