Rails Namespace e o '/admin'

Olá pessoal.

Em desenvolvimento web sempre depara-se com a criação de um área de administração. O famoso '/admin'. Ou seja, querendo ou não, algum cliente vai acabar te pedindo pra criar uma área onde ele possa editar o conteúdo. Pensando no modo PHP de fazer vem logo à cabeça a criação de uma pasta 'admin'. Aí você vai lá e utiliza um pouco de sessão aqui, um pouco de cookie ali e pronto (eu fazia isso), basta digitar admin depois da URL e aí você cai na área administrativa do site. Mas em Rails, como faz? Como que eu crio uma pasta 'admin'? Tem como criar um controller dentro de outro controller(what??)?

Da primeira vez que me ocorreu tal problema eu o solucionei ao meu modo:

  • Criei um Controller login responsável pela autenticação do usuário
  • Coloquei todos os Controllers/Models que iriam ser alterados com acesso somente aos usuário autenticados
  • E por fim criei um Controller pagina que tinha em cada action um determinado model que iria ser mostrado nas páginas pública

Ou seja, se eu tivesse por exemplo um Controller produtos, as operações create, edit, destroy e os endereços RESTful somente poderiam ser acessados após passar pelo login. Enquanto isso, na página inicial eu mostraria os produtos através da rota /pagina/produtos, que tinha em sua action um Produto.all.

Insatisfeito com tal método, não por pensar que estaria errado, já que ele deu certo, mas por pensar que existiria um 'Ruby way' de fazer. Foi aí que me deparei com Namespace. As coisas ficaram bem mais organizadas ao utilizar esse esquema de rotas.

Continuando no exemplo do Controller produtos anterior, eu fiz o seguinte:

  • Criei um controller admin/produtos (isso mesmo, 'um controller dentro de outro' :D)

rails g controller Admin::Produtos

  • Dentro do controller cria-se as actions a serem utilizadas na área administrativa. No meu caso new, edit, show...
  • Agora utiliza-se o Namespace no arquivo de rotas

namespace :admin do
 resources :produtos
end

Lembrando que o resources pode ser alterado para get, post, match, assim como é feito em outras rotas.

Fazendo desta maneira a aplicação em si ficou bem mais legível e fácil de modificar. Além de que agora de fato tem-se uma área administrativa, a qual eu posso acrescentar actions aos meus controllers como eu bem entender, de um modo muito mais organizado.

Bem mais a cara do Rails agora. :D

Então é isso! Abraço a todos

@neliojrr

Faça o social e evolua

600--12_mhg_pais_lula_dilma434556

Olá a todos!

 

Há tempos não dou uma passada por aqui, mas vejam se não é esta a maior vantagem de ser blogueiro 'amador'!? Você não precisa manter uma escrita rotineira e obrigatória, não se tem aquela pressão (apesar de que as vezes rola uma auto pressão) ou mesmo uma data marcada toda semana pra postar algo. Escreve quando se tem algo em mente e quer compartilhar, mostrar que achou interessante. Mas verdade seja dita: Se todos os blogueiros postassem na mesma velocidade que eu, o conteúdo da internet caberia no meu HD. E caso você tenha um blog e seu objetivo é fidelizar visitantes, não siga o meu exemplo.

 

Bom, mas o que eu vim falar aqui hoje não é sobre blogs. O assunto de hoje são as pessoas! Isso mesmo nerd da computação. Hoje decidi falar do tema que nos faz trancarmos no quarto, comer muito porcaria e passar horas e horas com o NetBeans aberto: Colegas, Contatos, Usuários, Vida Social.

 

Particularmente eu não consigo pensar em uma profissão a qual não se faz necessária alguma vivência em grupo ou troca de experiências (e eu não estou falando de comunidades do orkut). É preciso um contato real, apresentação de idéias, busca por pessoas afins e tudo mais que engloba uma vida social. Quando isso acontece, a pessoa desenvolve, evolui. Uma coisa é fato: Ninguém sabe tudo! Por mais que você seja um 'Jedi' da computação, alguém sabe alguma coisa que você não. E eu não falo apenas de conhecimentos técnicos, mas principalmente de vida prática. Quando eu digo vida prática, quero dizer tudo aquele que não tem uma fórmula bem definida e muito menos uma regra a se seguir (tudo aquilo que você acha 200 respostas diferentes no google seu nerd :D). São as coisas subjetivas do nosso dia a dia profissional. Tomadas de decisões é um exemplo clássico. Todo dia temos que fazer escolhas e assumi-las. Quando contamos com mais do que só aquilo que sabemos, ou seja, com as experiências e ajuda de outros, com certeza a chance de acerto aumenta e muito.

 

O outro fator determinante quando se fala de social são os contatos (contatos = $$). Inevitável para uma carreira de sucesso. Fato! Se você não conhecer aquela pessoa do RH, aquele Desenvolvedor Sênior ou mesmo pegar a filha do chefe, vai ser difícil você receber alguma promoção. E quando eu falo conhecer, não digo apenas tê-lo adicionado no MSN. É preciso mais! Você tem que ter conversado com essa pessoa, exposto suas idéias e pontos de vista, demonstrado conhecimento técnico e principalmente ter sido agradável. Seja sempre simpático com seu contato, porque você vai precisar dele :)

 

