2014-12-31 39 views
9

Bez wpisywania do katalogu głównego mojej aplikacji Rails, jak mogę wykonać polecenie Railsy lub Prowizja dla tej aplikacji.Jak uruchomić Railsy/Rake z innego katalogu?

Próbowałem:

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

wśród innych kombinacji, bezskutecznie.

[Aktualizacja]

Problem jest rzeczywiście dwojaka, wiązka nie wie, gdzie jest gemfile grabie i nie wie, co do uruchomienia.

Aby korzystać Bundler:

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

Zauważ, że BUNDLE_GEMFILE musi iść przed 'bundle exec'.

Aby korzystać Zgrabiarka:

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

Aby użyć konsoli szyn:

???? 

zostały jeszcze dowiedzieć się, jak wejść do konsoli Rails z innego katalogu. Patrząc na source, myślę, że to może nie być możliwe, ponieważ w końcu robi File.join ("skrypt", "szyny"), aby rozpocząć proces szyn.

+0

Istnieje kilka dobrych odpowiedzi tutaj (http://stackoverflow.com/questions/1206545/run-rake-task-from-outside-rails-root), ale myślę, że najlepszą odpowiedzią jest prawdopodobnie to, że nie powinieneś. t to :-). O ile to możliwe, w końcu odkryjesz, że każda pojedyncza ścieżka, do której odwołuje się wywołanie rake, a nawet w wywołanych zadaniach rake'owych, wpada w pomieszanie, ponieważ spodziewają się zakotwiczenia w katalogu, z którego uruchamiane jest zadanie. –

+0

Dobra uwaga, Tom. Tak jak mówi Bill, zadania muszą być agnostyczne wobec CWD. W przypadku małych zadań nie powinno to stanowić problemu. Dzięki! – Nejuf

Odpowiedz

10

Bez wyświetlania komunikatu o błędzie, zakładam, że ma mniej wspólnego z programem Bundler niż z Rake. Po uruchomieniu polecenia rake, wyszukuje Rakefile zaczynając od bieżącego katalogu i przechodząc przez drzewo aż do znalezienia. Możesz zmienić to zachowanie, jawnie określając plik Rakefile w opcjach polecenia rake. Odbywa się to za pomocą opcji -f <RAKEFILE>.

np.

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

Pamiętaj, że Twoje zadania prowizji muszą być "agnostyczne dla CWD". Większość zadań i skryptów polega na tym, że pobierają katalog projektu na podstawie ścieżki względem znanego pliku w drzewie katalogów. Prawdopodobnie już to rozumiesz, ale warto o tym wspomnieć, jeśli zadania oczekują, że bieżący katalog roboczy rzeczywiście będzie katalogiem głównym rails. Byłby to przypadek, w którym uruchomienie ich spoza projektu mogłoby być potencjalnie niebezpieczne.

+0

Dzięki temu problem był dla mnie podwójny: pakiet nie mógł znaleźć pliku gem, a rake nie miał odpowiedniego kontekstu. Twoja odpowiedź naprawiła część rake, dzięki! Będę edytować moją odpowiedź, aby odzwierciedlić wyniki. – Nejuf