2013-01-11 34 views
6

Tôi có ứng dụng Rails 3.2.3 mà tôi sử dụng để triển khai sử dụng capistrano. Khi tôi quyết định nâng cấp đường ray để 3.2.11 tôi đã bước sau:Triển khai Capistrano không thành công sau khi nâng cấp lên Rails 3.2.11

  1. thay đổi đường ray phiên bản trong Gemfile
  2. chạy "bó cập nhật đường ray"
  3. đẩy đá quý mới từ nhà cung cấp/bộ nhớ cache, Gemfile và Gemfile. khóa
  4. chạy "triển khai sản xuất mũ"

Capistrano nay thất bại với lỗi:

* 2013-01-11 15:58:25 executing `deploy:assets:precompile' 
    triggering before callbacks for `deploy:assets:precompile' 
    * 2013-01-11 15:58:25 executing `deploy:assets:update_asset_mtimes' 
    * executing "[ -e /home/deploy/projects/otv/shared/assets/manifest.yml ] && cat /home/deploy/projects/otv/shared/assets/manifest.yml || echo" 
    servers: ["xxx.xxx.99.51"] 
    [xxx.xxx.99.51] executing command 
    command finished in 28ms 
    * executing "cd -- /home/deploy/projects/otv/releases/20130111095812 && export LANG=en_US.UTF-8 && /usr/local/bin/bundle exec rake RAILS_ENV=production RAILS_GROUPS=assets assets:precompile && cp -- /home/deploy/projects/otv/shared/assets/manifest.yml /home/deploy/projects/otv/releases/20130111095812/assets_manifest.yml" 
    servers: ["xxx.xxx.99.51"] 
    [xxx.xxx.99.51] executing command 
** [out :: xxx.xxx.99.51] cp: cannot stat ‘/home/deploy/projects/otv/shared/assets/manifest.yml’: No such file or directory 
    command finished in 18773ms 

Tôi đã cố gắng thực hiện các bước này với dự án khác mà trước đó đã sử dụng thành công để được triển khai với capistrano có cùng kết quả.

My Gemfile and deploy.rb

Trả lời

4

FWIW, tôi đã nhận được này sau khi cập nhật Capistrano đến> 2.14.0:

*** [err :: ourapp.net] cp: cannot stat `/home/deploy/www/ourapp/shared/assets/manifest.yml' 
*** [err :: ourapp.net] : No such file or directory 

Tôi nghĩ symlinking tài sản để được chia sẻ dir sẽ sửa chữa nó, nhưng thay vì lộn xộn xung quanh (gotta có được triển khai này ra), tôi chỉ cần hạ cấp cap trở lại 2.13.5.

+0

Cảm ơn rất nhiều, Steve! –

+2

Tôi đang sử dụng capistrano 2.14.2 và thấy vấn đề tương tự sau khi nâng cấp lên Rails 4.0beta1. Có giải pháp nào không hạ cấp? - Tôi không chắc mình sẽ liên kết tượng trưng với nội dung từ đâu? –

+3

@RomanGaufman Tên tệp kê khai đã được đổi thành kiểu 'manifest-a5247d227d9b50f54f7c66dc7e640bca.json'. Bạn có thể tránh lỗi này khi tạo 'manifest.yml' bằng lệnh' touch' trên thư mục '/ home/deploy/www/ourapp/shared/assets'. – Tsutomu

0

bạn có xóa tất cả nội dung trên máy chủ ở xa trước khi nâng cấp không?

Đôi khi một số tài liệu tham khảo cũ có thể gây ra điều đó loại vấn đề

Chúc mừng, Jérémy

+1

Và suy nghĩ về việc xóa Gemfile.lock bằng cách này .. – Jeremy

+0

Tôi không thể hiểu cách xóa nội dung của mình. ... thư mục projectpath/shared/assets trống, tất cả nội dung nằm trong ... projectpath/release/yyyymmddhhmmss/public/asset. Ngoài ra tôi không hiểu làm thế nào tôi có thể xóa Gemfile.lock của mình, tôi có nên xóa nó khỏi repo vì mã để triển khai được lấy từ repo không? –

+0

Vâng, giữ Gemfile.lock trong repo của bạn không phải là một thực hành tốt, vì nó được tự động tạo ra khi thực hiện bó (cài đặt, cập nhật ..). Bạn đã cố gắng thực hiện lệnh cuối cùng trực tiếp (thực hiện "cd -/home/deploy/projects/otv/release/2 [....]) trên bản phát hành hiện tại chẳng hạn? – Jeremy

1

tôi đã cùng một vấn đề.

Phiên bản mới của capistrano hiện có some code để xử lý liên kết đường dẫn nội dung được chia sẻ. My config/deploy.rb có một số mã để xử lý điều này và các đường dẫn xung đột với nhau. Tôi chỉ cần loại bỏ dòng này từ nó để giải quyết vấn đề:

run "ln -nfs #{shared_path}/public/assets #{release_path}/public/assets" 
Các vấn đề liên quan