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