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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top