2014-02-17 52 views
3

Here我收到了一個解決方案,我的問題是每次當我用Capistrano部署我的Spree Commerce應用程序時,我的圖像被刪除(它們仍然存在,但文件夾名稱是錯誤的),我必須通過管理員再次添加它們。如何在Capistrano部署中生成我的產品圖像?

兩者都在this Google groupanswer這個問題據說symlinking是解決方案。

你需要確保你的RAILS_ROOT /公/大禮包目錄 正在從Capistrano的符號鏈接的共享目錄,而不是 每次重新部署的時間。如果這個符號鏈接沒有發生,你的 圖像將在每次部署時丟失。

我試了幾件事,但我沒有設法符號鏈接我的圖像。

在服務器上,它們位於文件夾/ p​​ublic/spree/products中。我試過的是:

namespace :deploy do 
    task :start do ; end 
    task :stop do ; end 
    task :symlink_shared do 
    run "ln -nfs #{shared_path}/shared/spree/ #{release_path}/public/spree/"" 
    end 
end 

但這不起作用。我不知道我必須輸入哪條共享路徑。我希望有人能幫助我解決問題或提供解釋鏈接。

回答

7

如果您使用的是Capistrano 3,您可以使用我在自己的問題here的答案中解釋的相同方法。

從本質上講,:shared_children是你如何在Capistrano 2中做到這一點,但它被刪除,贊成:linked_files:linked_dirs

在你的倉庫只是創建public/spree/目錄,將它添加到.gitignore如果你需要(如果他們通過跟蹤的Git與否並不重要),然後編輯您的deploy.rb使用:linked_dirs

set :linked_dirs, %w(public/spree) 

這樣,當Capistrano部署它時,它會自動創建shared/中的目錄並將其鏈接到當前版本。請記住,如果您需要在該目錄中存在文件,則必須使用類似rsync的工具手動將它們複製到shared/。對於像database.yml這樣的文件也是如此(您可以使用:linked_files)。

+0

不幸的是,它沒有達到預期的效果(我只複製了'set:linked_dirs%w(public/spree)'並且頁面不再工作,甚至我的標識又變回spree_commerce one。 –

+0

在部署之前,'public/spree'目錄及其內容需要位於服務器上的'shared'目錄中! –

+0

我認爲你可以只用' rsync config/database.yml [email protected]:/ var/www/my_rails_app/shared/config' –

相關問題