2012-07-18 16 views
6

Tengo una joya local (enterprise-0.0.1.gem) en un directorio '/ home/enterprise/pkg'. Tiene dependencia de la gema active_directory (v 1.5.5), que se especificó en el archivo enterprise.gemspec es la siguiente: -'paquete de instalación' para una joya local no está resolviendo dependencias, mientras que 'gem install' hace

gem.add_dependency("active_directory") 

En Gemfile de mi solicitud, añada la línea siguiente: -

gem 'enterprise', '0.0.1', path => '/home/enterprise/pkg' 

Cuando hago

paquete instalo

desde el directorio de origen de mi aplicación, solo está instalada la gema de la empresa. Por lo tanto, pulso los errores de tiempo de ejecución para la referencia a la gema de directorio_activo.

Pero cuando lo haga

joya instalación /home/enterprise/pkg/enterprise-0.0.1.gem

las dependencias se resuelven y puedo ver la gema active_directory en la gema lista.

¿Por qué hay una discrepancia en la resolución de dependencia con bundler y no con rubygems?

Amablemente déjenme saber si necesito proporcionar más información sobre el medio ambiente. Ruby: 1.9.2, RubyGems: 1.8.24, Bundler: 1.1.5, rvm: 1.9.2.

Mi archivo enterprise.gemspec como referencia: -

# -*- encoding: utf-8 -*- 
    require File.expand_path('../lib/enterprise/version', __FILE__) 

    Gem::Specification.new do |gem| 
     gem.authors  = ["example"] 
     gem.email   = ["[email protected]"] 
     gem.description = %q{Enterprise Gem: example} 
     gem.summary  = %q{Services: Authentication, Access Control} 
     gem.homepage  = "http://example.com" 
     gem.files   = %w[ 
         README.md 
         Rakefile 
         Gemfile 
         Gemfile.lock 
         enterprise.gemspec 
         lib/enterprise.rb 
         lib/enterprise/auth_service.rb 
         lib/enterprise/version.rb 
         ] 
    gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) } 
    gem.test_files = gem.files.grep(%r{^(test|spec|features)/}) 
    gem.name   = "enterprise" 
    gem.require_paths = ["lib"] 
    gem.version  = Enterprise::VERSION 
    gem.add_dependency("active_directory") 
    end 

Respuesta

0

¿Su joya, tiene un Gemfile con el siguiente contenido?

source 'https://rubygems.org' 

# Specify your gem's dependencies in enterprise.gemspec 
gemspec 

trate de añadir un requieren en su aplicación gemspec

gem 'enterprise', '0.0.1', path => '/home/enterprise/pkg', :require => "active_directory" 
+0

Sí, tengo estos en el Gemfile de mi gema de empresa. ¿Necesita mi archivo gemspec? – neosab

+0

No, no parece instalar la gema de directorio_activo con la opción: requerir. Se comporta de la misma manera que antes. Solo se instala la gema de la empresa. – neosab

+0

Tengo curiosidad por saber cuál es la práctica estándar para usar una joya local personalizada. Hacer una [instalación de gem 'enterprise' y bundle install] cada vez que muevo mi aplicación a un servidor de producción no tiene sentido. – neosab

2

Yo tenía el mismo problema y terminó eliminando el Gemfile.lock para resolver el problema.

+0

Eliminar la entrada de Gemfile.lock para mi gema local sí resolvió el problema de dependencia también. – Samuel

0

Uso gem.add_runtime_dependency en su gemspec - no add_dependency y que debe requerir la gema si lo añade a su Gemfile o no.

+0

Aparentemente, son alias para cada uno (respuesta SO: https://stackoverflow.com/a/24334371/1042144, documentos de Ruby: http://ruby-doc.org/stdlib/libdoc/rubygems/rdoc/Gem/ Specification.html # method-i-add_runtime_dependency) –

Cuestiones relacionadas