In meiner Schienen 4.x-Anwendung auf einem Mac, nenne ich Rake Routen, und ich bekomme die folgende Ausgabe:Wie kann man die Ausgabe von Rake-Routen auf URI-Muster- und Controller-Aktionsspalten beschränken?
Raw Ausgabe (ohne awk):
> bundle exec rake routes
Prefix Verb URI Pattern Controller#Action
new_user_session GET /users/sign_in(.:format) devise/sessions#new
PATCH /users/password(.:format) devise/passwords#update
new_api_user_session GET /api/auth/sign_in(.:format) devise_token_auth/sessions#new {:format=>:json}
ich Rake nennen wollen Routen, aber geben nur die letzten zwei Spalten aus (URI Pattern und Controller # Aktion). Es ist auch eine Tatsache, dass die letzten zwei Spalten mit einem '/' beginnen, während die ersten beiden Spalten niemals ein '/' haben.
gewünschter Ausgang:
> bundle exec rake routes | awk 'something'
URI Pattern Controller#Action
/users/sign_in(.:format) devise/sessions#new
/users/password(.:format) devise/passwords#update
/api/auth/sign_in(.:format) devise_token_auth/sessions#new {:format=>:json}
habe ich versucht, diese Ansätze:
Ansatz 1:
> bundle exec rake routes | awk '{print $(NF-1),"\t",$NF}'
Pattern Controller#Action
/users/sign_in(.:format) devise/sessions#new
/users/password(.:format) devise/passwords#update
devise_token_auth/sessions#new {:format=>:json}
die ersten beiden Reihen (/ users/sign_in und/users/Passwort) funktionieren, aber der dritte behandelt devise_token_auth/sessions # new und {: format =>: json} als separat Die Spalten sind aufgrund des Standardfeldtrennzeichens Leerzeichen. Aus demselben Grund schnitt die Kopfzeile das Wort URI aus dem URI-Muster heraus.
Ansatz 2:
> bundle exec rake routes | awk '{$1=""; $2=""; print}'
URI Pattern Controller#Action
/users/sign_in(.:format) devise/sessions#new
devise/passwords#update
/api/auth/sign_in(.:format) devise_token_auth/sessions#new {:format=>:json}
Im zweiten Ansatz, es funktioniert gut für den ersten (/ Benutzer/sign_in) und dritten (/ api/Auth/sign_in) Reihen, aber es ist verkorkst in der zweiten Reihe, weil es eine leere erste (Präfix) Spalte gibt.
Ansatz 3:
ich auch für einen Filterschalter auf Rake Routen sah, (wie oben Befehl hat -stats)? aber in the routes rakefile konnte ich keine solche Option finden.
Ansatz 4:
Der folgende Ansatz funktioniert, aber es verwendet eine andere Tatsache über die Daten -, dass wir alle müssen den Inhalt mit dem ersten ‚/‘ beginnen:
# rake_awk
#!/usr/bin/awk -f
{
search="/";
n=split($0,array,search);
if(n == 1) {
print "\n", $3, $4, "\t\t\t\t\t\t\t", $5, "\n";
}
else {
for (i=2;i<=n;i++) {
if (i < n) {
printf("/%s", array[i]);
}
else {
printf("/%s\n", array[i]);
}
}
}
}
Und von der Kommandozeile:
> bundle exec rake routes | /path/to/rake_awk
URI Pattern Controller#Action
/users/sign_in(.:format) devise/sessions#new
/users/password(.:format) devise/passwords#update
/api/auth/sign_in(.:format) devise_token_auth/sessions#new {:format=>:json}
@EdMorton ich die Frage aktualisiert mit der Baseline und mehr Details - Ruby on Rails (ein Web-App-Framework) hat einen Rake ('Ruby make'), der eine gemeinsame Rakefile (analog zu Makefile) namens routes hat. Der Befehl "Rake-Routen" gibt eine Reihe von Web-Routen in meiner Web-App aus. Der erste Ausschnitt zeigt die Grundlinienausgabe. Ich versuche, nur die letzten beiden Ausgabespalten zu drucken. Weitere Informationen finden Sie in der aktualisierten Frage. – Anand
hilft es, Ihr Q wie, A. Beispiel-Eingabedaten, B/erforderliche Ausgabe von gleichen Daten, C. aktuelle Ausgabe. D. Aktuelle beste Schätzung bei codierter Lösung, E. Es werden Fehlermeldungen generiert. ### Sie können auch andere Informationen hinzufügen, die Benutzern helfen, Ihr Problem in ihrer Umgebung zu replizieren, und Kommentare dazu, warum Sie die derzeit in Ihrem Code verwendete Methode verwenden. Wie es ist, kann diese Information da sein, aber es ist schwer, die Informationen in Ihrem Q zu "parsen". Viel Glück. – shellter
@shellter - Ich habe die Frage mit den meisten dieser Details aktualisiert. – Anand