Câu trả lời:
Đây không hoàn toàn là câu trả lời cho câu hỏi của bạn về việc cài đặt .gem
các gói, nhưng bạn có thể chỉ định tất cả các loại vị trí trên cơ sở đá quý bằng cách chỉnh sửa Gemfile của mình .
:path
thuộc tính sẽ cài đặt đá quý từ đường dẫn đó trên máy cục bộ của bạn.gem "foreman", path: "/Users/pje/my_foreman_fork"
:git
thuộc tính sẽ cài đặt đá quý từ kho lưu trữ git từ xa.gem "foreman", git: "git://github.com/pje/foreman.git"
# ...or at a specific SHA-1 ref
gem "foreman", git: "git://github.com/pje/foreman.git", ref: "bf648a070c"
# ...or branch
gem "foreman", git: "git://github.com/pje/foreman.git", branch: "jruby"
# ...or tag
gem "foreman", git: "git://github.com/pje/foreman.git", tag: "v0.45.0"
(Như @JHurrah đã đề cập trong bình luận của anh ấy .)
gem "foreman", :git => "https://github.com/pje/foreman.git"
Có vẻ như trình đóng gói không thể sử dụng các tệp .gem trong hộp. Chỉ đường dẫn: đến thư mục chứa tệp .gem không hoạt động. Một số người đề nghị thiết lập một máy chủ đá quý cục bộ (geminabox, stickler) cho mục đích đó.
Tuy nhiên, điều tôi thấy đơn giản hơn nhiều là sử dụng "máy chủ" đá quý cục bộ từ hệ thống tệp: Chỉ cần đặt các tệp .gem của bạn vào một thư mục cục bộ, sau đó sử dụng "gem created_index" để biến nó thành kho lưu trữ Gem
mkdir repo
mkdir repo/gems
cp *.gem repo/gems
cd repo
gem generate_index
Cuối cùng, điểm gói đến vị trí này bằng cách thêm dòng sau vào Gemfile của bạn
source "file://path/to/repo"
Nếu bạn cập nhật đá quý trong kho lưu trữ, hãy đảm bảo tạo lại chỉ mục.
gem server
và tôi cũng không muốn lưu trữ toàn bộ dự án, chỉ là tệp .gem.
source "file://#{File.expand_path('.')}/chef-11.10.0.dev.2"
Could not fetch specs from file://Users/nakilon/....../
Theo mặc định, Bundler sẽ kiểm tra hệ thống của bạn trước và nếu không tìm thấy đá quý, nó sẽ sử dụng các nguồn được chỉ định trong Gemfile của bạn.
Bạn có thể buộc trình đóng gói sử dụng các viên đá quý bạn triển khai bằng cách sử dụng "gói gói" và "gói cài đặt - tiêu điểm"
Trên máy phát triển của bạn:
bundle install
(Cài đặt đá quý cần thiết và tạo Gemfile.lock)
bundle package
(Lưu trữ các viên ngọc trong nhà cung cấp / bộ đệm)
Trên máy chủ:
bundle install --local
(--local có nghĩa là "sử dụng đá quý từ nhà cung cấp / bộ đệm")
bundle install
Sau đó, sao chép tệp gemfile vào nhà cung cấp / bộ đệm , thêm đá quý trở lại gemfile và thực thi bundle install --local
bundle package
là một gợi ý tuyệt vời, ngay cả bây giờ, ba năm sau. Nếu phiên bản Bundler của bạn cũ hơn 2.0 (chưa được phát hành tại văn bản này), bạn sẽ cần sử dụng bundle package --all
nếu bạn muốn bao gồm đá quý vớipath
hoặc git
phụ thuộc. Nó sẽ cung cấp cho bạn một lời nhắc hữu ích nếu nó phát hiện ra các phụ thuộc như vậy, mặc dù.
--local
tài liệu: "Lưu ý rằng nếu một viên ngọc phù hợp với nền tảng cụ thể tồn tại trên rubygems.org thì nó sẽ không được tìm thấy."
Thêm .gem
vào vendor/cache
dường như để làm việc. Không có tùy chọn cần thiết trong Gemfile
.
Tôi thấy dễ dàng nhất để chạy máy chủ đá quý của riêng tôi bằng cách sử dụng geminabox