为什么此代码在Heroku中的工作方式不同?

时间:2012-11-30 11:32:54

标签: ruby heroku ruby-on-rails-3.2

即使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

1 个答案:

答案 0 :(得分:1)

我认为这是与正在运行的Ruby版本相关的问题。我可以在我的本地机器上使用rvm在ruby-1.9.2-p320下复制同样的问题。

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

你能确认你在运行哪个Heroku堆栈吗?要执行此操作,只需登录heroku,然后运行以下

heroku stack -a yourappnamehere

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