Mi sono imbattuto in questo stesso problema e credo di averlo risolto. Speravo di trovare un semplice generatore di rails per convertirlo, ma a meno che non mi sia perso qualcosa non è così facile. Tuttavia, le rotaie rendono più facile farlo completamente manualmente.
La chiave è che il comando rails new
può essere utilizzato su un'app esistente. Nota che questa risposta presume che tu sappia come usare git e lo stia usando nell'app esistente.
Prima e, soprattutto, creare una nuova filiale. Questo ha due funzioni, 1) quindi non dovresti perdere il lavoro se lo rovini (anche se potrebbe essere ancora un buon momento per eseguire il backup, come su GitHub), e 2) in modo da poter confrontare i file che hanno conflitti dopo questo processo e recuperare qualsiasi lavoro che questo processo sovrascrive (non era molto per me, ma era importante).
Nel terminale, dalla directory dell'app si desidera passare dall'API solo allo standard. Esegui i seguenti comandi per andare su una directory e poi avere i rail scrivere un nuovo progetto su quello esistente. Utilizza le stesse opzioni sul secondo comando che hai utilizzato durante la creazione iniziale dell'app. Ad esempio, per me ho sostituito [options]
di seguito con -d postgresql --skip-turbolinks --skip-spring -T
perché quelle sono le opzioni che ho usato durante la creazione della mia app. Sto usando il flag --skip-bundle
perché potrebbe cambiare il tuo Gemfile più di quanto lo desideri e probabilmente vorrai cambiarne un po 'prima del raggruppamento.
$ cd ..
$ rails new your_app_name --skip-bundle [options]
Ora rotaie sta per passare attraverso la sua solita processo di creazione di tutti i file di una nuova applicazione, ma questa volta sta andando a saltare quasi tutti loro perché sono già lì.Si fermerà su ognuno su cui c'è un conflitto, ed è lì che dovrai analizzare i conflitti uno ad uno.
Ecco che cosa ha funzionato per me sui file in conflitto:
- Invia
d
su ciascuno di loro per vedere le differenze.
- Se la differenza è solo l'aggiunta di linee, quindi consentire con . Ecco perché lo stiamo facendo dopotutto.
- Se la differenza è solo la rimozione del codice, quindi rifiutarlo con
n
.
- Se la differenza è sia l'aggiunta che la rimozione del codice, annotare il file in modo che ritorni dopo questo processo. Quindi accettalo con .
Al termine, utilizzare git per esaminare la differenza su ciascun file da (4) annotato. Ti consigliamo di mantenere le modifiche aggiunte alle rotaie, ma probabilmente vorrai copiare tutto il codice che è stato rimosso. Probabilmente questo includerà il Gemfile.
Una differenza degna di nota è che i binari modificano il controller dell'applicazione dall'eredità da ActionController::API
a ActionController::Base
. Voglio un controller per ciascuno, quindi ho creato un nuovo file `app/controller/api_controller.rb '. Poi ho copiato quello che era nel mio ApplicationController originale sul nuovo file e ho appena cambiato il nome della classe in ApiController. Quindi ho modificato tutti i controller API esistenti in modo che ereditassero dal nuovo ApiController anziché da ApplicationController.
Al termine, eseguire bundle install
per installare i binari gemma aggiunti nell'app.
Questo ha funzionato per me. Spero possa essere d'aiuto. In bocca al lupo!
Aggiornamento e rimozione della parte "indietro". inizialmente non era mai stata un'app di normali binari, inizialmente era un'app di api. –