我正在建立一个简单的网站,用Stripe处理付款.我正在使用Bootstrap来造型.当我使用Stripe Elements插入付款字段时,它们没有使用Bootstrap进行样式设置.如何将Bootstrap的样式应用于Elements支付字段?
我们是一个小型创业公司,拥有一个写得很重的SAAS应用程序,并且(最终!)达到我们的使用呈现扩展问题的程度.我们有一个小团队,所以我们非常感谢能够将系统管理员卸载到Heroku和RDS.
虽然Heroku(大部分)都很好,但我们在使用RDS时遇到了一些问题:
此外,更改实例大小的停机时间很糟糕.
可用性.我们运行多个AZ实例,因此我们应该在单个AZ中断后继续存在.但是RDS是建立在EBS之上的,这让我非常担心EBS的历史和设计.
价钱.我们的RDS账单是我们支付Heroku的4倍.我不介意付钱亚马逊让我免于雇用系统管理员,但我很想找到更便宜的东西.
在我看来,我们有两个选择:传统的方法(分片,运行夜间工作以将我们数据库的部分移动到只读状态等); 或者是NewSQL解决方案(Xeround,VoltDB,NimbusDB等).
传统专业人士:之前已经做了很多次,并且有非常标准的方法可以做到这一点.
传统缺点:这将需要大量工作并在应用程序中引入显着的复杂性.它也无法解决RDS(可用性和价格)的次要问题.
NewSQL专业人士:据推测,这些解决方案将在不改变应用程序代码的情况下水平扩展我们的数据库(受SQL限制的一些限制,如不使用悲观锁定).这将为我们节省大量的工作.它还可以提高可靠性(无单点故障)并降低成本(无需在非工作时间运行XL实例以提供高峰使用率).
NewSQL缺点:这些解决方案相对年轻,我无法在生产应用程序中找到任何好的评论或人们对它们的体验.我只发现一个可用作托管解决方案(Xeround),所以除非我们使用那个,否则我们必须在sysadmin中投入资源.
我想知道我最好的选择是什么意见.
Xeround非常诱人(托管NewSQL),但我无法在生产中找到任何有用的信息.我见过的几条推文都让人抱怨它有点慢.我很担心搬到看似未经测试的东西.
我保守的一面是坚持使用RDS并采用传统方法.但就开发时间而言,这将是非常昂贵的.
然后我的一部分想知道是否还有另一种方式,也许是一个经过实战考验的托管NewSQL解决方案,我还没有听说过.或者也许是一个NewSQL解决方案,我们必须自己托管,但这有着非常可靠的历史.
提前感谢您的想法.
我有一个看起来像这样的模型:
class Gist
def self.create(options)
post_response = Faraday.post do |request|
request.url 'https://api.github.com/gists'
request.headers['Authorization'] = "Basic " + Base64.encode64("#{GITHUB_USERNAME}:#{GITHUB_PASSWORD}")
request.body = options.to_json
end
end
end
Run Code Online (Sandbox Code Playgroud)
和一个看起来像这样的测试:
require 'spec_helper'
describe Gist do
context '.create' do
it 'POSTs a new Gist to the user\'s account' do
Faraday.should_receive(:post)
Gist.create({:public => 'true',
:description => 'a test gist',
'files' => {'test_file.rb' => 'puts "hello world!"'}})
end
end
end
Run Code Online (Sandbox Code Playgroud)
然而,这个测试并不能让我满意,因为我正在测试的是我正在使用法拉第进行一些POST,但我实际上无法测试URL,标题或正文,因为它们已被传入一个街区.我尝试使用法拉第测试适配器,但我也没有看到任何测试URL,标题或正文的方法.
有没有更好的方法来编写我的Rspec存根?或者我能以某种方式使用法拉第测试适配器我无法理解?
谢谢!
我发现Sinon不会让你存根属性,只有方法.我正试图弄清楚如何处理/拥抱这个.
我有以下代码:
var Player = {
addPoints: function(points) {
this.score += points;
},
score: 0
}
var Game = {
setPlayers: function(players) {
this.players = players;
},
over: function() {
return this.players.some(function(player) {
return player.score >= 100;
});
},
}
Run Code Online (Sandbox Code Playgroud)
这是我写的一个测试:
describe("Game", function() {
it("is over if a player has at least 100 points", function() {
var game = Object.create(Game);
player = Object.create(Player);
game.setPlayers([player]);
player.addPoints(100);
game.over().should.be.true;
});
});
Run Code Online (Sandbox Code Playgroud)
感觉不对的我不得不去和呼出addPoints()的Player时候我测试Game.我最初的本能是存根Player.points,但我不能这样做,因为Sinon只存根属性,而不是方法.
我该怎么想这个?