2011-11-30 18 views
13

Chúng tôi đang triển khai với giới hạn và sử dụng tập lệnh gửi USR2 đến quá trình lân để tải lại và thường hoạt động nhưng thỉnh thoảng nó sẽ bị lỗi. Khi điều đó xảy ra, tìm kiếm trong nhật ký kỳ lân cho thấy rằng nó đang tìm kiếm một Gemfile trong một thư mục phát hành cũ không còn tồn tại nữa.Vấn đề khởi động lại Unicorn với capistrano

Ngoại lệ:

/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler/definition.rb:14:in `build': /var/www/railsapps/inventory/releases/20111128233407/Gemfile not found (Bundler::GemfileNotFound) 

Để làm rõ đó không phải là phiên bản hiện tại nhưng một một lớn hơn đó là kể từ khi được gỡ bỏ.

Khi nó hoạt động, nó có vẻ hoạt động chính xác - tức là nó lấy mã mới - vì vậy tôi không nghĩ rằng nó bị kẹt bằng cách nào đó đề cập đến bản phát hành cũ.

Bất kỳ ý tưởng nào?

Trả lời

11

Bạn nên đặt biến môi trường BUNDLE_GEMFILE trước khi bạn khởi động máy chủ, trỏ vào số current/Gemfile.

23

Trong unicorn.rb bạn thêm khối before_exec

current_path = "/var/www/html/my project/current" 

before_exec do |server| 
    ENV['BUNDLE_GEMFILE'] = "#{current_path}/Gemfile" 
end 

Đọc thêm về nó ở đây http://blog.willj.net/2011/08/02/fixing-the-gemfile-not-found-bundlergemfilenotfound-error/

+1

Ngoài ra, đừng quên rằng nếu tập tin cấu hình kỳ lân được thay đổi, bạn phải tự tắt máy và bắt đầu lân một lần nữa để tải các cài đặt mới. – lulalala