segunda-feira, 30 de dezembro de 2013

Primeiras impressões 1 - vindo do php

Uma coisa bem diferente para quem vem de Php para outras linguagens em geral, e talvez essa experiência seja única para quem vem Php,  é que o indivíduo de depara com uma linguagem que não funciona na web. Opa! Como assim ?
É, pois é Php nasceu para construção de sites, isso na minha opinião é sua maior força e sua maior fraqueza, dependendo da necessidade.
Deixa eu explicar para quem não veio de Php. A grosso modo, um site em Php pode (pode) ser simplesmente um arquivo html, com códigos php entre tags "<?php ?>" (ele só funciona entre estas tags) mas a com extensão alterada para .php para assim o servidor devidamente configurado encaminhar para o interpretador rodar este arquivo e devolver a resposta que costuma ser um html. Para o pessoal do Rails, imaginem-se fazendo um site com os arquivos .erb e colocar toda a lógica alí.
Os erros do php são formatados para web, com tags html, isso é um indício da finalidade para qual a linguagem foi criada, uma vez rodando em linha de comando vi que quando os erros estouravam mostram tags html.
Outro ponto é que nem todo erro é "fatal" , interrompendo o restante do script , eu não sei se tem alguma configuração de erros que trate tudo como "fatal", as configurações de erro que eu usava era "ativada" e "desativada".
É uma linguagem ótima para web designers (designers que atuam na web), tem coisas muito legais fora uma imensidão de pacotes pré-configurados com apache +php +mysql como Xampp e EasePhp. Onde é só instalar e começar a brincar. Fora vários sistemas opensSources com possibilidade de costumização de templates, destaco o fodastico Wordpress.

Falei pra caramba de Php para explicar o que é diferente no ruby.
Com ruby "puro", um simples arquivo .rb não se faz um site...não de uma maneira legível, vendo o html bonitinho, isso é uma desvantagem se por exemplo você quiser fazer uma hotsite de uma ou 2 páginas com um simples formulário (pra complicar um pouquinho), um concurso cultural ! Com php se faz isso muito rápido, sem uso de extensões (gems , serivores de aplicação etc), pois como disse, ele nasceu para isso. Basta 2 arquivos com extensão .php
O costume é usar Ruby com frameworks que o "portam" para web, Rails, Sinatra etc. E esses frameworks são estruturados, grandes estruturas. ..muitos arquivos.

"Porra, mas então eu só vai valer a pena usar isso em grandes projetos !"  

Não! por causa dos scaffolds e generators ! Comandos no terminal que criam as estruturas básicas do seu site. Isso foi uma coisa que eu demorei a pegar, uma dificuldade. Nunca havia trabalhado com terminal e é obvio que leva um tempo para se acostumar, tem gente que não se acostuma...rs mas não foi o meu caso.
No caso do site descrito acima , em Rails(Ruby) bastaria escrever no terminal:

rails g scaffold Participation name:string email:string response:string
Com este comando você, definiu uma tabela com 3 campos e todos os links e páginas usadas para sua manipulação , o famoso CRUD. Mas essa tabela ainda não existe no banco de dados...você vai ter que ir lá criar os campos, definir os tamanhos, os tipos certo ? Errado, dessa forma não. Basta executar:

rake db:migrate

Estes comandos é claro não vão gerar o seu site pronto como você imagina, mas o funcionamento dele e num layoutzinho padrão dele meia boca. É gerado todas as páginas necessárias para o CRUDi (create, retrieve, update, delete) + list (index)...
Bem, isso foi um pouco a mais do que se previa, onde era esperado apenas um formulário + resposta. Não tem importância, você pode editar retirando o que não deseja, ou pode deixar ali mesmo, mas inacessíveis (tirando as rotas).
Mas vamos lá, depois que este concurso acabar você ou alguém vai precisar ver as respostas, e não seria legal exportar isso num excel quando se pode ver alí mesmo na página as respostas., ainda moderar. A intenção era algo simples, mas se com o mesmo trabalho, ou menos se conseguiu mais, porque não deixar como está ?
Na terminologia usada pelo rails "new" e "create" , seriam as páginas públicas. Enquanto, index(listagem) , "edit","update" e "destroy" seriam as páginas dos administradores.
Esta restrição pode ser feita com uma autenticação bunda com o password no próprio código do ruby, lixão mesmo, para não ter que criar outra tabelas neste exemplo...vamos simplificar agora.

Obs.: A solução acima não é a melhor prática no que se refere a segurança e tal blá blá blá, o ministério https adverte, não digam que eu dei esse exemplo.
Enfim, talvez seja difícil entender como algo mais complexo pode te dar menos trabalho, esse paradoxo é resolvido pelas ferramentas que o rails traz consigo. Se tem mais arquivos, mais estruturado e certamente eu não optaria em fazer o projeto do exemplo que é bem simples em rails sem estas ferramentas , que eu pretendo me aprofundar nas próximas publicações.  Quero deixar claro que estou me referindo nesto ponto ao RAILS, rails é o framework, ruby a linguagem.
Em php o que mais o framework que vi mais se aproximar CakePHP, e mesmo assim ainda falta um bocado, parece que ele usa um scaffold sem linha de comando é esquisito,  parei de procurar também.

E vocês, o que você acham ?

Nenhum comentário:

Postar um comentário