排除使用Capistrano部署文件,同时仍然使用Git进行版本控制

Jim*_*dra 9 git deployment capistrano ruby-on-rails qunit

我想开始使用qUnit在我的Rails应用程序中测试JavaScript,我想知道如何将测试JavaScript和测试运行器HTML页面保持在版本控制之下(当然我正在使用Git)但是当他们将它们从生产服务器上移开时我使用Capistrano部署应用程序.我的第一个想法是让Capistrano像往常一样发送所有代码,包括测试文件,并编写一个任务,在部署过程结束时删除它们.不过,这看起来像是一种黑客攻击.有没有更简洁的方法告诉Capistrano在部署时忽略存储库的某些部分?

Dus*_* M. 7

有很多方法可以实现这一点,您可以像VonC建议的那样将测试保存在应用程序的测试分支中,但这意味着您将在主分支中进行所有更改,然后将其同步到测试分支.(不是没有它的优点,但有时是痛苦的)

您可以将.gitignore文件用于您的目录.

您添加到此的任何文件都不会添加到您的存储库中.由于capistrano只是从您的存储库中提取和发布,因此不包含这些文件会使它们脱离您的生产服务器.

最后但并非最不重要的是,如果您希望主存储库中的测试文件进行版本控制,您可以在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'
Run Code Online (Sandbox Code Playgroud)

并指定要删除的文件,这将删除部署时所需的任何文件.:)

以上任何一种都可行.选择适合您的方法.


Eas*_*yCo 5

自 2013 年 8 月 30 日起,您只需创建一个.gitattributes文件和export-ignore您选择的文件/文件夹即可。

features/ export-ignore
spec/     export-ignore
Run Code Online (Sandbox Code Playgroud)

参考:https : //github.com/capistrano/capistrano/pull/626