Capistrano的Carrierwave文件

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.我只将此行添加到deploy.rb set:linked_dirs,%w {public/uploads}.使用fetch(:linked_dirs)部分时出错. (3认同)

Jas*_*n R 5

使用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 /中,它们应该无需重新部署即可运行.