小编Myr*_*ton的帖子

使用git,如何忽略一个分支中的文件但是在另一个分支中提交它?

我有一个项目,我正在部署到Heroku.源代码树包含一堆mp3文件(该网站将用于我参与的录制项目).

我想把它的源代码放在GitHub上,但是GitHub对他们的免费帐户有300 MB的限制.我不想在一堆mp3文件上使用50 MB的限制.显然,我可以将它们添加到.gitignore文件中,以防止它们被我的回购.

但是,我使用了部署到Heroku git push heroku.mp3文件必须存在于我推送到Heroku的分支中,以便它们得到部署.

理想情况下,我想.gitignore在我的本地主分支中的mp3文件,以便当我将其推送到GitHub时,不包括mp3.然后我会保留一个本地生产分支,其中提交了mp3而不是忽略.要部署,我会将master合并到生产中,然后将生产分支推送到Heroku.

我不能让这个工作正常.

这是我正在尝试做的一个例子......

$ git init git-ignore-test
$ cd git-ignore-test
$ echo "*.ignored" >> .gitignore
$ git add .gitignore && git commit -m "Ignore .ignored files"
$ touch Foo.ignored
Run Code Online (Sandbox Code Playgroud)

此时,Foo.ignored在我的主分支中被忽略,但它仍然存在,所以我的项目可以使用它.

$ git checkout -b unignored
$ cat /dev/null > .gitignore
$ git add Foo.ignored .gitignore && git commit -m "Unignore .ignored files"
Run Code Online (Sandbox Code Playgroud)

现在我有了一个分支,这些文件已经提交,正如我想的那样.但是,当我切换回我的主分支时,Foo.ignored就消失了.

有人有任何建议可以更好地设置它吗?

编辑:只是为了澄清,我希望mp3文件存在于两个分支中,以便当我在本地运行该站点(使用任一分支)时,该站点可以工作.我只想在一个分支中忽略文件,所以当我推送到GitHub时,它们也不会被推送.通常.gitignore适用于这种事情(即保留一个文件的本地副本,但不会包含在推送到遥控器中),但当我切换到签入文件的分支,然后返回到忽略文件的分支,文件消失.

git gitignore

152
推荐指数
5
解决办法
6万
查看次数

Ruby的VCR库是否有python替代品?

我想使用Ruby的VCR库Betamax的令人敬畏的"记录/回放"机制用于JVM.是否有一个Python库以相同的方式工作?如果没有,您如何测试您的REST客户端调用,而不必担心测试缓慢和片状?

python testing integration-testing vcr

20
推荐指数
2
解决办法
2283
查看次数

15
推荐指数
3
解决办法
4160
查看次数

使用VCR过滤敏感数据

我正在使用VCR gem记录http交互,并在将来重播它们.我想在uri请求中过滤掉我的实际密码值.这是uri的样子:

http://services.somesite.com/Services.asmx/Cabins
Username=long&Password=john&StartDate=03%2F22%2F2012&EndDate=03%2F29%2F2012
Run Code Online (Sandbox Code Playgroud)

虽然这里提供了一个解释,但我仍然不确定自己经过几次尝试后该怎么做:

https://www.relishapp.com/myronmarston/vcr/v/2-0-0/docs/configuration/filter-sensitive-data

任何帮助,将不胜感激.

ruby testing rspec ruby-on-rails-3 vcr

15
推荐指数
2
解决办法
2406
查看次数

vcr与capybara-webkit

我正在使用capybara-webkit来测试与第三方网站的集成(我需要javascript).

我想使用vcr来记录在集成测试期间发出的请求,但是capybara-webkit不会覆盖net http,因此vcr无法记录它们.我如何为vcr编写一个适配器,以便记录所需的内容?

ruby capybara-webkit vcr

14
推荐指数
2
解决办法
2954
查看次数

Ruby VCR gem会记录相同的请求

在我的黄瓜支持目录中,我在vcr.rb中有以下内容:

require 'vcr'

VCR.configure do |c|
  c.cassette_library_dir = 'fixtures/vcr_cassettes'
  c.hook_into :webmock
  c.ignore_localhost = true
  c.default_cassette_options = { record: :new_episodes }
end
Run Code Online (Sandbox Code Playgroud)

我正在对城市名称进行地理编码,从而调用Google Maps API.我正在尝试记录和存根这些请求,但它会将相同的请求记录到同一个yml文件中:

- request:
    method: get
    uri: http://maps.googleapis.com/maps/api/geocode/json?address=Miami,%20FL&language=en&sensor=false
    body:
      encoding: US-ASCII
      string: ''
    headers:
      Accept-Encoding:
      - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
      Accept:
      - ! '*/*'
      User-Agent:
      - Ruby
  # response...

- request:
    method: get
    uri: http://maps.googleapis.com/maps/api/geocode/json?address=Miami,%20FL&language=en&sensor=false
    body:
      encoding: US-ASCII
      string: ''
    headers:
      Accept-Encoding:
      - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
      Accept:
      - ! '*/*'
      User-Agent:
      - Ruby
