0

即使 current_user 不存在,我也使用此代码在视图中设置值。如果您知道更好的方法,建议您使用另一种方法,否则我会使用引发异常。

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 复制同样的问题。

我在 Heroku 上针对我的一个应用程序运行代码,但没有发生错误;该特定应用程序在 ruby​​-1.9.3-p194 上运行

你能确认你在哪个 Heroku 堆栈上运行吗?为此,只需登录 heroku,然后运行以下命令

heroku stack -a yourappnamehere

我在最新的heroku堆栈下运行了测试;雪松。

于 2012-11-30T14:55:01.157 回答