Sinatra条件

时间:2011-08-14 16:51:02

标签: ruby sinatra

在研究红宝石大约一个月后,我决定继续前往西纳特拉。我需要帮助理解一个说明条件和路由的Sinatra片段。有人可以清楚地解释一下逐行的情况以及这个区块实际上是如何随机化路线的吗?

set(:probability) { |value| condition { rand <= value } }

  get '/win_a_car', :probability => 0.1 do
    "You won!"
  end

  get '/win_a_car' do
    "Sorry, you lost."
  end

1 个答案:

答案 0 :(得分:7)

这样做的整体行为将导致第一条路线加载约10%的时间,第二条路线将在其余时间加载。

第一条路线使用通过概率设定的条件。上面设置的概率将通过其值并测试以查看0-1之间的随机#是否小于该概率值。由于该值为0.1,因此它将在10%的时间内返回true。

其他90%的时间将调用第二条路线。较早的路由优先,将找到找到的第一个有效路由。

如果您想在另一个设置中设置概率,则需要使用Proc来推迟对概率的评估。

在此处阅读有关条件路线的更多信息: http://www.sinatrarb.com/intro#Conditions