Isso se deve à experiência de aprender, continuar aprendendo e escrevendo um aplicativo relativamente simples no Rails.
1) Curva de Aprendizagem
O Rails é enganosamente simples. Os tutoriais, vídeos e livros demonstram a rapidez com que você pode obter um aplicativo funcional (embora feio), mas isso realmente arranha a superfície. Eles tendem a confiar fortemente na geração e no "andaime" de código, que é uma boa ferramenta para aprender, mas rapidamente sobrevive à sua utilidade.
Não se engane, é difícil dominar o Rails. Depois de passar pelo básico (mais sobre isso mais tarde), você se deparará com uma parede se precisar fazer mais do que a funcionalidade extremamente simplista do "aplicativo de demonstração" que você vê apresentada. Você pode se familiarizar com o conhecimento básico de Ruby enquanto aprende, mas rapidamente precisa buscá-lo ou ficará em seco (e não é o melhor DRY
) se precisar sair das restrições do Rails.
O Rails é, como eu gosto de chamá-lo de maneira amorosa, pintar pela programação de números . Se você se apegar 100% às convenções (ou seja, permanecer dentro das linhas e usar as cores que você deve usar), poderá criar aplicativos decentes com rapidez e facilidade. Se e quando você tiver que se desviar, o Rails pode ir do seu melhor amigo ao seu pior inimigo.
2) Quando tudo que você tem é um martelo ...
O Rails faz aplicações CRUD simplistas muito bem. O problema ocorre quando seu aplicativo precisa fazer mais do que apenas ler / gravar em um banco de dados. Agora, para constar, a última versão do Rails que usei foi a 2.3.4, portanto as coisas podem ter mudado desde então, mas me deparei com grandes problemas quando os requisitos de negócios mudavam, de modo que o aplicativo precisava ter um pequeno sistema de fluxo de trabalho incorporado e integrar-se ao um aplicativo PHP herdado. A convenção do Rails de "um formulário, um modelo" funciona bem para aplicativos triviais e aplicativos de entrada de dados, mas não tanto quando você precisa fazer lógica de processamento ou ter fluxos de trabalho ou qualquer coisa que não seja típica "O usuário insere dados no alguns campos de texto, clica em Enviar ". Isso pode ser feito, mas não é de modo algum "fácil", ou melhor, não era '
Além disso, o Rails não gosta de jogar bem com outros aplicativos que não estão usando seus métodos preferidos de acesso a dados; se você precisar fazer interface com um aplicativo que não possui uma API no estilo "Web 2.0", precisará contornar o Rails, e não com ele; Mais uma vez falo por experiência própria, pois foi o que aconteceu comigo.
3) é novo
Por fim, o Rails ainda é o "novo garoto da quadra" em muitas áreas. Isso não importa para uso pessoal ou o tipo de cenário "Acho legal e quero aprender", mas falar como alguém que prefere usar o Rails no meu trabalho diário, se você não estiver em um local onde o Rails está generalizado, pode ser muito difícil encontrar trabalho em tempo integral como desenvolvedor do Rails. Ainda é em grande parte o domínio das "novas e modernas startups" e não é um participante importante na maioria das áreas metropolitanas. Sua milhagem pode variar nesse sentido, mas eu sei que a minha área (Tampa) Rails é essencialmente inexistente.
4) Fogo e Movimento
O Rails está sempre mudando. Isso é bom e ruim; é bom porque a comunidade evolui e adota novos conceitos. É ruim porque a comunidade evolui e abraça novos conceitos. Pode ser muito assustador para um novato do Rails, porque geralmente quando você se deparar com um problema e olhar em volta, verá pessoas recomendando tal e tal joia para corrigi-lo ou dizendo que isso é ruim de qualquer maneira e você não deveria ' Para usá-lo, aqui está uma maneira melhor ... e você acaba tendo uma lista completa de ferramentas adicionais para aprender junto com o Rails e acompanhar os conhecimentos do Rails. Coisas como Git
, BDD/RSpec
, Cucumber
,Haml/Sass
, e uma infinidade de outras coisas flutuam e são empurradas como o "caminho certo para fazer as coisas" em Rails-land. Falando por experiência própria, você pode acabar sendo inundado tentando aprender uma dúzia ou mais de tecnologias além do Rails, porque usar o kit de ferramentas padrão do Rails parece "errado".
Agora isso é ainda mais agravado pelo Rails 3.1, tornando o Sass e o CoffeeScript de todas as coisas o padrão, portanto, um novato total do Rails não apenas precisa aprender Ruby e Rails, mas também o Sass (sem dúvida simples, se você conhece CSS) e o CoffeeScript (não muito difícil, mas certamente diferente o suficiente do JavaScript bruto) no mínimo para começar, além disso, pode-se assumir o Git. Mesmo sem considerar o RSpec e os amigos, e as dezenas ou mais gemas com as quais você normalmente termina, são quatro coisas diferentes que você precisa aprender antes de começar a escrever aplicativos Rails a sério. Compare isso com uma linguagem como C #, Java ou PHP, onde o seu conhecimento em HTML / CSS / JavaScript / SQL não vai mudar e você só precisa aprender a própria linguagem e talvez as nuances da estrutura.