2011-06-24 58 views
16

Tôi hiện đang sử dụng đá quý bảo vệ-coffeescript để biên dịch javascript của mình (và trong tương lai tôi có thể thêm một số nhiệm vụ bảo vệ khác) vào hệ thống dev OSX của mình. Tôi được thêm vào rb-fsevent đá quý để Gemspec của tôi, bây giờ tôi thấy rằng trong rất nhiều Gemspecs nó được thêm vào với một câu lệnh if như thế này:Lỗi trình xử lý khi triển khai

gem 'rb-fsevent', :require => false if RUBY_PLATFORM =~ /darwin/i

Đang cố gắng để triển khai đến/môi trường sản xuất dàn dựng của tôi, mà đang chạy dưới Linux , kịch bản thực thi trên máy chủ sử dụng bundle install --deployment kết quả trong ngoại lệ sau đây:

# bundle install --deployment 
You have modified your Gemfile in development but did not check 
the resulting snapshot (Gemfile.lock) into version control 

You have deleted from the Gemfile: 
* rb-fsevent

có cách nào xung quanh vấn đề này hay tôi chỉ phải gỡ bỏ nếu vì vậy mà tôi có thể triển khai vào hệ thống của tôi và trong cài đặt lần lượt một viên ngọc vô dụng trên nền tảng OSX không?

-

sửa: Tôi chạy bundle install trước khi triển khai đến môi trường dàn dựng của tôi và chạy bundle check sau khi lần đầu tiên nó đã thất bại. Tôi đã chạy nó sau khi xóa câu lệnh if ..

+0

Tôi không hiểu lý do tại sao nếu tình trạng RUBY_PLATFORM không nằm trong Gemfile.lock? Khi bạn thực hiện cài đặt bó trên máy chủ, nó không chỉ xem xét Gemfile.lock? – jspooner

Trả lời

23

Tôi gặp vấn đề tương tự. Nếu bạn đang sử dụng capistrano, bạn có thể đặt tùy chọn sau:

set :bundle_without, [:darwin, :development, :test] 

Sau đó, bọc dây chuyền 'rb-fsevent' của đá quý trong nhóm gọi là darwin. Một cái gì đó như thế này nên làm việc độc đáo:

group :test, :darwin do 
    gem 'rb-fsevent' 
end 

Điều này làm cho bundler làm điều này trên máy chủ:

bundle --without darwin development test 

Có nghĩa là nó bỏ qua những nhóm trong Gemfile.lock. Những gì bạn đang làm sẽ làm cho bạn OS X máy và máy chủ của bạn đến với các tập tin khóa kết quả khác nhau. Đó là lý do tại sao nó đã phàn nàn.

+1

cảm ơn cho mẹo, thực sự dường như không có cách nào để làm điều đó với gói cài đặt --deployment. – Mark

+1

Điều đó đã cho tôi một lỗi vì một số lý do, nhưng điều này đã làm việc 'set: bundle_without,% w {darwin development test} .join ('')'. Nó có thể là một điều capistrano 3. – counterbeing

+0

Hãy nghiêm túc tư vấn @David và xóa ': require => false nếu RUBY_PLATFORM = ~/darwin/i' –

6

Tôi đã có cùng một vấn đề chính xác và giải pháp của Luke đã sửa nó cho tôi, tuy nhiên, chỉ sau khi tôi xóa chuỗi :require => false if RUBY_PLATFORM =~ /darwin/i thường được sử dụng.

2

Như đã trình bày trong

https://github.com/guard/guard

giải pháp đơn giản là

group :development do 
    gem 'rb-inotify', :require => false 
    gem 'rb-fsevent', :require => false 
    gem 'rb-fchange', :require => false 
end 
+0

Điều này làm việc cho tôi (chỉ cần xóa phần' if RUBY_PLATFORM ... 'của dòng). – benzado

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