Capistranoを使用してデプロイするときにサーバーに静的ファイルを保持する

StackOverflow https://stackoverflow.com/questions/263026

質問

Webインターフェースを介して、Railsアプリケーションの public / files フォルダーにファイルを常時アップロードしています。

これらは2 GB近く使用されるため、ソース管理に残したくないので、 cap deploy を実行するたびに、これらのファイルは releases / を選択し、ディレクトリをリポジトリに保存されている元のコピーに置き換えます。

これらのファイルをサーバーの current ディレクトリに保存する最良の方法は何だろうと思っています。私のアイデアのいくつかは次のとおりです。

  • ソース管理からディレクトリを削除し、Capistranoによって管理されていない外部ディレクトリへのリンクに置き換えます。
  • 展開する前にディレクトリを/ tmpにコピーするCapistranoタスクを作成し、展開後に/ publicにコピーして戻します。

これを行う標準的な方法はありますか?

役に立ちましたか?

解決

ファイルをマシン上の別のディレクトリへのシンボリックリンクにすることができます。たとえば、/ currentおよび/ releasesと同じレベルの/ sharedディレクトリです。

capistranoが/ logおよび/ tmpディレクトリを管理していることを確認してください。

他のヒント

将来の記録のために、これは私が共有ディレクトリでそれを行うために使用したタスクです:

task :link_shared_directories do     
  run "ln -s #{shared_path}/files #{release_path}/public/files"   
end    

after "deploy:update_code", :link_shared_directories   

今では、deploy.rbで:linked_filesを使用できます:

set :linked_files, %w{config/database.yml}

この場合、ファイル[target_dir] /shared/config/database.ymlがサーバーに存在する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top