2012-11-30 3 views
0

이 코드를 사용하여 current_user가없는 경우에도보기에서 값을 설정합니다. 만약 당신이 더 좋은 방법을 알고 있다면 대안의 BC를 제안합니다. 그렇지 않으면 나는 예외를 발생시킵니다.왜이 코드는 Heroku에서 다르게 작동합니까?

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 

하지만이 더러운 해킹을 추가하면 왜 왜 왜

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 

Heroku가

도 작동 ???? : D

답변

1

나는 이것이 실행되고있는 루비의 버전과 관련된 문제라고 생각한다. ruby-1.9.2-p320에서 rvm을 사용하여 로컬 컴퓨터에서 동일한 문제를 재현 할 수 있습니다.

내 앱 중 하나에 대해 Heroku 코드를 실행했지만 오류가 발생하지 않았습니다. 그 특정 응용 프로그램은 루비에서 실행되었다 - 1.9.3-p194

실행중인 Heroku 스택을 확인할 수 있습니까? 단순히에게 Heroku에 로그인이 작업을 수행하려면, 다음 실행 다음

Heroku가 스택 -a yourappnamehere 나는 최신 Heroku가 스택에서 테스트를 실행

; 백향목.

+0

답장을 보내 주셔서 감사합니다. CEDAR에도 있습니다.> ENV [ 'RUBYOPT'] => "-I/app/vendor/bundle/ruby ​​/ 1.9.1/gems/bundler-1.2.2/lib -rbundler/setup "왜 1.9.3을 가지고 있고 나는 루비 1.9.1에 있습니까 ??? – grigio

+0

지연 시간에 죄송합니다. 나는 지난 며칠 동안 그리드 사냥을 해왔다. 1.9.1이 Cedar 스택의 기본 Ruby 버전이어야합니다. 내 Gemfile에 1.9.3을 지정한 것 같습니다. – bigtunacan

관련 문제