我部署on Rails的Ruby的使用Capistrano的应用程序的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
谢谢!
请确保您删除现有的公共/上传文件夹,传递-f
以ln
不包括移除目标目录(或者至少已经不适合我这样做可移植)
我的符号链接目录的任务通常看起来像
task :symlink_uploads do
run "rm -rf #{release_path}/rails/public/uploads} && ln -nfs #{shared_path}/rails/uploads #{release_path}/rails/public/uploads"
end
显然,要确保没有任何的在你需要的公共/上传的版本检查!
还有另一种解决这个问题。 您可以添加您的uploads
目录到Capistrano酒店的shared_children
,它会自动完成所有的魔力。 你可以找到这个答案的详细信息: https://stackoverflow.com/a/9710542/835935
你试过了吗
after 'deploy:update_code', ':symlink_uploads'
您:symlink_uploads
任务不是在一个命名空间,因此而做上面或把它放在一个命名空间
namespace :deploy do
task :symlink_uploads do
# ...
end
end
我有我的回报率的应用上传的文件类似的问题。 这是我的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"
...
也许帮你
编辑:我使用Carrierwave了。