2011-11-23 35 views
15

Tôi đã cài đặt đá quý của tôi trong sản xuất với:Không thể có được bó exec để làm việc trong sản xuất

cd /app/releases/current && bundle install --gemfile /app/releases/current/Gemfile --path /app/shared/bundle --deployment --quiet --without development test 

tôi không thể bundle exec bất kỳ đá quý của tôi (trừ rakegem):

$ bundle exec whenever 
bundler: command not found: whenever 
Install missing gem executables with `bundle install` 

Các đá quý được cài đặt một cách chính xác trong/app/chia sẻ/bó:

$ cd /app/shared 
$ find . -name whenever 
./bundle/ruby/1.9.1/gems/whenever-0.6.8/bin/whenever 
./bundle/ruby/1.9.1/gems/whenever-0.6.8/lib/whenever 

của tôi (ge nerated) bó cấu hình (trong /app/current/.bundle/config) là:

--- 
BUNDLE_FROZEN: "1" 
BUNDLE_PATH: /app/shared/bundle 
BUNDLE_DISABLE_SHARED_GEMS: "1" 
BUNDLE_WITHOUT: development:test 

Tôi đang chạy ruby ​​1.9.2p290, tự cài đặt vào/usr/local/bin.

Tôi có phải bundle install đá quý của mình bằng tùy chọn --binstubs không? Tại sao không phải bundle exec đang tìm kiếm BUNDLE_PATH được lưu trữ?

+0

Tôi đã có một tương tự proble m tôi đã giải quyết bằng 'bundle install --deployment'. Tôi không chắc chắn ** tại sao ** mà làm việc, vì vậy đó là lý do tại sao đây là một bình luận và không phải là một câu trả lời. –

+0

Tác vụ capistrano của tôi bao gồm đối số '--deployment' khi chạy' bundle install'. Đó có phải là ý bạn không? Hoặc bạn có nghĩa là, loại bỏ các đối số '--path'? – nfm

+1

Bạn đang sử dụng capistrano hoặc thực hiện triển khai thủ công? – Nick

Trả lời

0

Tôi đã thay đổi --path/app/shared/bundle-vendor/bundle, mà làm cho nó làm việc.

Điều này có vẻ sai với tôi, vì vậy tôi đã xóa /app/shared/bundlevendor/bundle và chạy lại bundle install đến /app/shared/bundle.

Sạch sẽ bundle install khắc phục sự cố này. Tôi không biết tại sao!

Nếu có ai giải thích về điều này, tôi rất muốn đánh dấu bạn là câu trả lời được chấp nhận. Nhưng điều này đã giải quyết vấn đề cho tôi.

0

Tôi nghĩ rằng khi bất cứ khi nào đá quý không có trong Gemfile của bạn, hoặc nó trong các thử nghiệm hoặc phát triển phần của bạn Gemfile

+0

Cảm ơn bạn đã đề xuất. Tôi có "đá quý" bất cứ khi nào "trong cơ thể chính của Gemfile của tôi. – nfm

8

Sử dụng Capistrano và Rails và sử dụng deploy.rb làm tệp người triển khai.

Tôi nhận thấy rằng thay đổi thứ tự xuất hiện require "whenever/capistrano" thực sự quan trọng. Tôi đặt mà ở hầu hết các dòng cuối cùng:

Trong deploy.rb:

#first lines: 
set :rvm_ruby_string, "1.9.3" 
set :rvm_type, :user 
set :whenever_command, "bundle exec whenever" 

# others... 

# last lines 
require 'rvm/capistrano' 
require 'bundler/capistrano' 
require "whenever/capistrano" 

after "deploy:update_code", "customs:config" 
after "deploy:create_symlink","deploy:create_symlink" 
after "deploy", "deploy:cleanup" 

load 'deploy/assets' 
# end 
+0

bạn đá, cảm ơn! – ipd

+0

Không giải quyết được vấn đề cho tôi. – Jan

+0

