2013-04-29 26 views
8

Tôi vừa mới thiết lập một Capistrano triển khai cho các ứng dụng của chúng tôi và tôi tiếp tục chạy vào lỗi này:Capistrano triển khai thất bại do thiếu file manifest khi sử dụng tài sản tiền tố

* executing ["ls /path/to/app/shared/assets/manifest*"] 
    servers: ["web03"] 
    [web03] executing command 
[err :: web03] ls: /path/to/app/shared/assets/manifest* 
[err :: web03] : No such file or directory 

Nếu tôi tự tạo ra một file manifest với touch /path/to/app/shared/assets/manifest.yml, kịch bản triển khai hoạt động tốt. Tuy nhiên, điều này cảm thấy tất cả các loại sơ sài.

Tôi đã googled các heck ra khỏi này và nhiều nhất tôi có thể thu thập là tệp kê khai mà nó đang tìm kiếm là một sản phẩm của đường ống nội dung. Tôi đã kiểm tra và trên thực tế, tôi đã bật đường ống dẫn (config.assets.enabled = true), vì vậy tôi đang thua lỗ.

Ai đó có thể giúp tôi hiểu 1) tệp kê khai này là gì và tệp được tạo ra như thế nào; và 2) tại sao không phải là một ứng dụng được tạo cho ứng dụng của tôi?

Cập nhật: Tôi nghĩ rằng tôi đang đóng cửa ở trên câu trả lời và tôi nghĩ rằng nó có cái gì để làm với dòng này:

config.assets.prefix = "/some_other_path" 

Chúng tôi cần phải đổi tên "tài sản" con đường vì chúng tôi có tài sản các đối tượng trong hệ thống của chúng tôi và tôi đoán Cap có thể bị nhầm lẫn vì nó. Bất kỳ đề xuất?

Trả lời

15

Nghi ngờ của tôi là đúng: đây là sự cố với thư mục nội dung được đổi tên. Cap không biết tìm kiếm trong số public/some_other_path thay vì public/assets.

Nói cách khác, bởi vì dòng này là trong tôi application.rb:

config.assets.prefix = "some_other_path" 

tôi phải thêm dòng này để tôi deploy.rb:

set :assets_prefix, "some_other_path" 

Sau đó, Cap biết nơi để tìm kiếm một biểu hiện , sao chép nó vào shared/assets và hoàn thành chính xác.

Sẽ rất tiện khi có số deploy.rb tham chiếu biến số config thay vì phải mã hóa đường dẫn lần thứ hai, nhưng nằm ngoài phạm vi của câu hỏi này.

0

nếu bạn cấu hình với AWS, ở đây nó nên được ...

appname/config/environments/production.rb

config.action_controller.asset_host = "//#{ENV['FOG_DIRECTORY']}.s3.amazonaws.com" 
config.assets.prefix = "/#{ENV['APP_NAME']}/assets" 

appname/config/deploy.rb

... 
set :keep_releases, 5 
set :assets_prefix, ->{ "#{fetch(:application)}/assets" } 

set :whenever_identifier, -> { "#{fetch(:application)}_#{fetch(:stage)}" } 
... 
Các vấn đề liên quan