Questo deriva dall'esperienza, dall'apprendimento, dalla continua conoscenza e dalla scrittura di un'applicazione relativamente semplice in Rails.
1) Curva di apprendimento
Rails è apparentemente semplice. Le esercitazioni, i video e i libri dimostrano quanto velocemente puoi ottenere un'applicazione funzionante (se brutta), ma questi in realtà graffiano la superficie. Tendono a fare molto affidamento sulla generazione di codice e sul "ponteggio", che è certamente un buon strumento per l'apprendimento, ma sopravvive rapidamente alla sua utilità.
Non commettere errori, Rails è difficile da padroneggiare. Una volta superati i principi di base (ne parleremo più avanti) correrai a capofitto in un muro se devi fare qualcosa di più della semplicistica "demo app" che vedi reclamizzata. Puoi acquisire una conoscenza di base di Ruby durante l'apprendimento, ma devi recuperare rapidamente Ruby o ti verrà lasciato a bocca asciutta (e non il buon tipo di DRY
) se devi uscire dai limiti di Rails .
Rails è, come mi piace chiamarlo in modo amorevole, paint by numbers programming . Se vi attenete al 100% alle convenzioni (ovvero rimanete all'interno delle linee e utilizzate i colori che vi viene consigliato di utilizzare) potete realizzare applicazioni decenti in modo rapido e semplice. Se e quando devi invece deviare, Rails può passare dal tuo migliore amico al tuo peggior nemico.
2) Quando tutto quello che hai è un martello ...
Rails fa semplicistiche applicazioni CRUD molto bene. Il problema si presenta quando la tua app deve fare molto di più che leggere / scrivere da un database. Ora, per la cronaca, l'ultima versione di Rails che ho usato era 2.3.4, quindi le cose potrebbero essere cambiate da allora, ma mi sono imbattuto in principali problemi quando i requisiti aziendali sono cambiati, quindi l'applicazione doveva avere un piccolo sistema di flusso di lavoro integrato e integrato con un'applicazione legacy PHP. La convenzione Rails di "una forma, un modello" funziona bene per applicazioni banali e applicazioni di data entry, ma non tanto quando è necessario fare logica di elaborazione, o avere flussi di lavoro, o qualsiasi cosa che non sia la tipica "L'utente inserisce i dati in alcuni campi di testo, tocca Invia "tipo di cosa. È possibile essere fatto, ma non è affatto "facile", o piuttosto non è stato quando ho usato Rails per l'ultima volta.
Inoltre, a Rails non piace giocare bene con altre applicazioni che non usano i suoi metodi preferiti di accesso ai dati; se devi interfacciare con un'applicazione che non ha un'API in stile "Web 2.0", devi lavorare su Rails invece che con essa; di nuovo parlo per esperienza qui come questo è quello che mi è successo.
3) È nuovo
Infine, Rails è ancora il "nuovo ragazzo sul blocco" in molte aree. Questo non importa per uso personale o tipo "Penso che sia bello e voglia di imparare" scenari, ma parlando come qualcuno che preferirebbe usare Rails nel mio lavoro diurno, se non si è in una posizione in cui 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 start-up" e non un giocatore 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
Le guide sono in continua evoluzione. Questa è una cosa buona e una cattiva; è buono perché la comunità si evolve e abbraccia nuovi concetti. È male perché la comunità si evolve e abbraccia nuovi concetti. Può essere molto travolgente per un principiante di Rails perché di solito quando incontri un problema e ti guardi intorno, vedrai le persone raccomandare questo tipo di gemma per risolverlo o dire che comunque è male e non dovresti 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 Rails. Cose come Git
, BDD/RSpec
, Cucumber
, Haml/Sass
, e una cornucopia di altre cose tutte fluttuano intorno e vengono spinte come il "modo giusto di fare le cose" in Rails-land, e parlando per esperienza puoi finiscono per essere sommersi cercando di imparare una dozzina o più di tecnologie in aggiunta a Rails, perché usare il kit di strumenti standard di Rails sembra "sbagliato".
Questo è ulteriormente aggravato da Rails 3.1 che rende Sass e CoffeeScript di default, quindi un principiante 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 grezzo) al minimo indispensabile per iniziare, in più si può presumere Git. Anche senza tener conto di RSpec e degli amici, e della dozzina o più gemme che tipicamente farai, è 4 cose diverse che devi imparare prima di poter seriamente iniziare a scrivere applicazioni Rails. Confronta questo con un linguaggio come C #, o Java, o anche PHP dove la tua conoscenza HTML / CSS / JavaScript / SQL non cambierà e devi solo imparare la lingua stessa e forse le sfumature del framework.