Question

J'ai un conflit entre les balises gem dépendances définitions et requiers de ces pierres précieuses.

J'ai ceci:

# 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'

La ligne de conflit est le exigence s3 parce que quand j'exécute bundle install il se plaint parce que ce petit bijou est pas encore installé.

La solution consiste à commenter ce nécessitent, puis exécutez bundle install et décommentez le besoin à nouveau ce qui est pas jolie du tout.

Toute suggestion est la bienvenue, si vous avez besoin de plus de détails pour comprendre le problème s'il vous plaît me dire.

Était-ce utile?

La solution

Tout d'abord, ne nécessitent pas votre bijou dans votre entière gemspec. Déplacez votre version info sur un chemin comme « lib / my_gem / version.rb » et exiger que. Deuxièmement, vous ne devriez pas faire un « require « rubygems » » à moins que vous utilisez l'API Rubygems pour certaines fonctionnalités. Il y a des utilisateurs qui n'utilisent pas Rubygems, et vous ne devriez pas les forcer à l'utiliser sauf si nécessaire.

Autres conseils

1.- Ne pas require 'rubygems' dans une bibliothèque. Est-ce comme si un programme unix nécessite apt-get, donc aucun autre système ne peut pas utiliser votre bibliothèque.

Dans la bibliothèque 2.-, mettre votre version dans un /lib/lib_name/version.rb de fichier séparé et exiger que le fichier sur gemspec. Seulement ce fichier, vous ne chargez pas votre bibliothèque et dependecies lorsque vous essayez de charger le gemspec.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top