以下内容适用于本地:
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 :(得分:2)
确保您在heroku和本地开发机器上使用相同版本的ruby:
在本地和heroku上运行ruby -v
:heroku run 'ruby -v'
然后,通过向您的Gemfile添加ruby "1.9.3"
来设置ruby heroku使用的版本。
答案 1 :(得分:0)
原因是方法rand在(我相信)1.9.3之后才开始接受范围值。 Heroku使用Ruby 1.9.1。您可以通过查看heroku日志来验证这一点。您只需设计一种使用整数值而不是范围值的方法。