Pregunta

Tengo un conflicto entre el Definiciones de dependencias de gemas y el requerir de estas gemas.

Tengo esto:

# 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 línea de conflicto es la requisito S3 Porque cuando ejecuto bundle install Se queja porque esta gema aún no está instalada.

La solución es comentar este requerimiento, luego ejecutar bundle install Y la falta de comment requiere nuevamente lo que no es bonito en absoluto.

Cualquier sugerencia es bienvenida, si necesita más detalles para comprender el problema, dígame.

¿Fue útil?

Solución

Primero, no requiera toda su gema en su GemSpec. Mueva la información de su versión a una ruta como "lib/my_gem/version.rb" y requiere eso. En segundo lugar, no debe hacer un "requerir 'Rubygems'" a menos que esté utilizando la API Rubygems para alguna función. Hay algunos usuarios que no usan Rubygems, y no debes obligarlos a usarlos a menos que sea necesario.

Otros consejos

1.- No requiera 'Rubygems' en una biblioteca. Es como si un programa UNIX requiere apt-get, por lo que ningún otro sistema no puede usar su biblioteca.

2.- En la biblioteca, coloque su versión en un archivo separado /lib/lib_name/version.rb y requiera ese archivo en GEMSPEC. Solo ese archivo, para que no cargue su biblioteca y depende al intentar cargar el GEMSPEC.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top