Условия Синатры
Изучив Руби около месяца, я решил перейти к Синатре. Мне нужна помощь в понимании фрагмента Синатры, который иллюстрирует условия и маршрут. Может ли кто-то четко объяснить, что происходит по строкам и как этот блок на самом деле рандомизирует маршрут?
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 ответ:
Общее поведение этого приведет к тому, что первый маршрут будет загружен примерно в 10% случаев, а второй маршрут будет загружен в остальное время.
Первый маршрут использует условие, установленное через вероятность. вероятность, установленная выше, будет проходить свое значение и тест, чтобы увидеть, если случайный # между 0-1 меньше, чем это значение вероятности. Так как значение равно 0.1, он будет возвращать true 10% времени.
Остальные 90% времени будет вызываться 2-й маршрут. Более ранние маршруты берут предпочтения, будет вызван первый найденный допустимый маршрут.
Если вы хотите задать вероятность в другом параметре, вам нужно будет отложить оценку вероятности с помощью Proc.
Подробнее об условных маршрутах читайте здесь: http://www.sinatrarb.com/intro#Conditions