我有一个项目,我正在部署到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适用于这种事情(即保留一个文件的本地副本,但不会包含在推送到遥控器中),但当我切换到签入文件的分支,然后返回到忽略文件的分支,文件消失.
我正在使用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
任何帮助,将不胜感激.
我正在使用capybara-webkit来测试与第三方网站的集成(我需要javascript).
我想使用vcr来记录在集成测试期间发出的请求,但是capybara-webkit不会覆盖net http,因此vcr无法记录它们.我如何为vcr编写一个适配器,以便记录所需的内容?
在我的黄瓜支持目录中,我在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?
我正在为我们的Web应用程序开发HTTP API.最初,API的主要消费者将是我们正在开发的iPhone应用程序,但我正在考虑未来的用途(例如其他平台的移动应用程序).我正在尝试确定用户身份验证的最佳方式,以便他们可以从iPhone访问自己的帐户.我有一个我认为运作良好的设计,但我不是安全专家,所以我认为在这里寻求反馈会很好.
用户身份验证的设计有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表中删除记录.
有没有人在这看到任何明显的安全漏洞?
我有一个ruby web应用程序,它使用lilypond根据用户输入生成乐谱.我想将托管移动到heroku(我最近在一些项目上使用了heroku并且非常喜欢它,加上我的流量足够低,它至少可以在heroku上免费托管它一段时间).但是,heroku的dyno架构不允许你输入并安装你想要的任何软件包......相反,你给它一个宝石清单,它会为你安装宝石.
所以,如果我要部署到heroku,我将需要将lilypond打包成宝石.我发布了一些纯红宝石,但没有处理原生扩展或预编译的二进制文件,或类似的东西.
是否有可能采取一些预编译的二进制文件并将其打包到gem中?理想情况下,这将包括OS X(我开发的)和debian linux(这是在heroku上运行的)的二进制文件,并在安装gem时安装适当的二进制文件.
我正在添加一个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不起作用).