小编tjr*_*ess的帖子

Ruby中的Sinatra错误处理

我有一个简单的Sinatra休息,我无法捕获错误.我也承认我对Ruby和Sinatra很新.

当我在post端点中引发并出错时,我想报告传入的文档.我需要1)处理post结果中的错误(我可以访问@incoming)或2)将传入的文档传递给错误并在那里报告.

什么是更好的选择,选项1或选项2?

  • 如果我留在选项1,我如何防止错误收到错误(因为它似乎现在正在做)
  • 如果我转到选项2,如何将传入传递给错误?

以下是我的代码示例:

post ('/result') do 

  begin  
  @incoming = JSON.parse(request.body.read)

  //do something that causes an error
  rescue
     e = env['sinatra.error']
     url = request.url
     ip = request.ip

     @actlogpassblock = {  :message => e.message,
                        :path => url,
                        :ip => ip,
                        :timestamp => Time.new,
                        :type => "500",
                        :sub => "RES",
                        :payload => @incoming
                      }        
    action_log.insert(@actlogpassblock)
    status 500 
  end
end

error do
   status 500 
   e = env['sinatra.error']
   url = request.url
   ip = request.ip
   backtrace = "Application error\n#{e}\n#{e.backtrace.join("\n")}"

  @actlogpassblock = {  :message …
Run Code Online (Sandbox Code Playgroud)

ruby error-handling sinatra

10
推荐指数
1
解决办法
1万
查看次数

Ruby Gem Twitter - 证书验证失败(Twitter :: Error :: ClientError)

我正在尝试使用红宝石宝石'twitter',但由于不明原因,我无法让它工作.

这是.rb代码:

require 'twitter'

puts "Greetings, World!"
puts "Checkpoint 1"
Twitter.configure do |config|
  config.consumer_key = "xxxxxxx" #removed for posting
  config.consumer_secret = "xxxxxxx" #removed for posting
  config.oauth_token = "xxxxxxx" #removed for posting
  config.oauth_token_secret = "xxxxxxx" #removed for posting
end
Twitter.verify_credentials
puts "Checkpoint 2"
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Greetings, World!
Checkpoint 1
C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:918:in `connect': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (Twitter::Error::ClientError)
from C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:918:in `block in connect'
from C:/Ruby200-x64/lib/ruby/2.0.0/timeout.rb:66:in `timeout'
from C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:918:in `connect'
from C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:862:in `do_start'
from C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:851:in `start'
from C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:1367:in …
Run Code Online (Sandbox Code Playgroud)

ruby twitter gem oauth

6
推荐指数
1
解决办法
4937
查看次数

AWS API 网关:API 密钥限制

默认情况下,AWS API Gateway 将每个区域每个账户的 API 密钥的最大数量限制为 500,但文档指出,这可以根据请求增加。

最大上限是否有硬上限?是否有不太可能批准的请求的软限制?我可以在最大高端获得 10K 键吗?

我正在遵循AWS 开发人员门户设置演练使用 API 密钥进行授权,并希望确保项目合理扩展到 500 以上。

AWS API 网关限制

rest api-design amazon-web-services aws-api-gateway

6
推荐指数
2
解决办法
2929
查看次数

Lua中两个表之间的差异

我在lua中有两个表(在生产中,a有18个元素,b有8个):

local a = {1,2,3,4,5,6}
local b = {3,5,7,8,9}
Run Code Online (Sandbox Code Playgroud)

我需要返回'a'省略'b'中的任何公共元素 - {1,2,4,6},类似于ruby命令ab(如果a和b是数组).

我能想出的最好的lua逻辑是:

local function find(a, tbl)
    for _,a_ in ipairs(tbl) do if a_==a then return true end end
end

function difference(a, b)
   local ret = {}
   for _,a_ in ipairs(a) do
   if not find(a_,b) then table.insert(ret, a_) end
end

return ret
end

local a = {1,2,3,4,5,6}
local b = {3,5,7,8,9}

local temp = {}
temp = difference(a,b)

print(temp[1],temp[2],temp[3],temp[4])
Run Code Online (Sandbox Code Playgroud)

我需要非常快速地循环这些表格比较(在生产中每秒最少10K次).有更清洁的方法吗?

======

这是redis服务器端脚本的一部分,我必须保护我的Redis CPU.在一个干净的Lua流程之外,我有两个其他选择:

1.创建两个redis临时密钥然后运行烧结以获得42的大(O)

  • 18 sadd(a)
  • 8 sadd(b)
  • 16烧结(a,b)

2.将a和b返回ruby进行数组比较并发回结果. …

optimization lua server-side redis

4
推荐指数
2
解决办法
1845
查看次数

Redis服务器端脚本 - 一次ZREM多个值

我正在构建一个Redis服务器端脚本,而我缺乏Lua经验让我有点陷入困境.

基本上有一个大的"主"排序集(包含〜1,000个值),我想删除在较小的"删除"集(包含~100个值)中找到的任何键.想想sdiffstore,但"主要"设置中的成员分数很重要.

一个简单的例子:

"main"
ZADD main 6 "one"
ZADD main 7 "two"
ZADD main 8 "three"
ZADD main 9 "four"
ZADD main 10 "five"

"remove"
ZADD remove "two"
ZADD remove "four"

desired output (stored in a sorted set):
6 "one"
8 "three"
10 "five"
Run Code Online (Sandbox Code Playgroud)

所以在lua服务器端脚本:

- 这很有效

redis.call('zrem','main', 'two','four')
Run Code Online (Sandbox Code Playgroud)

- 这不是

local temp = redis.call('smembers','remove')    
redis.call('zrem','main', temp )
Run Code Online (Sandbox Code Playgroud)

我尝试过多次迭代我的语法无济于事.有任何想法吗?

我希望避免将"删除"成员转换为某种字符串或循环,并一次删除一个成员.

谢谢

lua server-side redis

2
推荐指数
1
解决办法
797
查看次数

失败:DNS 解析失败:AWS Route53 上的 DNS 响应错误代码 NXDOMAIN

我有一个托管在 AWS 上的站点,最近该站点因 NXDOMAIN 错误而关闭。该站点之前运行正常,但问题似乎不存在于该站点,因为 Elastic Beanstalk 直接链接 (xxxx-prod.elasticbeanstalk.com) 工作正常。

在我的 Route53 中,我有一个 CNAME 链接到我的 (xxxx-prod.elasticbeanstalk.com) 和 AWS 提供的 SOA 和 4 个 NS 记录。xxxx 是实际站点名称的占位符。运行挖掘...

    dig xxxx.com any

; <<>> DiG 9.8.3-P1 <<>> xxxx.com any
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 63003
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;xxxx.com.          IN  ANY

;; AUTHORITY SECTION:
com.            895 IN  SOA a.gtld-servers.net. nstld.verisign-grs.com. 1435723016 …
Run Code Online (Sandbox Code Playgroud)

dns cname ip-address amazon-web-services amazon-route53

2
推荐指数
1
解决办法
4344
查看次数