2012-07-18 27 views
6

Tôi có đá quý cục bộ (enterprise-0.0.1.gem) trong thư mục '/ home/enterprise/pkg'. Nó có phụ thuộc vào viên ngọc active_directory (v 1.5.5), được quy định tại đó là tập tin enterprise.gemspec như thế này: -'gói cài đặt' cho đá quý cục bộ không giải quyết các phụ thuộc, trong khi 'cài đặt đá quý' không

gem.add_dependency("active_directory") 

Trong Gemfile ứng dụng của tôi, tôi thêm dòng sau: -

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

Khi tôi làm

bó cài đặt

từ thư mục nguồn của ứng dụng của tôi, chỉ có gem doanh nghiệp được cài đặt. Do đó, tôi nhấn lỗi thời gian chạy cho tham chiếu đến gem active_directory.

Nhưng khi tôi làm

gem install /home/enterprise/pkg/enterprise-0.0.1.gem

sự phụ thuộc được giải quyết và tôi có thể nhìn thấy viên ngọc active_directory trong đá quý danh sách.

Tại sao có sự khác biệt về độ phân giải phụ thuộc với gói, chứ không phải với rubygems.

Vui lòng cho tôi biết nếu tôi cần cung cấp thêm thông tin về môi trường. Ruby: 1.9.2, RubyGems: 1.8.24, Bundler: 1.1.5, rvm: 1.9.2.

tập tin enterprise.gemspec tôi để tham khảo: -

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

Trả lời

0

Liệu đá quý của bạn, có một Gemfile với những nội dung sau đây?

source 'https://rubygems.org' 

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

Hãy thử thêm một yêu cầu trong ứng dụng của bạn gemspec

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

Vâng, tôi có những thứ này trong Gemfile của gem doanh nghiệp của tôi. Bạn có cần tệp gemspec của tôi không? – neosab

+0

Không, nó dường như không cài đặt gem active_directory với tùy chọn: require. Nó hoạt động theo cách tương tự như trước đây. Chỉ có gem doanh nghiệp được cài đặt. – neosab

+0

Tôi chỉ tò mò thực hành tiêu chuẩn để sử dụng một viên ngọc địa phương tùy chỉnh là gì. Thực hiện [cài đặt gem 'doanh nghiệp' & gói cài đặt] mỗi lần tôi chuyển ứng dụng của mình sang máy chủ sản xuất không có ý nghĩa. – neosab

2

tôi đã cùng một vấn đề và kết thúc xóa Gemfile.lock để giải quyết vấn đề này.

+0

Xóa mục nhập Gemfile.lock cho gem cục bộ của tôi cũng đã giải quyết vấn đề phụ thuộc cho tôi. – Samuel

0

Sử dụng gem.add_runtime_dependency trong bạn gemspec - không add_dependency và phải yêu cầu đá quý cho dù bạn thêm nó vào Gemfile của bạn hay không.

+0

Rõ ràng, chúng là bí danh cho nhau (SO trả lời: https://stackoverflow.com/a/24334371/1042144, tài liệu Ruby: http://ruby-doc.org/stdlib/libdoc/rubygems/rdoc/Gem/ Specification.html # method-i-add_runtime_dependency) –

Các vấn đề liên quan