2012-08-11 3 views
0

배치에 capistrano를 사용하고 있습니다. 내가하는 작업을 정의하기 위해 노력하고있어 :Capistrano : 별도의 프로젝트에서 실행 중입니다

cd other-rails-app && bundle exec rake sometask 

을하지만 (분명 내가이 작업을 실행하려고하고있는 프로젝트의 사실이 아니다) 번들의 레이크되지 않는 부분에 대해 불평. 나는 명령을 실행하기 전에 어떻게 든 환경을 변경해야하고 bundler가 이미로드되었다고 가정해야한다고 생각합니다 (이것은 capistrano 태스크에서 사실이지만 잘못된 Gemfile입니다).

깨끗한 환경에서 capistrano를 사용하여 로컬로 명령을 실행하려면 어떻게해야합니까?

답변

0

문제점을 파악했습니다. capistrano를 실행하면 BUNDLE_GEMFILE 환경 변수가 현재 프로젝트의 Gemfile로 설정됩니다. 그래서 bundle exec rake을 실행할 때 Bundler는 먼저 환경에서 설정된 Gemfile을 찾습니다. 해결책은이 Gemfile 변수를 "재설정"하는 것입니다. 다른 프로젝트의 루트에서 레이크 작업을 실행하기위한 스크립트를 만들었습니다.

그래서 대신 일 :

run_locally "cd other-rails-app && bundle exec rake mytask" 

을 나는이 작업을 수행 :

#!/usr/bin/env ruby 

ENV['BUNDLE_GEMFILE'] = File.expand_path('Gemfile', File.dirname(__FILE__)) 
require 'bundler/setup' 

%x{rake mytask} 
다음 mytask.rb 파일에서

run_locally "cd other-rails-app && ./mytask.rb" 

내가 이렇게

관련 문제