Run Code Online (Sandbox Code Playgroud)

它是相同的URL和非常相同的请求,不应该VCR存根请求?每当我尝试搜索同一个城市时,如何防止我的规范访问API?

ruby rspec ruby-on-rails cucumber vcr

12
推荐指数
2
解决办法
5492
查看次数

在iPhone应用程序中验证用户

我正在为我们的Web应用程序开发HTTP API.最初,API的主要消费者将是我们正在开发的iPhone应用程序,但我正在考虑未来的用途(例如其他平台的移动应用程序).我正在尝试确定用户身份验证的最佳方式,以便他们可以从iPhone访问自己的帐户.我有一个我认为运作良好的设计,但我不是安全专家,所以我认为在这里寻求反馈会很好.

用户身份验证的设计有3个主要目标:

  1. 良好的用户体验:我们希望允许用户输入一次凭据,并且无限期地保持登录状态,直到他们明确注销.我会考虑OAuth,如果不是因为iPhone应用程序的体验非常糟糕,从我所听到的(即它在Safari中启动登录表单,然后告诉用户在身份验证成功时返回应用程序) .
  2. 无需在应用程序中存储用户信用:我总是讨厌将用户密码存储在纯文本中或在任何地方对称加密的想法,因此我不希望应用程序必须存储密码才能将密码传递给用于未来API请求的API.
  3. 安全性:我们绝对不需要银行应用程序的强大安全性,但我显然希望这是安全的.

总体而言,API受REST启发(即将URL视为资源,并在语义上使用HTTP方法和状态代码).每个API请求都必须包含两个自定义HTTP标头:API密钥(每个客户端应用程序都是唯一的)和唯一的设备ID.API要求使用HTTPS进行所有请求,以便对标头和正文进行加密.

目前的战略:

我的计划是在我的数据库中有一个api_sessions表.它对API密钥和唯一设备ID具有唯一约束(因此设备可能只通过给定应用程序登录到单个用户帐户)以及users表的外键.

API将具有登录端点,该端点接收用户名/密码,如果它们与帐户匹配,则记录用户,为给定的API密钥和设备ID创建api_sessions记录.未来的API请求将使用API​​密钥和设备ID查找api_session,如果找到记录,则将请求视为在api_session记录引用的用户帐户下登录.

还将有一个注销 API端点,它从api_sessions表中删除记录.

有没有人在这看到任何明显的安全漏洞?

iphone authentication api

11
推荐指数
1
解决办法
2566
查看次数

Ruby的vcr的Java替代品?

Ruby的VCR有替代品吗?

据我所知,使用VCR的好处是巨大的,您可以运行"集成测试"并记录结果,将它们存储在本地.现在,从下次需要运行测试时,您可以使用第一次运行时记录的数据来模拟实际的数据库命中.

  1. java世界中有类似的东西吗?
  2. 如果不是,如果我尝试实施它可能会遇到什么样的瓶颈?

VCR只记录HTTP交互,但是可以这样做来记录,比如对我不需要测试的其他团队API的任何类型的数据库操作/函数调用,基本上这样可以减轻我对这么多东西的嘲讽使其自动化.

以下是使用Ruby的单元测试的VCR示例:

ruby java tdd mocking vcr

11
推荐指数
1
解决办法
2670
查看次数

在gem中包装预编译的二进制文件

我有一个ruby web应用程序,它使用lilypond根据用户输入生成乐谱.我想将托管移动到heroku(我最近在一些项目上使用了heroku并且非常喜欢它,加上我的流量足够低,它至少可以在heroku上免费托管它一段时间).但是,heroku的dyno架构不允许你输入并安装你想要的任何软件包......相反,你给它一个宝石清单,它会为你安装宝石.

所以,如果我要部署到heroku,我将需要将lilypond打包成宝石.我发布了一些纯红宝石,但没有处理原生扩展或预编译的二进制文件,或类似的东西.

是否有可能采取一些预编译的二进制文件并将其打包到gem中?理想情况下,这将包括OS X(我开发的)和debian linux(这是在heroku上运行的)的二进制文件,并在安装gem时安装适当的二进制文件.

ruby gem rubygems heroku

9
推荐指数
1
解决办法
1438
查看次数

rspec hook中当前示例/组的名称

我正在添加一个rspec钩子,它允许我打开vcr并使用当前示例的名称作为卡带名称.

it "should have collaborators", :vcr => :once do
  # web interactions
end

config.around(:each, :vcr => :once) do |example|
  VCR.use_cassette(example.name, :record => :once) do
    example.call
  end
end
Run Code Online (Sandbox Code Playgroud)

麻烦的是我不知道如何获取当前示例的名称(example.name不起作用).

hook rspec filter rspec2 vcr

8
推荐指数
1
解决办法
2919
查看次数