2011-11-27 1 views
0

번들 exec는 번들의 컨텍스트에서 명령을 실행합니다."bundle exec rake db : migrate"는 무엇을합니까? 내 연구에서

어쨌든, 나는 단지 bundle exec rake db:migrate과 비교했을 때 rake db:migrate 명령과 다른 점이 무엇인지 아직 이해하지 못했습니다.

내 경우 예를 들어, 나는 첫 번째 명령을 실행하고, 제가했던 다음과 같은 오류가있어 :

$ rake db:migrate 
(in c:/rails/rails_projects/soccerweb) 
rake aborted! 
uninitialized constant Rake::DSL 
c:/Ruby192/lib/ruby/1.9.1/rake.rb:2482:in `const_missing' 
c:/Ruby192/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/tasklib.rb:8:in `<clas 
s:TaskLib>' 
c:/Ruby192/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/tasklib.rb:6:in `<modu 
le:Rake>' 
c:/Ruby192/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/tasklib.rb:3:in `<top 
(required)>' 
c:/Ruby192/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/testtask.rb:4:in `requ 
ire' 
c:/Ruby192/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/testtask.rb:4:in `<top 
(required)>' 
c:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.1.1/lib/rails/test_unit/testing.r 
ake:2:in `require' 
c:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.1.1/lib/rails/test_unit/testing.r 
ake:2:in `<top (required)>' 
c:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.1.1/lib/rails/test_unit/railtie.r 
b:12:in `load' 
c:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.1.1/lib/rails/test_unit/railtie.r 
b:12:in `block in <class:TestUnitRailtie>' 
c:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.1.1/lib/rails/railtie.rb:183:in ` 
call' 
c:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.1.1/lib/rails/railtie.rb:183:in ` 
block in load_tasks' 
c:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.1.1/lib/rails/railtie.rb:183:in ` 
each' 
c:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.1.1/lib/rails/railtie.rb:183:in ` 
load_tasks' 
c:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.1.1/lib/rails/engine.rb:396:in `b 
lock in load_tasks' 
c:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.1.1/lib/rails/application/railtie 
s.rb:8:in `each' 
c:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.1.1/lib/rails/application/railtie 
s.rb:8:in `all' 
c:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.1.1/lib/rails/engine.rb:396:in `l 
oad_tasks' 
c:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.1.1/lib/rails/application.rb:103: 
in `load_tasks' 
c:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.1.1/lib/rails/railtie/configurabl 
e.rb:30:in `method_missing' 
c:/rails/rails_projects/soccerweb/Rakefile:7:in `<top (required)>' 
c:/Ruby192/lib/ruby/1.9.1/rake.rb:2373:in `load' 
c:/Ruby192/lib/ruby/1.9.1/rake.rb:2373:in `raw_load_rakefile' 
c:/Ruby192/lib/ruby/1.9.1/rake.rb:2007:in `block in load_rakefile' 
c:/Ruby192/lib/ruby/1.9.1/rake.rb:2058:in `standard_exception_handling' 
c:/Ruby192/lib/ruby/1.9.1/rake.rb:2006:in `load_rakefile' 
c:/Ruby192/lib/ruby/1.9.1/rake.rb:1991:in `run' 
c:/Ruby192/bin/rake:31:in `<main>' 

을하지만 난 그 앞의 "번들 간부"사용했을 때 명령을 "레이크 DB를 마이그레이션" 모든 것이 정상적으로 나를 위해 일했습니다!

누구나 나를 밝힐 수 있습니까?

+0

가능한 중복 (레일 같은 RSpec에, rackup를) 실행 파일이 들어있는 디렉토리를 넣어 : migrate mean?] (http://stackoverflow.com/questions/6588674/what-does-bundle-exec-rake-dbmigrate-mean) –

답변

5

bundle exec rakeGemfile에 지정한 rake 버전을 실행합니다. rake의 기본 버전은 $PATH에서 찾을 수 있으며 bundle exec rake과 다를 수 있습니다.

발생한 문제는 separate question에 있습니다. bundle exec rake은 아마도 rake 0.8.7을 실행하고 $PATHrake은이 문제의 영향을받는 최신 버전입니다.

man bundle exec에서 인용 :

번들 간부 쉘 환경에 많은 변화를 만들어, 당신은 전체에서 지정한 명령을 실행합니다.

  • (...)는
  • 는 $의 PATH에 번들 [무엇을 번들 간부 레이크 dB의
0

번들러는 보석 의존도를 해결합니다. rationale 페이지에서 가장 적합한 설명을 찾을 수 있습니다.