Giải pháp này đưa tôi đi đúng hướng, nhưng không hoạt động như mô tả. Đặt 'yêu cầu' bundler/capistrano "'trên dòng đầu tiên deploy.rb và' require" bất cứ khi nào/capistrano "'trên dòng cuối cùng đã làm nó cho tôi. – Jos

0

vấn đề lẽ khác nhau gây ra các thông báo lỗi tương tự. Đối với tôi, tôi phải cập nhật đá quý capistrano sau khi cập nhật bất cứ khi nào đá quý nhận vai trò hỗ trợ. gói exec bất cứ khi nào đã làm việc trước khi nâng cấp của tôi bất cứ khi nào.

1

Kiểm tra xem gói của bạn đang được cài đặt và thử di chuyển nó ở trên yêu cầu 'bất cứ khi nào/capistrano' trong tệp deploy.rb của bạn.

Dường như điều này đã được kích hoạt khi tôi thực hiện cập nhật gói tăng phiên bản đá quý bất cứ khi nào trong Gemfile.lock của tôi.

Dường như bất cứ khi nào cố gắng chạy nó cập nhật chrontab trước tập tin triển khai của tôi chạy bó: cài đặt

từ https://github.com/javan/whenever/blob/master/lib/whenever/capistrano.rb

before "deploy:finalize_update", "whenever:update_crontab" 

Và deploy.rb tôi đã

after 'deploy:finalize_update', 'bundle:install' 

Giống như tất cả mọi người khác trong chủ đề này, tôi đã thử một vài điều và tôi không chắc chắn đây là những gì cố định nó cho tôi, nhưng thay đổi gói cài đặt để trước khi triển khai: finalize_update, và cũng se tting nó là "trước" ở trên đòi hỏi 'bất cứ khi nào/capistrano' có vẻ như đó là khả năng sửa chữa trong kịch bản của tôi.

4

Tôi có vấn đề này và đã yêu cầu theo đúng thứ tự, ví dụ:

require 'rvm/capistrano' 
require 'bundler/capistrano' 
require 'whenever/capistrano' 

Nó vẫn muốn chạy bản cập nhật crontab trước khi bó: cài đặt. Giải pháp là cập nhật trình bao gói địa phương của tôi với

gem update bundler 

Sau đó, nó bắt đầu hoạt động trở lại. Không chắc chắn chính xác những gì đã thay đổi giữa các phiên bản đã phá vỡ tất cả điều này.

+0

Cảm ơn bạn đã lưu ý rằng bạn cần để cập nhật trình bao gói LOCAL của bạn. Tôi đã có mọi thứ theo đúng thứ tự và đã kiểm tra máy chủ sản xuất để đảm bảo nó có phiên bản mới nhất, v.v. nhưng vẫn gặp lỗi.Sau khi tôi cập nhật gói địa phương của mình, mọi thứ đã hoạt động. Như đã lưu ý trong vấn đề bundler này https://github.com/javan/whenever/issues/275 bundler và bất cứ khi nào trong quá trình hoặc làm việc ra các capistrano phù hợp để sử dụng. –

+0

Sự khác nhau giữa 'bundler/capistrano' và' capistrano/bundler' là gì? Tôi có sau này trong Capfile của tôi. –

0

Sử dụng brightbox deployment gem, mà xử lý bundler vv cho tôi (bằng phép thuật, trong một số công thức nấu ăn khác) tôi thấy công trình này:

Thay

require "whenever/capistrano" 

với các nội dung của https://github.com/javan/whenever/blob/master/lib/whenever/capistrano/v2/hooks.rb sau đó sửa đổi nó để tải sau khi bundler: cài đặt kết thúc (bạn có thể hoặc có thể không có nhiệm vụ đó, tôi không biết nếu nó là tiêu chuẩn)

# require "whenever/capistrano" 
# hacked whenever/lib/whenever/capistrano/v2/hooks.rb below to work with brightbox bundler installation 

require "whenever/capistrano/v2/recipes" 

# Write the new cron jobs near the end. 
after "bundler:install", "whenever:update_crontab" 
# If anything goes wrong, undo. 
after "deploy:rollback", "whenever:update_crontab" 
Các vấn đề liên quan