2011-11-22 3 views
5

루비 시스템 호출로 번들 설치를 실행할 수 있습니까? 내가 다른 경로에서 프로젝트에 대한 보석 및 실행 테스트를 설치하기 위해 노력하고있어CLI/Ruby 시스템 콜을 통한 번들 설치

...

예를 들어 명령은 다음과 같습니다

"cd /some/other/project && bundle install && gem list && rspec spec" 

가 이상적으로 단지를 통해 테스트를 실행하려면 레이크 파일을 하나의 프로젝트에 저장하고 해당 프로젝트의 관련 보석을 설치해야합니다. 그것은 올바른 경로를 제공 않습니다

"cd /some/other/project && pwd" 

:

CD가 내가 실행하는 경우, 제대로 작동하는 것 같군. 하지만 & & gem 환경을 번들로 설치하면 현재 폴더에 대한 보석을 설치하는 것으로 보이며 다른 프로젝트의 Gemfile을 사용하지 않고 rspec 사양이 작동하지 않습니다.

rakefile 내의 다른 프로젝트에서 'rspec spec'을 실행하는 가장 좋은 방법은 무엇인지 요약하면 관련 보석을 사용할 수 있습니다.

답변

0

편집 : 내가 알아 낸 것 같습니다. 이 당신을 위해 작동하는지 확인 :

#@pwd is the "working directory of the execution... 

Dir.chdir @pwd do 
    so = "" 
    vars = { 
     "BUNDLE_GEMFILE" => nil, 
     "BUNDLE_BIN_PATH" => nil, 
     "RUBYOPT" => nil, 
     "rvm_" => nil, 
     "RACK_ENV" => nil, 
     "RAILS_ENV" => nil, 
     "PWD" => @pwd 
     } 
    options = { 
      :chdir=>@pwd 
      } 
    Open3.popen3(vars, cmd, options) do |stdin, stdout, stderr| 
    stdin.close_write 
    so = stdout.read 
    so = stderr.read if so.nil? || so == "" 
    end 

    so 
end 

원본 게시물 : 을 나는이 내 머리를 찢어하고 있습니다. 설치를 | | 내가이 번들 간부 함께 할 수있는 뭔가가 생각 갱신 응용 프로그램을 시작할 때 환경 변수를 설정, 내가 사용하는 시도

bash -c "cd ../other/; bundle install; and it fails" 을 시도 open3.popen ("번들 설치"CHDIR = > "../ other")

위안이라면 위안이 아니지만 해결 방법을 찾지 못하는 것 같습니다.

제가 또한 open3.popen 시도 ("번들 설치"{CHDIR = "> ../ 다른": unsetenv_others => 거짓}) 그러나 이것은 시스템 경로에서 RVM 제거까지 끝난다;

0

kangguru의 대답 이외에, 당신이해야 할 수도 있습니다 : 나는 구글 그룹에 대한 답을 통해 발견

Bundler.with_clean_env do 
    system "shell out" 
end  

do

bundle install --deployment 

그래서 Bundler.with_clean_env가 rvm에 의해 엉망이되지 않도록하십시오. 이것은 프로젝트의 루트에있는 .vendor/bundle에 모든 젬의 사본을 설치하고 Bundler.with_clean_env 명령에 의해 선택됩니다.

가 (주석으로이를 넣어 을까하지만 50 개 이상의 평판이없는)

+0

하를, 그냥 내가 @easyjo와 함께 작동하는 데 사용 깨달았다. 그것은 작은 stackoverflow 세계 – xavriley