2014-09-19 44 views
0

我遇到了Carrierwave和Capistrano的問題。情況是:Capistrano + Carrierwave問題

  • 我已經設置Capistrano只保留一個版本。 (測試提議)。
  • 當前版本指向20140918231215.
  • Capistrano酒店有權選擇:

    集:linked_dirs%(重){料日誌TMP/tmp目錄的PID/tmp目錄緩存/插座TMP /會話公共/上傳}

因此,當前的公共/上傳鏈接到共享/公共/上傳,沒關係。我上傳新文件時出現此問題。在這種情況下,在發佈文件夾之前創建一個新文件夾。

有沒有什麼辦法刷新Capistrano上傳器store_dir,我懷疑是採取了一個不好的配置。

注:

  • 從last_release新符號鏈接到共享正確創建。
  • 正確刪除以前版本。
  • 問題是,當我上傳新圖像時,它是在before_release/public/uploads中創建的。該文件夾不存在,所以它顯然是在沒有符號鏈接的情況下創建的。

我非常感謝您提供的任何幫助。

回答

0

如果服務器中的文件夾正確符號鏈接,那麼capistrano正在正常工作。

你的問題聽起來對我來說,你的上傳者做錯了事。

檢查store_dir方法,可能是做一些瘋狂: 我的是這樣:

class LogoUploader < CarrierWave::Uploader::Base 
    include CarrierWave::RMagick 
    storage :file 

    def store_dir 
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
    end 
end 

考慮到,carrierwave已經默認的公共文件夾使用的帳戶。

0

我已經實現通過在部署後通過執行「sudo service nginx restart」來寫入新文件夾(最新版本),我認爲是不必要的,這是什麼?

編輯:

我明白了!我已經將該行添加到config/deploy.rb:

namespace :deploy do 
    desc "Restart" 
    task :restart do 
    on roles(:web) do 
     execute "touch #{release_path}/tmp/restart.txt" 
    end 
    end 
end 

我還將文件restart.txt添加到tmp文件夾。

似乎是通過Phusion Passenger重新啓動Ruby on Rails的「竅門」。