我打算将用户重定向到存储在S3中的敏感资源的预签名URL.这些是在检查用户权限后产生的,并且具有激进的超时(30秒).但我担心的是,我的客户端计算机上的某些恶意软件是否可能捕获该URL并仍然在URL的过期时间内下载该文件.或者我只是太偏执了?
如果之前已经回答过,请指出我的方向.感谢您的帮助.
我们从供应商那里获得了对我们的Web应用程序的并发回调,我们怀疑它导致我们丢失更新,因为它们在不同的机器上同时处理.
当且仅当它们影响同一用户记录时,我们需要序列化这些调用的处理.
我的一位同事提出了一个AWS Kinesis流,我们使用用户ID作为分区密钥.这个想法是相同的分区键将记录放在同一个分片中.每个分片仅由一个工作程序处理,并且不会出现并发问题.通过设计,可以保证不会并行处理属于同一用户的记录.这个解决方案可以扩展并解决问题,但它至少会让我们回到冲刺阶段.
我们正试图找到一种可以更快部署的解决方案.
到目前为止我们讨论的其他解决方案
我们使用MySQL进行Rails堆栈,并且更喜欢AWS作为我们的解决方案.
有没有解决这个问题的方法,比切换到Kinesis会产生更快的结果?
architecture parallel-processing concurrency asynchronous ruby-on-rails
假设我提交了一个二进制文件,然后稍后将其更改为几次提交,现在我在新提交中将其更改回来.
出于好奇,我想知道git是否为它创建了一个新的blob?或者它是否在历史中检测到并重复使用它?如果是这样,它如何检测到?校验?
我已经看到很多关于ng-repeat完成的顺序与其他指令或Angular上发生的事情相比的问题,但是我还没有找到答案来确定它是如何完成的.
我有两个关于它如何工作的想法.
第一种方式: 当ng-repeat的观察者触发时,它会删除它从DOM创建的所有元素,然后在它们的位置创建所有新元素,即使这些元素中的许多元素是相同的(例如,在支持数组中添加了1个项目的情况) ).
第二种方式:由于ng-repeat已经跟踪哪些元素与其后备集合中的哪些项目相关,因此它只删除集合中不再存在的项目,并为集合中新增的项目创建新元素.
这是为什么?为什么?
在观看关于Mercury Editor的RailsCast#296后,我试图让编辑器重定向到新创建的资源.
我已经可以使用JS和window.location.href=.在客户端重定向.但是对于新资源,我不能在客户端"猜测"它的URL.我需要它在服务器响应中.
但是,问题是我没有看到在编辑器中使用服务器响应的可能性.无论控制器呈现什么,Mercury 都会丢弃服务器响应,而不是将其用作我的函数的参数mercury:saved.
有办法解决这个问题吗?
我正在尝试使用Action Controller错误报告模板在Rails中解决一个奇怪的行为.
对于记录,这是模板中的控制器:
class TestController < ActionController::Base
include Rails.application.routes.url_helpers
def index
render text: 'Home'
end
end
Run Code Online (Sandbox Code Playgroud)
我添加了一个缺少动作的路线:
routes.draw do
get '/' => 'test#index'
get '/missing' => 'test#missing'
end
Run Code Online (Sandbox Code Playgroud)
并且我试图断言AbstractController::ActionNotFound在遵循该路线时引发:
class BugTest < Minitest::Test
include Rack::Test::Methods
def test_missing
assert_raises(AbstractController::ActionNotFound) { get '/missing' }
end
private
def app
Rails.application
end
end
Run Code Online (Sandbox Code Playgroud)
预期行为:绿色测试.
实际行为:
# Running tests:
D, [2014-04-24T09:17:41.948985 #4497] DEBUG -- :
D, [2014-04-24T09:17:41.949029 #4497] DEBUG -- :
I, [2014-04-24T09:17:41.949094 #4497] INFO -- : Started GET "/missing" for …Run Code Online (Sandbox Code Playgroud) 我们其中一台服务器上的磁盘已满。分析表明,大部分空间都浪费在了/tmp.
罪魁祸首是那里的 25,000 多个文件占用了超过 3 个演出,所有这些文件都以模式命名passenger-error-xxxxxx.html。快速检查表明,这是Passenger 在无法启动应用程序时提供的标准错误页面。
根据其中一个文件中的消息,Passenger 无法启动应用程序,因为mysql2gem 丢失并且无法连接到数据库。
从粗略估计,似乎乘客至少为每个请求保留这些文件,这是由于 ELB 的健康检查(每 30 秒请求 = 2880reqs/天,Gemfile 在 5 天后修复,应该少于 15,000reqs) .
是否记录了乘客将这些 HTML 文件保存在的任何地方/tmp?
为什么这样做?我们的配置有问题吗?
我有以下命令。我在启动时将其插入rails server
VARIABLE=development rails s
Run Code Online (Sandbox Code Playgroud)
如何使此变量自动启动,而不必每次都自己修改它?
所以我会这样做
rails s
Run Code Online (Sandbox Code Playgroud)
它将与该变量一起自动运行。
我对功能规格有以下期望(相当低级,但仍然有必要):
expect(Addressable::URI.parse(current_url).query_values).to include(
'some => 'value',
'some_other' => String
)
Run Code Online (Sandbox Code Playgroud)
请注意,第二个查询值是模糊匹配,因为我只想确保它在那里,但是我不能更具体地说明它。
我想将其提取到自定义匹配器中。我开始于:
RSpec::Matchers.define :have_query_params do |expected_params|
match do |url|
Addressable::URI.parse(url).query_values == expected_params
end
end
Run Code Online (Sandbox Code Playgroud)
但这意味着我无法通过{'some_other' => String}那里。为了继续使用模糊匹配,我必须include在自定义匹配器中使用匹配器。
但是,其中的所有内容RSpec::Matchers::BuiltIn都标记为专用API,Include具体记录为:
# Provides the implementation for `include`.
# Not intended to be instantiated directly.
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是:RSpec支持在自定义匹配器中使用内置匹配器吗?我该怎么做?
ruby ×4
amazon-s3 ×1
angularjs ×1
architecture ×1
asynchronous ×1
concurrency ×1
diskspace ×1
git ×1
javascript ×1
minitest ×1
passenger ×1
rspec ×1
security ×1
thor ×1
unit-testing ×1
url ×1