Migracja z innego miejsca niż katalog projektu

Potrzebuje zrobić z automatu(skryptu) migrację bazy (rake db:migrate). Aby skrypt był uniwersalny chciałbym
aby nie musiał być uruchamiany z katalogu projektu tylko z dowolnego miejsca.

Znalazłem przy rake opcję -f dzięki ktorej podaje położenie pliku Rakefile,

rake db:migrate -f /home/user/aplikacja/Rakefile

Takie wywołanie nie zgłasza błędów ale też nie wykonuje migracji.
Jak inaczej to rozwiązać aby wykonywać migrację skryptem z dowolnego miejsca na serwerze?

Dziwne jakieś to. Ale może napisz jakiś skrypt konsolowy, który znajdzie się w PATH

cd ' katalog/z/projektem' && RAILS_ENV='cos' rake db:migrate

Ale to jakieś dziwne? Czemu z dowolnego miejsca chcesz to robic?

Chce wszystko robić ze skryptu rubego,
jednak polecenie

`cd /home`

zwraca

 command not found: cd /home

Mogę to zrobić przez: system ale gdzieś czytałem, że lepiej robić przez ``

Nie bardzo wiem dlaczego potrzebujesz uniwersalności, żeby to można było odpalać wszędzie. Pewnie masz swoje powody. Mi się jednak wydaje, że skoro skrypt dotyczy projektu i migracja też go dotyczy, to ja bym zrobił to w projekcie, jako generator

Możesz pokazać jakiś szkic Twojego pomysłu?

bober0, ale właściwie czemu potrzebujesz takiego rozwiązania?

Chciałem jednym skryptem robić wrzucanie na serwer plików, migracje, restart aplikacji itp.
Próbowałem capistrano ale nie bardzo mi przypadło go gustu. Już wszystko mam tylko jeszcze te migracje.

Próbowałeś innych rozwiązań niż Capistrano? http://www.ruby-toolbox.com/categories/deployment_automation.html lepiej chyba sprawdzić dostepne opcje niż forsować swoje rozwiązania.

[quote=bober0]Chciałem jednym skryptem robić wrzucanie na serwer plików, migracje, restart aplikacji itp.
Próbowałem capistrano ale nie bardzo mi przypadło go gustu. Już wszystko mam tylko jeszcze te migracje.[/quote]
Moja teoria:

To co opisujesz robi właśnie Capistrano i - z moich doświadczeń - robi to świetnie. Co Ci w nim nie odpowiada?

Moje pytanie nie było na temat wyższości używania Capistrano nad nie używaniem, tylko na temat odpalenia rake, na przykład z migracją,
z innego katalogu.

Też uważam, że lepiej ustawić capistrano, ale jak już musisz, to jest opcja -f (rake -f path/to/Rakefile), zobacz też rake --help, może okazać się pomocne.

Tak jak napisałem w pierwszym poście użyłem rake -f i żadna migracja nie poszła :frowning:

Sorry, nie spojrzałem. W takim razie nie mam pojęcia o co chodzi.

A próbowałeś ze ścieżka do rake i aplikacji?

[code]ENV[‘RAILS_ROOT’] ||= “/home/user/aplikacja/”
ENV[‘RAKE_PATH’] ||= “/usr/local/bin/rake”

“#{ENV[‘RAKE_PATH’]} -f #{ENV[‘RAILS_ROOT’]}/Rakefile db:migrate”[/code]

[quote=tjeden]A próbowałeś ze ścieżka do rake i aplikacji?

[code]ENV[‘RAILS_ROOT’] ||= “/home/user/aplikacja/”
ENV[‘RAKE_PATH’] ||= “/usr/local/bin/rake”

“#{ENV[‘RAKE_PATH’]} -f #{ENV[‘RAILS_ROOT’]}/Rakefile db:migrate”[/code]
[/quote]
tak nie próbowałem, ale spróbuje :slight_smile: