6

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

これらはほぼ 2 GB になるため、ソース管理に保持したくありません。そのため、実行するたびに、cap deployこれらのファイルが保存releases/され、ディレクトリがリポジトリに保存されている元のコピーに置き換えられます。

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

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

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

4

3 に答える 3

7

将来の記録のために、これは私が共有ディレクトリで行ったタスクです。

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

after "deploy:update_code", :link_shared_directories   
于 2008-11-04T20:33:04.883 に答える
6

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

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

于 2008-11-04T19:22:07.583 に答える
2

これで、deploy.rb で :linked_files を簡単に使用できます。

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

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

于 2013-10-20T03:12:01.413 に答える