application_ruby 요리 책을 사용하여 Rails 앱을 배포하려고합니다. 몇 가지 일회성 설정 작업 (예 : rake db:seed
을 사용하여 데이터베이스 시드)을 실행해야합니다. 이 작업은 이후의 요리사가 진행하는 동안에는 수행하지 않아야합니다. 이러한 작업을 정의하는 올바른 방법은 무엇입니까?응용 프로그램 요리 책을 사용할 때 설치 활동을 실행하는 방법은 무엇입니까?
답변
나는이 조건은 다음과 같이 실행 사용 된 해결 방법은 :
execute "seed database" do
cwd node[:release_path]
user node[:owner]
environment ({'RAILS_ENV' => node[:environment]})
command "bundle exec rake db:seed && touch #{node[:deploy_path]}/db.seeded"
not_if { ::File.exists?("#{node[:deploy_path]}/db.seeded") }
end
이 확실히 설정 단계는 한 번만 발생합니다.
시도해보십시오. after_party gem.이 방법은 마이그레이션과 같은 많은 rake 태스크 (당신이 말하는 것)를 실행합니다. 즉, 두 번 실행하지 마십시오. 그럼 당신은 당신이 seed_fu으로 시도 할 수 있습니다 씨앗 목적을 위해 당신이 (마이그레이션과 같은) 새로운 하나를 작성해야이 레이크 작업 중 하나에 의해 이전에 실행 된 것을
을 변경하려면 것을 명심해야합니다. 제약 조건 사용하기 기술. 이것은 내가 생각하기에는 시드에 대해 올바른 것으로 생각되지만 seed_fu 구문을 사용합니다.
어떤 사람들 은 마이그레이션시 씨앗이나 데이터를 넣습니다. (저는 싫어합니다). this question/answer을보십시오. 이것은 내가 믿는 것입니다, 마이그레이션과 함께 최악의 병합 씨앗은 좋은 생각이 아닙니다. 종자의 변화는 새로운 이주를 의미하며 환경에 따라 변화하는 종자는 거의 불가능합니다.
이러한 정보를 제공해 주셔서 감사합니다. 나는 그 자체로 애플 리케이션을 만지지 않고 로직을 배포 레서피로 옮기는 것을 선호 할 것이다. – Emil
시드에 대한 새 레코드가 필요할 때 어떻게합니까? 전의. 새 admin_user, 국가 등? # {node [: deploy_path]}/db.seeded 파일과 요리사 요리사를 삭제 하시겠습니까? – montells
그러면 더 이상 일회성 설정 작업이 아닙니다. 이것은 어떤 방식 으로든 마이그레이션에 묶일 수 있습니다. 내 관심사는 한 번만 수행해야 할 단계가 더 많았습니다. – Emil