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 とローカル dev マシンで同じバージョンの ruby​​ を使用していることを確認します。

ruby -vローカルおよび heroku で実行:heroku run 'ruby -v'

次に、Gemfile に追加ruby "1.9.3"して、heroku が使用する ruby​​ のバージョンを設定します。

于 2013-04-19T03:39:09.080 に答える
0

この理由は、メソッド rand が範囲値の受け入れを開始したのは (私が信じている) 1.9.3 の後であるためです。Heroku は Ruby 1.9.1 を使用しています。これは、heroku ログで確認できます。範囲値の代わりに整数値を使用する方法を工夫する必要があります。

于 2013-04-22T11:33:02.320 に答える