3

default.rb이라는 이름의 속성 파일에 문자열 형식의 dir을 저장하는 default['current'] 키가 있습니다. 나는 디렉토리를 변경할 때 사용하려면 다음 명령이 사용하고 싶었 : 나는 다음과 같은 오류가 발생했습니다 제조법을 실행하는 대신요리사 레시피 내에서 속성 참조하기

# Run database migrations 
execute 'database migrations' do 
    user 'ubuntu' 
    cwd  "#{default['current']}" 
    command 'sudo php artisan down && sudo php artisan migrate --force && sudo php artisan up' 
end 

.

NameError 
--------- 
No resource, method, or local variable named `default' for `Chef::Recipe "deploy"' 

내가 할 수있는 적절한 방법이 있습니까? 오히려 작업 디렉토리에 하드 코드를 작성하는 것이 좋습니다. 속성은 조리법에서 참조

답변

3

, 우리는 다음과 같이 node로 접두사해야합니다 또한

cwd  node['current'] 

참조 :이 나타납니다 Overriding attributes in the recipe

+0

그래, 이거 잘됐다. 나는 default가 node.default의 짧은 손일 뿐이라고 생각했다. – WhyAyala

+1

레서피에서 노드 [ "variable"]가 반드시 기본값을 갖지는 않습니다 –

+1

@JonMalachowski는 자세히 설명하겠습니까? – WhyAyala

0

대답 할 수 있습니다. 하지만이 설명서 (IMO)의 핵심 부분에 대한 링크를 보지 못했습니다. 여기 모두 있습니다 : https://docs.chef.io/attributes.html

+0

고맙지 만 확인 된 답변에서 묻는 질문으로 돌아갑니다. 나는'default [ 'attribute']'가'node.default [ 'attribute']'와 같았고 문서에 따르면'node'가 포함되지 않았다면 암시되어서'node '나를 그 속성을 참조하기 위해서? 레코드의 경우 node.default [ 'attribute']를 사용하여 참조를 수행 할 수있었습니다.이 노드는 node [ 'attribute'] '로 업데이트되기 전에 주어진 응답이었습니다. – WhyAyala

+0

레시피에서 변수를 사용할 때 (읽는 중) 'node [ "attribute"]'를 사용해야합니다. 변수/환경 변수/환경 변수에 변수를 쓸 수 있습니다. 속성이 환경/변수/래서 피 기본값은 사용자가 정의하고있는 레벨을 선택합니다. 런타임시 최종 노드 속성 hashmap은 [해당 링크에 나열된] 연속 순서로로드하여 계산됩니다. –