Условия Синатры - PullRequest
       2

Условия Синатры

5 голосов
/ 14 августа 2011

Изучив рубин около месяца, я решил перейти к Синатре. Мне нужна помощь в понимании фрагмента Синатры, который иллюстрирует условия и маршрутизацию. Может ли кто-нибудь четко объяснить, что происходит построчно и как этот блок фактически рандомизирует маршрут?

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 Ответ

7 голосов
/ 14 августа 2011

Общее поведение этого приведет к тому, что первый маршрут будет загружен примерно в 10% времени, а второй маршрут будет загружен в остальное время.

Первый маршрут использует условие, установленное с помощью вероятности. вероятность, установленная выше, пройдет его значение и проверит, чтобы увидеть, является ли случайное число между 0-1 меньше, чем это значение вероятности. Поскольку значение равно 0,1, оно вернет истину в 10% случаев.

Остальные 90% времени будет вызван второй маршрут. Более ранние маршруты имеют преимущество, будет вызван первый действительный найденный маршрут.

Если вы хотите установить вероятность в другой настройке, вам нужно будет отложить оценку вероятности с помощью Proc.

Подробнее об условных маршрутах читайте здесь: http://www.sinatrarb.com/intro#Conditions

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...