2014-12-31 14 views
9

내 Rails 응용 프로그램의 루트 디렉토리에 CD-ROM을 넣지 않고 해당 응용 프로그램에 대해 Rails 또는 Rake 명령을 어떻게 수행 할 수 있습니까? 다른 디렉토리에서 Rails/Rake를 실행하려면 어떻게해야합니까?

내가 시도 :

bundle exec rake my_tasks:do_stuff BUNDLE_GEMFILE=/PATH/TO/RAILS_APP/Gemfile 

을 다른 조합들, 아무 소용.

[업데이트]

문제가 gemfile이며 레이크 실행 해야할지하지 않는 경우 실제로는 두 배, 번들 모르는 것입니다.

은 Bundler 프로그램을 사용하려면 : BUNDLE_GEMFILE은 '번들 간부'전에 가야

BUNDLE_GEMFILE=/PATH/TO/RAILS_APP/Gemfile bundle exec ... 

참고. 다른 디렉토리에서 레일 콘솔을 입력하는 방법을 알아 내기 위해

???? 

아직 유무 :

rake -f /PATH/TO/RAILS_APP/Rakefile my_task:do_stuff 

가 레일 콘솔을 사용하려면 :

는 레이크를 사용합니다. source에서 보면 레일스 프로세스를 시작하기 위해 결국 File.join ('script', 'rails')을 수행하기 때문에 가능하지 않을 수도 있습니다.

+0

[여러 좋은 대답은 여기에있다] (http://stackoverflow.com/questions/1206545/run-rake-task-from-outside-rails-root)하지만 최선의 대답은 당신이 ' 그렇게하지 마라 :-). 가능하다면 레이크 호출에서 참조 된 모든 단일 경로가 호출 된 레이크 작업 내에서도 작업이 실행되는 디렉터리에 고정 될 것으로 예상되므로 혼동을 일으킬 수 있습니다. –

+0

좋은 지적입니다, 톰. Bill이 말했듯이, 업무는 CWD 불가 지론이어야합니다. 작은 작업의 경우에는 문제가되지 않습니다. 감사! – Nejuf

답변

10

오류 메시지가 표시되지 않으면 Rake보다 Bundler와 관련이 적다고 가정합니다. rake 명령을 실행하면 현재 디렉토리에서 시작하여 트리를 찾을 때까지 트리를 탐색하는 Rakefile을 검색합니다. rake 명령의 옵션에 명시 적으로 Rakefile을 지정하여이 동작을 무시할 수 있습니다. 이 작업은 -f <RAKEFILE> 옵션을 사용하여 수행됩니다.

예 :

bundle exec rake -f /PATH/TO/RAILS_APP/Rakefile -T 

레이크 작업은 "CWD에 대해 알 수 없음"이어야합니다. 대부분의 작업과 스크립트는 디렉토리 트리의 알려진 파일에 상대적인 경로를 기반으로 프로젝트 디렉토리를 얻는 경향이 있습니다. 아마도 이미 이해하고 있을지 모르겠지만 작업에서 현재 작업 디렉토리가 실제로 레일 루트가 될 것으로 예상 할 경우에 대비하여 언급 할 가치가 있습니다. 프로젝트 외부에서 프로젝트를 실행하면 잠재적으로 위험 할 수 있습니다.

+0

감사합니다. 실제로 문제는 두 가지입니다. 번들은 gemfile을 찾을 수 없으며, 레이크에는 올바른 컨텍스트가 없습니다. 당신의 대답은 갈퀴 부분을 고쳤습니다, 고마워요! 나는 결과를 반영하기 위해 나의 대답을 편집 할 것이다. – Nejuf