带有rand()的数组在本地工作但不在heroku上工作

时间:2013-04-19 03:36:57

标签: ruby heroku sinatra

以下内容适用于本地:

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

为什么?

2 个答案:

答案 0 :(得分:2)

确保您在heroku和本地开发机器上使用相同版本的ruby:

在本地和heroku上运行ruby -vheroku run 'ruby -v'

然后,通过向您的Gemfile添加ruby "1.9.3"来设置ruby heroku使用的版本。

答案 1 :(得分:0)

原因是方法rand在(我相信)1.9.3之后才开始接受范围值。 Heroku使用Ruby 1.9.1。您可以通过查看heroku日志来验证这一点。您只需设计一种使用整数值而不是范围值的方法。