2011-12-03 46 views
25

Tôi chỉ muốn hiểu về bản thân mình.Sự khác biệt giữa đá quý và yêu cầu (yêu cầu mở-uri)

Tôi đang sử dụng đá quý nokogiri (để phân tích cú pháp HTML). Nếu tôi có quyền mở URL, tôi cần sử dụng phương thức từ 'open-uri' của gem.

Nhưng khi tôi đưa nó vào trong Gemfile của tôi (trên máy tính Windows của nhà phát triển):

gem 'open-uri' - có một lỗi khi cài đặt gói mà nó không thể tìm đá quý.

Vì vậy, nếu tôi sử dụng require 'open-uri' - hoạt động của nó.

Vì vậy, một số người có thể giải thích điều gì đang xảy ra?

Trả lời

49

Bạn đang sử dụng bundler cho phụ thuộc vào đá quý và bạn đang làm đúng nhưng OpenUri là một phần của thư viện chuẩn của Ruby. Đó là lý do tại sao bạn chỉ cần nếu cần sử dụng mã đó trong mã của mình.

+0

Cảm ơn. Nơi nào là tốt nhất để requre 'mở-uri' trong gemfile hoặc ở một nơi khác? – WHITECOLOR

+2

Nói chung, bạn nên yêu cầu nó ở trên cùng của tập tin mà bạn sẽ sử dụng thư viện. Hãy chấp nhận câu trả lời nếu nó giúp bạn. – lucapette

+1

Cảm ơn bạn rất nhiều! – WHITECOLOR

9

require được sử dụng để tải một tệp khác và thực thi tất cả các câu lệnh của nó. Điều này phục vụ để nhập tất cả các định nghĩa lớp và phương thức trong tệp. require cũng theo dõi các tệp nào đã được yêu cầu trước đó để nó không thực thi nó hai lần.

RubyGem là một gói phần mềm, thường được gọi là "đá quý". Đá quý chứa một ứng dụng hoặc thư viện Ruby được đóng gói. Phần mềm RubyGems cho phép bạn dễ dàng tải xuống, cài đặt và thao tác các đá quý trên hệ thống của bạn. - What is a Gem?:

Gemfile sau đó được sử dụng bởi bundler để cài đặt các đá quý được chỉ định.

open-uri không phải là đá quý mà là một phần của Thư viện chuẩn của Ruby nên chỉ cần được yêu cầu.

+0

Cảm ơn. Nơi nào là tốt nhất để requre 'mở-uri' trong gemfile hoặc ở một nơi khác? – WHITECOLOR

+1

Nếu bạn chỉ sử dụng nó ở một nơi tôi sẽ đề nghị ngay trước khi cuộc gọi hoặc có lẽ ở đầu của hàm hoặc tập tin. – jlundqvist

+0

Cảm ơn bạn rất nhiều, tôi đánh giá cao sự giúp đỡ và thời gian của bạn! – WHITECOLOR

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