2017-05-16 7 views
1

나는 보풀 테스트를 실패 다음과 같은 코드가 조리법을 가지고새로운 루비 1.9 해시 구문 리팩토링 필요

service 'apache' do 
    supports :status => true, :restart => true, :reload => true 
end 

그것은 오류와 함께 실패

Use the new Ruby 1.9 hash syntax. 
    supports :status => true, :restart => true, :reload => true 

하지 않음 새로운 구문이 어떻게 생겼는지 ... 누구든지 도움을받을 수 있습니까?

답변

3

Ruby 버전 1.9에는 키가 기호 인 해시 리터럴에 대한 새로운 구문이 도입되었습니다. 해시 키와 값을 분리하는 "해시 로켓"연산자를 사용

루비 1.9
a_hash = { :a_key => 'a_value' } 

이 구문은 유효하지만 키 심볼이있을 때마다 그으로 쓸 수도 :

a_hash = { a_key: 'a_value' } 

그리고 루비 스타일 가이드는 말한다로 해시 키를 상징 (see) 때, 당신은 루비 1.9 해시 리터럴 구문을 사용하는 것을 선호한다 :

# bad 
hash = { :one => 1, :two => 2, :three => 3 } 

# good 
hash = { one: 1, two: 2, three: 3 } 

그리고 추가로이 힌트 : 동일한 해시 리터럴에서 Ruby 1.9 해시 구문과 해시 로켓을 함께 사용하지 마십시오. 당신이하지 않은 키를 가지고 때 기호는 해시 로켓 구문 (see)에 충실 :

# bad 
{ a: 1, 'b' => 2 } 

# good 
{ :a => 1, 'b' => 2 } 

그래서 당신이 시도 할 수와 :

service 'apache' do 
    supports status: true, restart: true, reload: true 
end 

당신이 Rubocop "방법"무엇을보고 싶은 경우 명령 줄에서이 코드를 실행하면 경고 또는 플래그에 대해서만 코드가 자동 수정됩니다.

rubocop --only HashSyntax --auto-correct 
0
service 'apache' do 
    supports status: true, restart: true, reload: true 
end 

심볼을 키로 사용하면이 새로운 구문을 사용할 수 있습니다.