簡體   English   中英

Capistrano和載波

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM