2009-05-12 3 views
2

ユーザーがファイルをアップロードできるサイト (browsercms)内のCMSを実行している時点で問題が発生しました。しかし、毎回私は を展開するたびにCapistranoはハードリセットを実行し、アップロードされたファイルはすべて になります。ハードリセットなしでCapistranoを使ってGitからデプロイしますか?

ハードリセットを防止する方法と、アップロードしたファイルを別の場所に移動する方法を教えてください。 アプリケーションコードを変更する必要はありませんか?

答えて

2

これは正しいアプローチではない可能性があります。

.gitignoreに 'images'フォルダを含め、$ current_release/imagesフォルダを$ shared/imagesにシンボリックリンクする必要があります。あなたはdeploy.rbに入れた場合

これは、すべての展開で自動的に行うことができる。

task :link_imgs do  
    run "ln -s #{shared_path}/photos #{release_path}/photos" 
end  

after "deploy:update_code", :link_imgs 

私は私のCMSと同じことをやったし、それが魅力

2

これは「アプリケーションコードを変更する必要なし」という条件を満たすものではありません。

しかし、私はアップロードした画像を/public/imagesから/public/system/imagesに移動した後に、画像が生き残るように、それぞれのカピストラの配備で「バージョン管理」されていません。

問題を引き起こすのはカピストラノ 'バージョン管理'ですか、(gitリセットの代わりに)デプロイを呼び出す

+0

はいああのように動作し、あなたはそこにいるかもしれない。アップロードディレクトリを「共有」ディレクトリにする必要があるかもしれません。 –

+1

これは推奨されるCapistranoソリューションです。これは、デフォルトでcurrent/public/systemをshared/systemにシンボリックリンクする理由です。 Paperclipやその他のプラグインは、そのrasonのためにデフォルトでここに物を格納します。 AttachmentFu管理対象モデルでは、モデルごとに「upload_path」を変更する必要があります。 –

0

キャップデプロイ:更新展開:

デプロイを再起動:更新はもの

デプロイをコピーし、バージョン管理を行います過負荷、が真の再起動を行い、再起動あなたの勤務先、通常あなたのconfig/deploy.rbファイル

namespace :deploy do 
    desc "Softly restart the server" 
    task :restart, :roles => :app, :except => { :no_release => true } do 
     my_own.restart_recipe 
    end 
end 
関連する問題