2011-08-14 54 views
5

在學習了一個月左右的紅寶石之後,我決定轉到Sinatra。我需要幫助理解說明條件和路由的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 

回答

7

這樣做的整體行爲將導致第一條路線要加載的時間大約10%,而第二個路徑將被加載的時間休息。

第一條路線使用通過概率設置的條件。以上概率集合將傳遞其值並測試0-1之間的隨機數是否小於此概率值。由於該值爲0.1,它將在10%的時間內返回真實值。

其他90%的時間將被稱爲第二條路線。先前的路線優先,找到的第一個有效路線將被調用。

如果你想在另一個設置中設置概率,你需要推遲Proc概率的評估。

閱讀更多有關條件路線在這裏: http://www.sinatrarb.com/intro#Conditions