eve*_*ans 25 capistrano ruby-on-rails ruby-on-rails-3 carrierwave
我正在使用带有资产和载波的rails 3.2来上传一些图像,它们存储在/ public/uploads/photo/.....但当我执行上限时:部署(使用capistrano)我的当前目录应用程序不包含我上传的文件,因为capistrano制作了新版本....
===更新===
毕竟我用这个:
inside:deploy命名空间
task :symlink_uploads do
run "ln -nfs #{shared_path}/uploads #{release_path}/public/uploads"
end
Run Code Online (Sandbox Code Playgroud)
之后:
after 'deploy:update_code', 'deploy:symlink_uploads'
Run Code Online (Sandbox Code Playgroud)
===重新更新===
@tristanm的解决方案是解决这个问题的最佳方法.
tri*_*anm 65
这个怎么样:
# config/deploy.rb
set :shared_children, shared_children + %w{public/uploads}
Run Code Online (Sandbox Code Playgroud)
:shared_children
默认为%w(public/system log tmp/pids)
我们只是扩展此列表.
编辑:
不要忘记cap deploy:setup
在更改后运行,:shared_children
以便在下面创建新目标shared
.
编辑Capistrano 3:
Capistrano 3使用该linked_dirs
设置,不再指定public/system
为默认值.
set :linked_dirs, fetch(:linked_dirs) + %w{public/system public/uploads}
使用Capistrano 3而无需重新部署.
就像@tristanm提到的那样,将它添加到你的config/deploy.rb中
# config/deploy.rb
set :linked_dirs, fetch(:linked_dirs) + %w{public/uploads}
Run Code Online (Sandbox Code Playgroud)
让capistrano创建共享/公共/上传
cap deploy:check:linked_dirs
现在cap可以创建符号链接
cap deploy:symlink:shared
最后,如果你有上传的备份,你可以将它们放在shared/public/uploads /中,它们应该无需重新部署即可运行.