2009-12-02 29 views
7

Tôi đang xây dựng một viên ngọc cần cài đặt viên đá quý json để nó hoạt động. Nó không quan trọng mà đá quý json: json_pure, json-jruby, hoặc json dựa trên C.Phụ thuộc có điều kiện trong Ruby Gemspec

Có cách nào tốt để xác định điều này trong gemspec không? This response gợi ý duy trì một viên ngọc hoàn toàn riêng biệt cho mỗi phiên bản, nhưng có vẻ như đã có một cách tốt hơn.

Có ai có kinh nghiệm với điều này không?

Tôi có nên sử dụng tùy chọn spec.requirements để cung cấp cho người dùng thông báo rằng anh/cô ấy cần đá quý json không?

Trả lời

2

Có, tôi sẽ đề xuất một yêu cầu văn bản đơn giản trong spec.requirements. Tôi cũng sẽ giới thiệu một số loại tải khi chuỗi đá quý tải lần đầu tiên:

# in init.rb and/or rails/init.rb: 
unless Object.const_defined?(:JSON) 
    begin 
    require 'json_pure' 
    rescue LoadError 
    begin 
     require 'json-ruby' 
    rescue LoadError 
     require 'json' 
    end 
    end 
end 
unless Object.const_defined?(:JSON) 
    raise "Could not load gem MyGem; did you install one of json_pur, json-ruby, or the C-based json library?" 
end 
+0

Nghe như một ý tưởng hay. Điều thú vị với tất cả các đá quý JSON là bạn chỉ cần 'json' để nó đơn giản hóa chuỗi tải. –

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