Czy istnieje sposób na przekazanie pliku ruby, foo.rb do konsoli railsów . Oczekiwane rezultaty nastąpią po uruchomieniu przez konsolę środowiska railsów w celu uruchomienia pliku.
Lub w jakikolwiek inny sposób, który pozwoliłby mi uruchomić plik w środowisku railsowym, uruchamiany z wiersza poleceń.
ruby-on-rails-3
Haris Krajina
źródło
źródło
Odpowiedzi:
Właściwie najprostszym sposobem jest uruchomienie go z
load
wewnątrzrails console
źródło
Możesz użyć
AKTUALIZACJA:
To, czego ostatnio używamy, to ładowanie środowiska railsów z poziomu samego skryptu. Rozważ
doit.rb
:Działa to również, jeśli skrypt lub bieżący katalog roboczy nie znajdują się w katalogu aplikacji railsowej.
źródło
f=File.new('path/to/file')
do uruchomienia użyj:f.rewind; eval f.readlines.join("\n");
eval(File.read ...)
już tej części. Railsy akceptują plik Ruby jako argument dorails runner
:Usage: rails runner [options] [<'Some.ruby(code)'> | <filename.rb>]
rails r path/to/filename.rb
to , że jest funkcjonalnym odpowiednikiem powyższegobundle exec rails runner
polecenia.W międzyczasie to rozwiązanie było obsługiwane.
Teraz dużo prostsze.
źródło
prosty, brudny i blokuje proces na końcu, ale działa dokładnie tak, jak chciałem.
źródło
Rozważ utworzenie zadania prowizji.
Na przykład dla kodu, którego potrzebuję do tworzenia rekordów lub obsługi migracji, często tworzę zadanie prowizji na podstawie tej odpowiedzi . Na przykład:
W
lib/tasks/example.rake
:A potem w terminalu uruchom:
źródło
Z tych podejść wspomnianych wcześniej, żadne nie wydawało się czyste i idealne, jak można by oczekiwać, że samodzielny skrypt będzie działał (nie zostanie poddany ewaluacji ani potokiem przez <przekierowanie), ale w końcu działa to idealnie dla mnie:
(dla szyn 3)
Wstaw na górze skryptu:
Oczywiście ustaw własną ścieżkę do aplikacji Railsów w linii APP_PATH.
W ten sposób mogę uniknąć konieczności wprowadzania jakichkolwiek interaktywnych
irb
lubrails c
i mogę przetestować mój skrypt.rb z poziomu zachęty powłoki, zanim np. planowanie w crontab.Płynnie obsługuje również parametry wiersza poleceń i minimalizuje poziomy opakowań przed przejściem do kodu.
KREDYT (pokazuje również przykład Rails 2)
http://zerowidth.com/2011/03/18/standalone-script-runner-bin-scripts-in-rails.html
źródło
Oto hack, którego używam:
Przykład:
Na podstawie odpowiedzi @ moritz tutaj. Zmieniłem to, ponieważ katalog roboczy dla
File.read
jest katalogiem głównym projektu Rails.Wiem, że to poważna herezja, polegająca na używaniu Pythona do pomocy skryptowi rubinowemu. Ale nie mogłem znaleźć
relpath
metody wbudowanej w rubin.Kredyt:
relpath()
został wzięty z @MestreLion, Konwertuj ścieżkę bezwzględną na ścieżkę względną podając bieżący katalog za pomocą Bashźródło