2010-11-29 2 views
1

부울 리터럴을 사용하여 메소드를 호출 할 때 의도에 대해 아무 말도하지 않는 메소드를 호출하는 것이 싫지만 다음과 같이 내 eruby 템플릿에서 상수를 정의하려고했습니다. <% NO_NIL_PADDING = false %>in_groups_of. 그러나 동적 상수 지정 오류가 발생했습니다. 이 문제를 해결할 수있는 방법은 없나요? 아마도 어딘가에서 환경 상수를 정의 할 수는 있지만, 상수 정의를 가능하면 더 많이 사용하여 그 정의를 상위 레벨로 옮기기 시작할 때까지 상수 정의를 유지하는 것을 선호합니다. 당신이 그것을 일으키는 원인이 될 수있는 템플릿에 일을하지만, 단지 일정한 나를 위해 작품 설정하는 다른 모르는레일에서 eRuby 템플릿에 상수를 정의 할 수 있습니까?

답변

0

: 보조 노트에

ruby-1.8.7-p249 > template = ERB.new "<% DONT_SET_CONSTANTS_IN_VIEWS = false %>" 
=> #<ERB:0x100485890 @src="_erbout = ''; DONT_SET_CONSTANTS_IN_VIEWS = false ; _erbout", @filename=nil, @safe_level=nil> 
ruby-1.8.7-p249 > template.result(binding) 
=> "" 

을하지만, 내가 좋겠 강력하게을 권장하지 않습니다. 작년에 많은 코드를 상속받은 사람으로서, 자신과 잠재적으로 다른 사람에게 심각한 두통을 느끼고 있습니다. 비즈니스 논리 당 실제로 변경 될 가능성이있는 옵션이 있습니까? 나는 정상적인 기본값을 선택하고 그냥 사용하려고합니다. 다른 곳에서 사용되지 않는다면 왜 상수를 만드나요?

+0

'@ some_list.in_groups_of (2, false) '대신에'@ some_list.in_groups_of (2, NO_NIL_PADDING)'를 쓰고 싶습니다. – Sam

+1

다음과 같은 옵션에 대한 상수를 포함하는 이니셜 라이저에 클래스를 만듭니다. 그. 그렇게하면 어디에서 변경해야하는지 항상 알 수 있으며 유지 관리가 가능하며 동적 상수 할당 문제를 피할 수 있습니다. – karmajunkie

관련 문제