0

current_user が存在しない場合でも、このコードを使用してビューに値を設定します。より良い方法を知っている場合は、代わりの bc 多くの方法を提案します。それ以外の場合は例外を発生させます。

def setval_if(valgood, valbad=nil)
  begin
    return valgood if yield
  rescue
  else
  end
end

setval_if("no exception raised") { true }
# => "no exception raised" # my machine, correct.
# => nil # Heroku

しかし、この汚いハックを追加すると、herokuでも機能します

def setval_if(valgood, valbad=nil)
  begin
    return valgood if yield
    puts "suca vaff.."
  rescue
  else
  end
end

setval_if("no exception raised") { true }
# => "no exception raised" # my machine, correct.
# => "no exception raised" # Heroku

なぜなぜなぜ???? :D

4

1 に答える 1

1

これは、実行されている Ruby のバージョンに関連する問題だと思います。ruby-1.9.2-p320 の rvm を使用して、ローカル マシンでこの同じ問題を再現できます。

アプリの 1 つに対して Heroku でコードを実行しましたが、エラーは発生しませんでした。その特定のアプリは ruby​​-1.9.3-p194 で実行されていました

どの Heroku スタックで実行しているか確認できますか? これを行うには、heroku にログインしてから、次のコマンドを実行します。

heroku stack -a yourappnamehere

最新の heroku スタックでテストを実行しました。杉。

于 2012-11-30T14:55:01.157 に答える