2010-07-15 21 views
8

Vì vậy, ruby ​​1.9 thực sự tốt đẹp ở chỗ nó sẽ tự động yêu cầu rubygems, và do đó khi bạn gọi require 'somegem' mà không cần rubygem đầu tiên nó sẽ làm việc, và đó là nói chung tuyệt vời.Có cách nào để gọi ruby1.9 mà không cần nạp rubygem không?

Nhưng tôi có một tấn tập lệnh shell sử dụng ruby ​​và thường không dựa vào rubygems. Các công cụ Shell nên chạy ngay lập tức, và tải rubygems cho không có gì là một kéo lớn, chủ yếu là vì nó liên quan đến một loạt các hoạt động đĩa với các tập tin nhỏ rải rác.

Tôi muốn có thể nói ruby, khi chạy các tập lệnh shell này, để bỏ qua việc tải đá quý. Lý tưởng nhất, một cái gì đó giống như #!ruby --no-rubygems trong dòng shebang.

Có điều gì không? Hoặc có thể một tùy chọn biên dịch sẽ cho rubygem ruby ​​phải được yêu cầu thủ công?

Trả lời

5

Có, bạn có thể sử dụng tùy chọn --disable-gems.

Lưu ý rằng có hoặc không chuyển tùy chọn trong dòng shebang hoạt động phụ thuộc vào hệ điều hành của bạn. Một số hệ điều hành không hỗ trợ tùy chọn chuyển khoản ở tất cả, một số chỉ hỗ trợ chuyển qua một tùy chọn hoặc đối số.

Vì vậy, nếu bạn có ví dụ

#!/usr/bin/env ruby 

Sau đó nó khá chắc rằng bạn sẽ có thể đính kèm các tùy chọn để kết thúc. Nếu OTOH bạn thay đổi điều đó thành

#!/usr/local/bin/ruby --disable-gems 

Sau đó, bạn đã hardwired vị trí của nhị phân Ruby vào tập lệnh của bạn.

Và tất nhiên có hệ điều hành không giải thích các dòng shebang ở tất cả. (Sau khi tất cả, họ đã không bao giờ được quy định trong tiêu chuẩn nào, và không được ghi nhận thậm chí đúng cách.)

Một thay thế sẽ được thiết lập biến môi trường RUBYOPT trong môi trường shell của bạn và chỉ đơn giản là chuyển sang một môi trường khác nhau với RUBYOPT unset (hoặc đặt thành -w, yêu thích cá nhân của tôi) để phát triển Ruby của bạn.

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