2013-09-11 28 views
6

Tôi có đá quý ruby ​​và tôi muốn sử dụng phương thức Hash.from_xml trong đá quý được bao gồm trong mô-đun active_support đường ray. Tôi có đoạn code dưới đây trong gemspec tôi:cố gắng yêu cầu active_support trong đá quý

gem.add_dependency 'active_support', '~> 3.0.0' 

Tuy nhiên, khi tôi xây dựng và cài đặt đá quý tại địa phương, chạy IRB, yêu cầu đá quý, tôi không nhìn thấy những phương pháp từ hỗ trợ tích cực bao gồm?

Bất kỳ đề xuất nào về những gì tôi đang làm sai hoặc cách gỡ lỗi? Cảm ơn!

+0

Hãy thử sử dụng nó với 'require 'active_support/all''. Hoặc nếu bạn muốn chỉ hash methonds sử dụng 'require 'active_support/core_ext/hash''. –

+0

LRI: Khi thực hiện gem ... (Gem :: DependencyError) Không thể giải quyết các phụ thuộc: sports_data_api yêu cầu active_support/all (~> 3.0.0), active_support/all (~> 3.0.0) – BC00

Trả lời

8

Bạn cần phải require các phương pháp bạn cần từ ActiveSupport; chúng không được thêm theo mặc định.

Giống như Yevgeniy đề cập trong nhận xét, cách thực hiện việc này là require "active_support/all" nếu bạn cần mọi thứ - hoặc nếu bạn chỉ muốn chỉ tiện ích mở rộng Hash sử dụng require 'active_support/core_ext/hash'. Lưu ý điều này thường không đi trong gemspec, nhưng thay vì trong bất cứ tập tin nào gem của bạn sử dụng để tự thiết lập.

Có lẽ tốt hơn là để require các tệp Hỗ trợ hiện hoạt bắt buộc trong các tệp thực sự cần chúng, nhưng đó là vấn đề về hương vị.

+0

ok hoạt động cảm ơn bạn . Tại sao nó không hoạt động khi tôi đặt nó trong gemspec như trên? whats xảy ra khác nhau khi tôi yêu cầu nó trong tập tin như trái ngược với gemspec? Cảm ơn sự giúp đỡ của bạn! – BC00

+0

Đá quý tham khảo gemspec của bạn. Đá quý được gọi là "active_support". Các tệp tham chiếu 'require', có khả năng từ đá quý. Bạn có thể đã có thể thực hiện 'gem 'active_support",: require => "active_support/all" ', mặc dù vậy. –

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