2013-04-19 3 views
0

следующие работы локально:массив с рандов() работает локально, но не на Heroku

require 'sinatra' 

get '/rand' do 
    ["one", "two", "three"][rand(0..2)] 
end 

Однако на Heroku, я получаю Internal Server Error.

Интересно, что это работает:

get '/rand' do 
    ["one", "two", "three"][rand(2) - 1] 
end 

Почему?

+0

и что в ваших журналах heroku, когда вы получаете внутреннюю ошибку сервера? https://devcenter.heroku.com/articles/logging#log-retrieval – kch

+0

Попробуйте [образец массива # образец] (http://ruby-doc.org/core-2.0/Array.html#method-i-sample) метод –

ответ

0

Причина этого метода: rand только начал принимать значения диапазона после (я считаю) 1.9.3. Heroku использует Ruby 1.9.1. Вы можете проверить это, посмотрев журналы heroku. Вам просто нужно разработать способ использования целочисленного значения вместо значения диапазона.

2

Убедитесь, что вы используете ту же версию рубин на Heroku и вы местный DEV машина:

Run ruby -v локально и на Heroku: heroku run 'ruby -v'

Затем установить версию рубин Heroku использует по добавив ruby "1.9.3" в ваш Gemfile.

Смежные вопросы