Capistrano的和Carrierwave(Capistrano and Carrierwave

2019-07-29 09:50发布

我部署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

谢谢!

Answer 1:

请确保您删除现有的公共/上传文件夹,传递-fln不包括移除目标目录(或者至少已经不适合我这样做可移植)

我的符号链接目录的任务通常看起来像

task :symlink_uploads do
  run "rm -rf #{release_path}/rails/public/uploads} && ln -nfs #{shared_path}/rails/uploads  #{release_path}/rails/public/uploads"
end

显然,要确保没有任何的在你需要的公共/上传的版本检查!



Answer 2:

还有另一种解决这个问题。 您可以添加您的uploads目录到Capistrano酒店的shared_children ,它会自动完成所有的魔力。 你可以找到这个答案的详细信息: https://stackoverflow.com/a/9710542/835935



Answer 3:

你试过了吗

after 'deploy:update_code', ':symlink_uploads'

:symlink_uploads任务不是在一个命名空间,因此而做上面或把它放在一个命名空间

namespace :deploy do
  task :symlink_uploads do
    # ...
  end
end


Answer 4:

我有我的回报率的应用上传的文件类似的问题。 这是我的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了。



文章来源: Capistrano and Carrierwave