Tôi gói một số mã ruby vào một viên ngọc. Tôi muốn tham khảo mã trong đá quý trong một số mã khác. Vì vậy, trong Gemfile tôi chỉ định tên, phiên bản và đường dẫn cục bộ của đá quý. Giống như:Làm thế nào để tham khảo một viên ngọc địa phương trong ruby?
gem 'gemname','0.x', :path => 'RELATIVE_PATH_TO_GEM_FILE'
Sau bó cài đặt, tôi thấy
Using gemname (0.x) from source at RELATIVE_PATH_TO_GEM_FILE
Nhưng khi tôi chạy mã, nó không thể tìm thấy mã trong viên ngọc. LOAD_PATH hiển thị ABSOLUTE_PATH_TO_GEM_FILE/lib.
Không có gì lạ khi không thể tìm thấy mã, chỉ có tệp gem trong ABSOLUTE_PATH_TO_GEM_FILE. nó không được giải nén. Vì vậy, không có thư mục lib.
nếu tôi đá quý cài đặt tệp đá quý đó vào hệ thống của mình, thì tất cả đều hoạt động tốt. Tôi có thể thấy tệp gem được giải nén thành các tệp mã nguồn. Nhưng câu hỏi của tôi là nếu nó có thể tham khảo các tập tin đá quý địa phương trực tiếp bằng cách nào đó?
Thông thường, thuật ngữ "đá quý cục bộ" có nghĩa là thuật ngữ bạn đã biên soạn và cài đặt cục bộ, thay vì tải xuống từ trang web khác. Bạn đã xem xét biên dịch và cài đặt gem cục bộ, thay vì làm những gì bạn đang làm? –
Thực ra, tệp .gem được tạo bởi chính tôi. Tôi chỉ đóng gói một số mã ruby trong tệp .gem đó cố gắng làm cho chúng dễ dàng được chia sẻ với mã khác. Và có thư mục lib trong tệp .gem. Tôi đã nghĩ rằng nó sẽ giống như jar như java. Tôi cho rằng ruby có thể xem tập tin gói đó thay vì giải nén chúng ra khỏi gói. Và gây nhầm lẫn, bundler thực sự tìm thấy nguồn trong gói. nhưng load_path dường như không hỗ trợ thư mục trong gói. – user810923
Và bằng cách này, mặc dù bundler đã tìm thấy tệp .gem theo đường dẫn cụ thể của tôi, nó sẽ không lưu bộ nhớ cache .gem trong nhà cung cấp/bộ nhớ cache, trừ khi tệp .gem đã được cài đặt vào hệ thống gemset. – user810923