Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 排除在使用Git进行版本控制时使用Capistrano部署的文件_Ruby On Rails_Git_Deployment_Capistrano_Qunit - Fatal编程技术网

Ruby on rails 排除在使用Git进行版本控制时使用Capistrano部署的文件

Ruby on rails 排除在使用Git进行版本控制时使用Capistrano部署的文件,ruby-on-rails,git,deployment,capistrano,qunit,Ruby On Rails,Git,Deployment,Capistrano,Qunit,我想开始用qUnit测试Rails应用程序中的JavaScript,我想知道如何让TestJavaScript和TestRunner HTML页面处于版本控制之下(当然,我用的是Git),但在我用Capistrano部署应用程序时,让它们远离生产服务器。我的第一个想法是让Capistrano像往常一样发送所有代码,包括测试文件,并在部署过程结束时编写一个任务来删除它们。不过,这似乎有点像黑客。有没有更简洁的方法告诉Capistrano在部署时忽略存储库的某些部分?您可以将这些测试放在一个测试分支

我想开始用qUnit测试Rails应用程序中的JavaScript,我想知道如何让TestJavaScript和TestRunner HTML页面处于版本控制之下(当然,我用的是Git),但在我用Capistrano部署应用程序时,让它们远离生产服务器。我的第一个想法是让Capistrano像往常一样发送所有代码,包括测试文件,并在部署过程结束时编写一个任务来删除它们。不过,这似乎有点像黑客。有没有更简洁的方法告诉Capistrano在部署时忽略存储库的某些部分?

您可以将这些测试放在一个测试分支中(在任何测试之前,您可以在该分支上合并主分支)


这样,当您要求Capistrano部署主分支上的内容时,不会包含任何类型的测试。

实现这一点的方法有很多,您可以像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'
并指定要删除的文件,这将在部署时删除所需的任何文件。:)


以上任何一项都可以。选择适合你的方法

从2013年8月30日起,您只需创建一个
.gittributes
文件,然后
导出忽略您选择的文件/文件夹即可

features/ export-ignore
spec/     export-ignore

参考资料:

我当时没有看到你的答案+1@VonC&Dustin—如果您的cap文件在部署repo中,但您不希望它们出现在生产服务器上,您建议如何处理它们?它们将被部署到releases/variable\u目录_name@ChristopherIckes-就我个人而言,我不会将deploy.rb脚本保存在生产repo中。同样,如果您需要它来进行版本控制,我会让它们远离主分支,这样它们就不会被部署。i、 我将把部署脚本放在一个用于版本控制的“deploy”分支中,然后使用该分支执行“capdeploy”。我的部署脚本从github中拉取主机,因此将deploy.rb放在不同的分支中应该可以工作。