[英]Capistrano and Carrierwave
我正在使用Capistrano部署Ruby on Rails和NodeJS應用程序。 每次部署都會刪除上載文件夾。
這在幾個地方彈出,但似乎不起作用:
# Keep File Uploads
task :symlink_uploads do
run "ln -nfs #{shared_path}/rails/uploads #{release_path}/rails/public/uploads"
end
after 'deploy:update_code', 'deploy:symlink_uploads'
回購:
repo:
/node
/rails
謝謝!
這個問題還有另一種解決方案。 您可以將uploads
目錄添加到Capistrano的shared_children
,它將自動完成所有操作。 您可以在此答案中找到更多詳細信息: https : //stackoverflow.com/a/9710542/835935
確保刪除現有的public / uploads文件夾,將-f
傳遞給ln
並不涉及刪除目標目錄(或者至少對我而言不是可移植的)
我的symlink目錄任務通常看起來像
task :symlink_uploads do
run "rm -rf #{release_path}/rails/public/uploads} && ln -nfs #{shared_path}/rails/uploads #{release_path}/rails/public/uploads"
end
顯然,請確保簽入版本的public / upload中沒有任何您需要的內容!
你試過了嗎
after 'deploy:update_code', ':symlink_uploads'
您的:symlink_uploads
任務不在名稱空間中,因此請執行上述操作或將其放在名稱空間中
namespace :deploy do
task :symlink_uploads do
# ...
end
end
我的RoR應用程序上傳的文件存在類似的問題。 這是我的capistrano任務:
...
task :link_public_folder, :roles => [:app, :web] do
run "mv -u #{release_path}/public/* #{shared_path}/public"
run "rm -rf #{release_path}/public"
run "ln -s #{shared_path}/public #{release_path}/public"
end
after "deploy:update", "deploy:link_public_folder"
task :setup_config, :roles => :app do
sudo "ln -nfs #{current_path}/config/apache.conf /etc/apache2/sites-available/#{application}"
run "mkdir -p #{shared_path}/config"
run "mkdir -p #{shared_path}/public"
put File.read("config/database.yml"), "#{shared_path}/config/database.yml"
puts "Now edit the config files in #{shared_path}."
end
after "deploy:setup", "deploy:setup_config"
...
也許可以幫你
編輯:我也使用載波。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.