Tôi có ứng dụng Sinatra yêu cầu một loại đá quý khác mà tôi đang phát triển tại địa phương. Tôi đang gặp sự cố khi định cấu hình Bundler để sử dụng mã đá quý cục bộ của mình trong quá trình phát triển nhưng mã đá quý được bán trong sản xuất.Làm thế nào để Bundler/Gemfile được cấu hình để sử dụng các nguồn đá quý khác nhau trong quá trình phát triển?
Lý tưởng nhất là tôi có thể làm một cái gì đó như thế này, nhưng Bundler không cho phép bạn chỉ định các viên ngọc cùng hai lần:
# Doesn't work:
group :development do
gem 'awesome', :path => "~/code/awesome"
end
group :production do
gem 'awesome', :path => "vendor/gems/awesome-0.0.1"
end
Trong khi chờ đợi tôi đã viện đến tay vendoring viên ngọc & cập nhật các nguồn đá quý trong Gemfile mỗi lần tôi triển khai, điều này khá phức tạp. công việc của tôi là thế này:
- Point để đá quý địa phương của tôi trong phát triển (
gem 'awesome', :path => "~/code/awesome"
) - Khi đã sẵn sàng để triển khai, đá quý giải nén vào
vendor/gems
- Cập nhật Gemfile để trỏ đến vendored đá quý (
gem 'awesome', :path => "vendor/gems/awesome-0.0.1"
) - Run
bundle install
(để cập nhật Gemfile.lock) - Mã triển khai
- Quay lại bước 1.
Thật là rắc rối! Tôi muốn làm một cái gì đó sạch hơn là chỉ cần viết các nhiệm vụ Rake để tự động hóa thiết lập hiện tại của tôi.
Quy trình làm việc tốt nhất cho kịch bản này là gì?
Tôi đã thử những gì bài viết này đề xuất trước đó, và đối với hầu hết các phần đó là OK. Vấn đề là khi tôi triển khai, Gemfile.lock đề cập đến gem cục bộ của tôi (xem hai mẫu mã cuối cùng của anh ta). Tôi đoán tôi có thể cài đặt đá quý sản xuất tại địa phương và sau đó triển khai, hoặc loại trừ Gemfile.lock từ git hoàn toàn ... nhưng tôi không chắc chắn một trong những tùy chọn đó là phương pháp tốt nhất. –
Vâng tôi muốn thực hiện điều tương tự nhưng dường như không có cách nào để làm điều này. –