Frage

Ich habe einen Konflikt zwischen den Edelsteinabhängigkeiten Definitionen und die benötigen dieser Edelsteine.

Ich habe das:

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

Die Konfliktlinie ist die S3 -Anforderung Denn wenn ich ausführe bundle install Es beschwert sich, weil dieses Juwel noch nicht installiert ist.

Die Problemumgehung besteht darin, dies zu kommentieren und dann auszuführen bundle install Und weist das Erfordernis erneut an, was überhaupt nicht hübsch ist.

Jeder Vorschlag ist willkommen. Wenn Sie weitere Details benötigen, um das Problem zu verstehen, sagen Sie es mir bitte.

War es hilfreich?

Lösung

Erstens benötigen Ihr gesamtes Edelstein in Ihrem Gemspec nicht. Verschieben Sie Ihre Versionsinformationen auf einen Pfad wie "lib/my_gem/Version.rb" und benötigen dies. Zweitens sollten Sie keine "Erfordernis" Rubygems "durchführen, es sei denn, Sie verwenden die Rubygemems -API für eine Funktion. Es gibt einige Benutzer, die Rubygemems nicht verwenden, und Sie sollten sie nicht dazu zwingen, es zu verwenden, es sei denn, dies ist erforderlich.

Andere Tipps

1.- benötigen in einer Bibliothek keine Rubygemems. Ist wie wenn ein UNIX-Programm APT-Get erfordert, so dass kein anderes System Ihre Bibliothek nicht verwenden kann.

2.- Geben Sie in der Bibliothek Ihre Version in eine separate Datei /lib/lib_name/version.rb ein und benötigen diese Datei auf GEMSPEC. Nur diese Datei, sodass Sie Ihre Bibliothek und Abhängigkeit nicht laden, wenn Sie versuchen, die GEMSPEC zu laden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top