0

以下在本地工作:

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

为什么?

4

2 回答 2

2

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

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

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

于 2013-04-19T03:39:09.080 回答
0

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

于 2013-04-22T11:33:02.320 回答