Pensei em falar sobre isso pelo fato de ter participado de um evento recentemente, e neste especialmente eu vi a importância de dividir ideais, objetivos. Existem pessoas que pensam igual a mim, compactuam dos mesmos sonhos e sofrem das mesmas dificuldades. Enxerguei então com muito mais clareza do que antes, uma oportunidade de realizar projetos, ganhar dinheiro, fazer amizades ou simplesmente se divertir. Portanto querido leitor, participe das horas extras no bar do seu Tião com seus colegas, se você não conseguir um contato ou uma amizade com seu chefe, pelo menos você tem chance de conseguir o telefone daquele estagiária nova.

 

Eu fico por aqui.

Abraços a todos.

 

@neliojrr

 

Programação e Empreendedorismo

Fundadores_de_google_portada
Olá pessoal!

Ultimamente tem sido difícil não pensar em 'Minha Empresa'. Tenho assistido a alguns vídeos (tem um do Vinícius Teles ótimo) e acessado sites (http://startupquote.com) relacionados a este tema  e confesso estar cada vez mais certo deste pensamento. A verdade é que não me interessei nisso semana passada. Esse pensamento vem crescendo ao longo de vários meses. Tive um professor na minha graduação que sempre foi muito incentivador da criação de empresas, e como um grande admirador, ele teve sua parcela de culpa nesta minha nova empreitada.

Tá bom...falar de empreendedorismo é legal e tudo mais, porém, e a programação??

Você meu caro programador, é o artista da computação. O desenvolvimento de software é o artesanato do mundo das máquinas. Alguém já parou pra pensar o que você pode fazer com todos estes códigos? Praticamente o que você quiser! Basta uma pitada de criatividade e pronto, temos um novo Mark Zuckerberg (Tá bom, me empolguei um pouquinho). Programadores estão a um pequeno passo do empreendedorismo. É uma idéia e algumas horas na frente do computador. As pessoas e todos os processos em volta estão cada vez mais 'online'. Há uma grande necessidade de aplicativos para a quantidade de aparelhos tecnológicos que estão surgindo todos os dias.

Mas você pode pensar: E todos os processos burocráticos, trabalhos extras, investimentos financeiros e blá blá blá....?

Talvez você não tenha a menor vocação para administrador. Talvez você nem queira e nem goste de disso. Tudo bem! Afinal de contas, se todo mundo criasse uma empresa, quem iria trabalhar na minha?...=)

O espírito empreendedor em questão, é o de você não esconder o seu trabalho. Coloque seu código na web. Venda trechos do seu código. Compartilhe aquele programa gerenciador de biblioteca que você fez pra aprender Java. A nossa área é extramamente propícia ao empreendedor. Em um golpe de sorte (leia-se talento) você pode acabar tendo um produto que gere alguma renda ou mesmo reconhecimento.

Tem sido muito empolgante acompanhar a quantidade de startups criadas nestes últimos tempos. E esta é a tendência do nosso mercado nacional. As previsões têm apontado para um aumento significativo no número de novas empresas. E eu quero fazer parte disso!

Estejamos atentos as novidades que estão surgindo e então, façamos parte delas. A computação não precisa só de programadores, mas também de inovadores, de artistas do software. Por isso, não vamos ficar acanhados em mostrar nossas aplicações. Se foi útil pra mim, por que não será pra outros também!?

 

Don’t let people tell you your ideas are stupid - if you’re passionate about something, find a way to build it.

- Dennis Crowley, Co-Fundador Foursquare

 

Any time is a good time to start a company.

- Ron Conway, Co-Fundador SV Angel

 

Um abraço!

@neliojrr

Fedora 13 + Rails 3

Alexandra-franco-tux_fedora
Olá pessoal!

Eu estava navegando pelos muitos blogs e sites sobre Rails e o assunto mais visto era: Rails 3! Definitivamente foi (e ainda é) muito comentado por toda a comunidade Ruby on Rails. Logo, isso acabou por despertar a minha curiosidade a respeito da versão 3 do framework, seja por seu desempenho, novas funcionalidades e facilidades, ou mesmo pra se manter atualizado. Fui então procurar pela nova versão e acabei descobrindo que eu teria de atualizar tudo. O Rails 3 não dá mais suporte ao Ruby 1.8.6, que por acaso era a versão instalada no meu Fedora. Ao tentar atualizar pra uma versão mais recente do Ruby (no momento da criação deste post é a 1.9.2) utilizando o comando "yum" (similar ao 'apt-get' no Ubuntu), descobri que nos repositórios só havia o Ruby 1.8.6 e mesmo procurando na internet (leia-se rpm.pbone.net) o mesmo não foi encontrado. Parti então pra instalação a partir do código fonte.

