2010-02-01 1 views
4

저는 capistrano-ext 보석의 다단계 모듈에 대해 다양한 범위의 문제를 겪고 있습니다. 현재 config/deploy/staging.rb에 있습니다.Capistrano configuration

set(:settings) { YAML.load_file("config/deploy.yml")['staging'] } 

set :repository, settings["repository"] 
set :deploy_to, settings["deploy_to"] 
set :branch,  settings["branch"] 
set :domain,  settings["domain"] 
set :user,  settings["user"] 

role :app, domain 
role :web, domain 
role :db, domain, :primary => true 

config/deploy/production.rb 파일은 유사합니다. 이것은 매우 건조하지 않습니다. 이상적으로는 모든 것을 deploy.rb 파일에 넣고 싶습니다. 현재 단계에서 변수 세트가 있으면 모든 것이 정말 깨끗합니다.

업데이트 : 해결책을 찾았습니다.

나는 deploy.rb이 함수를 정의 :
def set_settings(params) 
    params.each_pair do |k,v| 
    set k.to_sym, v 
    end 
    if exists? :domain 
    role :app, domain 
    role :web, domain 
    role :db, domain, :primary => true 
    end 
end 

그런 다음 내 staging.rb 파일은 set_settings(YAML.load_file("config/deploy.yml")['staging'])

답변

0

이 deploy.rb

+0

'$ cap staging deploy'를 입력하고 작동하도록 할 수있는 방법이 없습니까? – Eli

2

당신이 지나치게 복잡하게 만들고있어에서 CAPDEV='staging' cap deployENV['CAPDEV']을 시도합니다.// staging.rb, production.rb를, 배포 등 파일을

role :app, domain 
role :web, domain 
role :db, domain, :primary => true 

과 설정에 단계에 의존 설정 :

은 그냥 deploy.rb 파일로 공통 코드를 넣습니다. 당신이 말한 것처럼

그런 다음, 캡 배포를 실행 캡 준비뿐만 아니라 일반 변수를 사용할 수 있습니다

귀하의 stage.rb 파일을 배포 할 수 있습니다.

세트 : deploy_to

나머지는 deploy.rb에

+0

우리는 이것을 성공적으로 수행했습니다. – Tilendor

0

엘리,

이다 "_staging은/var/www /에서 # {도메인}"예를 들어, 내 준비 파일은 하나 개의 라인을 가지고

예, 캡 스테이지 준비 작업을 수행 할 수 있습니다. 배포 파일의 맨 위에서이 작업을 수행하십시오.

set :deploy_env, ARGV[0].to_sym 

또는 원하는 경우 기호가 없습니다. 그러나 이것이 실행과 같은 단순한 환경을위한 환경을 요구할 수도 있다는 것에주의하십시오.

cap -vT