Câu trả lời:
Tôi tin rằng bạn có thể làm điều này:
gem "foo", path: "/path/to/foo"
spring stop
xem nó có thực sự là vấn đề không.
Ngoài việc chỉ định đường dẫn (như Jimmy đã đề cập), bạn cũng có thể buộc Bundler sử dụng đá quý cục bộ cho môi trường của mình chỉ bằng cách sử dụng tùy chọn cấu hình sau:
$ bundle config local.GEM_NAME /path/to/local/git/repository
Điều này cực kỳ hữu ích nếu bạn đang phát triển hai viên đá quý hoặc đá quý và ứng dụng đường ray song song.
Tuy nhiên, xin lưu ý rằng điều này chỉ hoạt động khi bạn đang sử dụng git cho sự phụ thuộc của mình, ví dụ:
# In Gemfile
gem 'rack', :github => 'rack/rack', :branch => 'master'
# In your terminal
$ bundle config local.rack ~/Work/git/rack
Như đã thấy trên các tài liệu .
BUNDLE_PATH
(xây dựng một gói để phân phối). Khi thực hiện những gì bạn đề xuất hoặc câu trả lời của Jimmy, nó chỉ thực hiện using
và không thực sự cài đặt vào BUNDLE_PATH
thư mục của tôi . Tôi đã không thể tìm ra điều này, bất kỳ trợ giúp?
bundle config --delete local.GEM_NAME
bundle config disable_local_branch_check true
hoặc Bundler sẽ phàn nàn về chi nhánh đó. Hãy cẩn thận với điều này, vì các kiểm tra được cho là để ngăn chặn các cam kết không chính xác đi vào Gemfile.lock
. Tài liệu ở đây: bundler.io/v1.12/git.html
Bạn cũng có thể tham chiếu một viên ngọc địa phương với git nếu bạn tình cờ làm việc với nó.
gem 'foo',
:git => '/Path/to/local/git/repo',
:branch => 'my-feature-branch'
Sau đó, nếu nó thay đổi, tôi chạy
bundle exec gem uninstall foo
bundle update foo
Nhưng tôi không chắc ai cũng cần chạy hai bước này.
bundle uninstall <gem> && bundle install
, cho mọi thay đổi bạn muốn được phản ánh trên ứng dụng của mình
Để sử dụng kho đá quý cục bộ trong dự án Rails, hãy làm theo các bước dưới đây:
Kiểm tra xem thư mục gem của bạn có phải là kho lưu trữ git không (lệnh được thực thi trong thư mục gem)
git rev-parse --is-inside-work-tree
Bắt đường dẫn kho lưu trữ (lệnh được thực thi trong thư mục gem)
git rev-parse --show-toplevel
Thiết lập ghi đè cục bộ cho ứng dụng đường ray
bundle config local.GEM_NAME /path/to/local/git/repository
nơi GEM_NAME
là tên của đá quý của bạn và /path/to/local/git/repository
là sản phẩm của các lệnh trong điểm2
Trong ứng dụng của bạn Gemfile
thêm dòng sau:
gem 'GEM_NAME', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'
Chạy bundle install
nên cho một cái gì đó như thế này:
Using GEM_NAME (0.0.1) from git://github.com/GEM_NAME/GEM_NAME.git (at /path/to/local/git/repository)
nơi GEM_NAME
là tên của đá quý của bạn và /path/to/local/git/repository
từ điểm2
Cuối cùng, chạy bundle list
, không gem list
và bạn sẽ thấy một cái gì đó như thế này:
GEM_NAME (0.0.1 5a68b88)
nơi GEM_NAME
là tên của đá quý của bạn
Một vài trường hợp quan trọng tôi đang quan sát bằng cách sử dụng:
Rails 4.0.2
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux]
Ubuntu 13.10
RubyMine 6.0.3
RubyMine
không hiển thị đá quý địa phương như một thư viện bên ngoài. Thông tin thêm về lỗi có thể được tìm thấy ở đây và đâystop/start
máy chủ railsNếu tôi thay đổi version
viên ngọc, stopping/starting
máy chủ Rails sẽ báo lỗi cho tôi. Để khắc phục, tôi chỉ định phiên bản đá quý trong ứng dụng rails Gemfile
như thế này:
gem 'GEM_NAME', '0.0.2', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'
Bạn có thể tham khảo đá quý với nguồn: source: 'https://source.com', git repository (:github => 'git/url')
và với đường dẫn cục bộ :path => '.../path/gem_name'
.
Bạn có thể tìm hiểu thêm về Gemfiles và cách sử dụng chúng trong bài viết này.