A seguir os passos da instalação:

Antes de tudo, remova a instalação atual, caso você tenha instalado utilizando o comando 'yum'

$ sudo yum remove ruby 

Agora baixe o pacote contendo o Ruby 1.9.2 aqui e siga estes passos:

$ tar -zxvf ruby-1.9.2-p0.tar.gz
$ cd ruby-1.9.2-p0/
$ ./configure
$ make
$ sudo make install

 

Feito isso - e tudo correndo perfeitamente - o Ruby 1.9.2 terá sido instalado com sucesso. Quer testar? Digite:

$ ruby -v 

Com este comando aparecerá a versão do Ruby instalado. O próximo passo é instalar o Rails 3. Caso você não tenha o Rubygems instalado, baixe ele clicando aqui. É interessante fazer o download sempre da última versão.

$ tar -zxvf rubygems-1.3.7.tgz
$ cd rubygems-1.3.7/
$ ruby setup.rb

Pronto! Rubygems instalado! Agora basta mais dois comandos. Primeiro faça o login como root:

su - 

E digite a senha. Depois disto basta mais um comando:

gem install rails

É isto! Agora basta aguardar a instalação se completar e começar a utilizar o Rails 3.

Pra começar a utilizar o Rails visite este guia. Além do que, existem vários blogs e sites da comunidade Rails que são muito interessantes. Eu particularmente recomendo uma lida neste post do site do Akita.

Gosto muito do Linux, principalmente pela liberdade que ele me dá na utilização de várias tecnologias e ferramentas. E o Fedora é muito robusto e poderoso, além de estar cada vez mais intuitivo e de fácil utilização. Fica a dica!

Eu fico por aqui...;D

Abraços!

@neliojrr

Uma simples apresentação

000750

Nélio Carneiro Júnior, muito prazer!..=)

Estudante de Ciência da Computação pela Universidade Federal de Goiás, sempre fui um apaixonado por computação e tudo a sua volta. Mas software sempre foi empolgante. O fato de praticamento não haver limite no processo de criação é fascinante. Programação é fascinante! É uma sensação muito boa ver a sua escrita tomando forma, literalmente. Desde sempre me interessei pelo 'por trás' dos computadores. Como 'isso' ou 'aquilo' era feito. E hoje aos 23 anos vejo que minha vida profissional não tomaria outro rumo que não fosse a área de computação. Hoje em dia tenho grandes amigos, faço parte de comunidades e discussões que direto ou indiretamente se relacionam com computação. E isso é bacana! Se as pessoas te relacionam com determinados assuntos, comunidades, área de conhecimento, significa que você é participativo nesta área, ou seja, você exerce influência sobre ela e sobre as pessoas que nela estão. Mas claro, essa influência pode ser tanto positiva quanto negativa, cabendo a nós fazermos o nosso mellhor ou não. Talvez por isso eu esteja aqui. Buscando maneiras de contribuir positivamente para este meio.

Vários motivos me fizeram criar este blog. Destaco dois principais: Linux e o Software Livre; e a comunidade Ruby on Rails.

O primeiro é até obvio. Quando você se envolve (seja de maneira direta ou não) com o software livre, você é instigado a contribuir de alguma maneira. É um processo natural. E então você pensa: Como vou contribuir? Uma das melhores maneiras de se contribuir (e graças a ela temos uma internet tão grande) é com conhecimento. Contribua com o que você sabe! E nada mais propício do que um blog, no qual eu posso falar sobre minhas experiências, projetos, códigos, textos, e mais um montão de coisas bem legais!..=)  Dá-se um passo grande quando se reconhece a comunidade do Software Livre, mesmo não aderindo a ela. Essa filosofia de contribuição para as pessoas em volta é que faz com que várias soluções de problemas, de toda e qualquer espécie, estejam a um clique de distância. Muito disso credita-se ao Software Livre. Portanto, vamos contribuir!

O segundo motivo foi o 'empurrãozinho' que faltava para a criação deste blog. A comunidade Rails é impressionante. A maneira como se fala de programação e de construção de software te deixa animado. Você fica com vontade de participar, de compartilhar experiências e de contar pro resto mundo como aquilo é legal. O fascínio não está somente na linguagem Ruby, ou no framework Rais, mas sim na maneira de pensar e agir. E isso é envolvente. Portanto, por que não fazer parte e me mostrar como um programador Rails, e ainda compartilhando experiências.

Bom, a verdade é que chegou o momento em que decidi por não apenas sugar conteúdo e continuar sendo um mero espectador disso tudo, resolvi participar. E participar ativamente!

Vou usar deste blog pra falar da minha área preferida: Programação!! Mas não apenas códigos e mais códigos (claro que estes terão em abundância..;D), mas também sobre outros assuntos que estão em volta, como linguagens de programação, software livre, filosofia (??), cotidiano, e tudo de interessante sobre programação. E o melhor (ou não) que será tudo sob o minha visão...=)

 

Então é isso!

Abraços!