RailsアプリでqUnitを使用してJavaScriptのテストを開始したいのですが、テストJavaScriptとテストランナーのHTMLページをバージョン管理下に置く方法を考えています(もちろんGitを使用しています)が、本番サーバーから離れたままにしておくとCapistranoを使用してアプリをデプロイします。私の最初の考えは、Capistranoにテストファイルを含むすべてのコードを通常どおりに送信させ、展開プロセスの最後にそれらを削除するタスクを作成することです。ただし、これは一種のハックのようです。デプロイ時にリポジトリの特定の部分を無視するようにCapistranoに指示するよりクリーンな方法はありますか?
3 に答える
これを実現するには多くの方法があります。VonC が提案するように、アプリのテスト ブランチにテストを保持できますが、それは、メイン ブランチですべての変更を行い、それをテスト ブランチに同期することを意味します。(メリットがないわけではありませんが、時々苦痛です)
.gitignore ファイルをディレクトリに使用できます。
これに追加するファイルは、リポジトリには追加されません。カピストラーノはリポジトリからプルして投稿するだけなので、ファイルが含まれていないと、本番サーバーから離れてしまいます.
最後になりましたが、バージョン管理のためにメイン リポジトリにテスト ファイルが必要な場合は、config/deploy.rb ファイルにレシピを追加できます。次のようなものです。
desc "Remove Test Files"
task :remove_test_files , :roles => :web do
sudo %{rm -f #{current_path}/public/javascripts/testfile.js}
sudo %{rm -f #{current_path}/public/javascripts/anothertestfile.js}
end
after 'deploy:remove_test_files'
削除するファイルを指定すると、デプロイ時に必要なファイルがすべて削除されます。:)
上記のいずれかが機能します。あなたに合った方法を選んでください。
2013 年 8 月 30 日以降、.gitattributes
ファイルとexport-ignore
選択したファイル/フォルダーを簡単に作成できます。
features/ export-ignore
spec/ export-ignore
これらのテストをテスト ブランチに含めることができます (テストの前にメイン ブランチをマージします)。
そうすれば、Capistrano にメイン ブランチにあるものをデプロイするように依頼するときに、いかなる種類のテストも含まれません。