Ciò deriva dall'esperienza acquisita, dall'apprendimento continuo e dalla scrittura di un'applicazione relativamente semplice in Rails.
1) Curva di apprendimento
Rails è ingannevolmente semplice. I tutorial, i video e i libri dimostrano tutti quanto velocemente riesci a ottenere un'applicazione funzionante (se brutta), ma questi semplicemente graffiano la superficie. Tendono a fare molto affidamento sulla generazione di codice e "impalcature", che è certamente un buon strumento per l'apprendimento ma sopravvive rapidamente alla sua utilità.
Non commettere errori, Rails è difficile da padroneggiare. Una volta superate le basi (ne parleremo più avanti) ti imbatterai in un muro se hai bisogno di fare qualcosa di più della semplicistica funzionalità di "demo app" che vedi propagandare. Puoi imparare con una conoscenza di base di Ruby mentre impari, ma devi rapidamente raccogliere Ruby o rimarrai alto e asciutto (e non il tipo buono DRY
) se devi andare oltre i vincoli di Rails.
Rails è, come mi piace chiamarlo in modo amorevole, dipingere programmando numeri . Se ti attieni al 100% alle convenzioni (ad esempio, stai all'interno delle linee e usi i colori che ti viene detto di usare) puoi fare applicazioni decenti in modo rapido e semplice. Se e quando devi deviare, però, Rails può passare dal tuo migliore amico al tuo peggior nemico.
2) Quando tutto ciò che hai è un martello ...
Rails fa molto bene le applicazioni CRUD semplicistiche. Il problema si presenta quando l'app non deve fare altro che leggere / scrivere da un database. Ora, per la cronaca, l'ultima versione di Rails che ho usato era la 2.3.4, quindi le cose potrebbero essere cambiate da allora, ma ho riscontrato grossi problemi quando i requisiti aziendali sono cambiati, quindi l'applicazione doveva avere un piccolo sistema di flusso di lavoro integrato e integrarsi con un'applicazione PHP legacy. La convenzione Rails di "un modulo, un modello" funziona perfettamente per app e applicazioni di immissione dati banali, ma non tanto quando è necessario eseguire la logica di elaborazione o disporre di flussi di lavoro o qualsiasi cosa che non sia il tipico "Utente immette dati in alcuni campi di testo, risultati Invia "tipo di cosa. Esso può essere fatto, ma è in alcun modo "facili", o meglio, wasn'
Inoltre, a Rails non piace giocare bene con altre applicazioni che non usano i suoi metodi preferiti di accesso ai dati; se devi interfacciarti con un'applicazione che non ha un'API di stile "Web 2.0", devi aggirare Rails invece che con esso; di nuovo parlo per esperienza qui perché questo è quello che mi è successo.
3) È nuovo
Infine, Rails è ancora il "nuovo bambino sul blocco" in molte aree. Questo non importa per uso personale o tipo di scenari "Penso che sia bello e voglio impararlo", ma parlando come qualcuno che preferirebbe usare Rails nel mio lavoro quotidiano, se non ti trovi in una posizione dove Rails è molto diffuso, può essere molto difficile trovare lavoro a tempo pieno come sviluppatore di Rails. È ancora in gran parte il dominio di "hip, nuove startup" e non un attore importante nella maggior parte delle aree metropolitane. Il tuo chilometraggio può variare a questo proposito, ma so che la mia area (Tampa) Rails è essenzialmente inesistente.
4) Fuoco e movimento
Rails è in continua evoluzione. Questa è sia una cosa buona che una cattiva; è buono perché la comunità si evolve e abbraccia nuovi concetti. È un male perché la comunità si evolve e abbraccia nuovi concetti. Può essere molto travolgente per un principiante di Rails perché in genere quando ti imbatti in un problema e ti guardi intorno, vedrai entrambe le persone che raccomandano tale gemma per risolverlo o che dicono che il modo in cui va male comunque e non dovresti t usalo, ecco un modo migliore ... e finisci per avere una lista di strumenti aggiuntivi da imparare insieme a Rails per stare al passo con i cognoscenti di Rails. Cose come Git
, BDD/RSpec
, Cucumber
,Haml/Sass
e una cornucopia di altre cose galleggiano tutte e vengono spinte come "il modo giusto di fare le cose" nella Terra di Rails, e parlando per esperienza potresti finire per essere sommerso cercando di imparare una dozzina o più di tecnologie oltre a Rails, perché l'utilizzo del toolkit standard di Rails sembra "sbagliato".
Questo è ora aggravato ancora di più da Rails 3.1 che rende Sass e CoffeeScript di tutte le cose predefinite, quindi un principiante totale di Rails non solo deve imparare Ruby e Rails ma Sass (probabilmente semplice se conosci CSS) e CoffeeScript (non pazzo difficile ma sicuramente abbastanza diverso da JavaScript non elaborato) al minimo indispensabile per iniziare, inoltre si può presumere Git. Anche senza factoring in RSpec e amici, e la dozzina o più gemme con cui in genere finirai, sono 4 cose diverse che devi imparare prima di poter iniziare seriamente a scrivere applicazioni Rails. Confronta questo con un linguaggio come C #, o Java, o anche con PHP in cui le tue conoscenze HTML / CSS / JavaScript / SQL non cambieranno e devi solo imparare il linguaggio stesso e forse le sfumature del framework.