2008-11-04 22 views
6

Tôi đang tải các tệp lên thư mục public/files của ứng dụng Rails một cách liên tục thông qua giao diện web.Giữ các tệp tĩnh trong máy chủ khi triển khai với Capistrano

Tôi không muốn giữ chúng trong kiểm soát nguồn vì chúng chiếm gần 2 GB, vì vậy mỗi khi tôi thực hiện cap deploy, nó sẽ lưu các tệp đó trong releases/ và thay thế thư mục bằng bản sao nguyên sơ được lưu trữ trong kho lưu trữ .

Tôi tự hỏi cách tốt nhất để giữ những tệp đó trong máy chủ là gì trong thư mục current. Một số ý tưởng của tôi là:

  • Xóa thư mục khỏi điều khiển nguồn và thay thế bằng liên kết đến thư mục bên ngoài không được Capistrano quản lý.
  • Tạo tác vụ Capistrano để sao chép thư mục vào/tmp trước khi triển khai và sau đó sao chép thư mục đó trở lại/công khai sau khi triển khai xong.

Có cách nào tiêu chuẩn để thực hiện việc này không?

Trả lời

6

Bạn có thể tạo tệp cho một liên kết tượng trưng đến một thư mục khác trên máy của bạn, ví dụ thư mục/shared ở cùng cấp với/current và/release.

Kiểm tra capistrano quản lý thư mục/log và/tmp.

7

Đối với hồ sơ tương lai, đây là công việc tôi sử dụng để làm điều đó với một thư mục chia sẻ:

task :link_shared_directories do  
    run "ln -s #{shared_path}/files #{release_path}/public/files" 
end  

after "deploy:update_code", :link_shared_directories 
2

Bây giờ chúng ta chỉ đơn giản là có thể sử dụng: linked_files trong deploy.rb:

set :linked_files, %w{config/database.yml} 

Trong trường hợp này, tệp [target_dir] /shared/config/database.yml phải tồn tại trên máy chủ.

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