gemspec definizione dipendenze e richiedono conflitti
Domanda
Ho un conflitto tra il gemma dipendenze definizioni e richiedo di queste gemme.
ho questo:
# 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 linea di conflitto è il requisito s3 , perché quando eseguo bundle install
si lamenta perché questo gioiello non è ancora installato.
La soluzione è da commentare questa richiedono, quindi eseguire bundle install
e rimuovere il commento dalla richiede ancora una volta ciò che non è abbastanza a tutti.
Ogni suggerimento è benvenuto, se avete bisogno di maggiori dettagli per capire il problema prego mi dice.
Soluzione
In primo luogo, non richiedono l'intero gioiello nel vostro gemspec. Spostare l'informazioni di versione per un percorso come "lib / my_gem / version.rb" e richiedere che. In secondo luogo, non si deve fare un "require 'rubygems'" a meno che non si sta utilizzando l'API Rubygems per qualche caratteristica. Ci sono alcuni utenti che non utilizzano Rubygems, e non si dovrebbe costringerli a usarlo se non necessario.
Altri suggerimenti
1.- non richiedono 'rubygems' in una libreria. È come se un programma unix richiede apt-get, in modo che nessun altro sistema non può utilizzare la libreria.
2.- Nella biblioteca, mettere la versione in un file separato /lib/lib_name/version.rb e richiedere che file sul gemspec. Solo quel file, in modo da non caricare la libreria e dependecies quando si cerca di caricare il gemspec.