domingo, 4 de novembro de 2007

É fácil programar em ruby!

Um psicólogo de 53 anos sem qualquer experiência em programação deixou um comentário no forum Rubyonbr.org, no mínimo original:

Bom dia aos participantes do RubyOnBr. Assiti ontem a palestra do Shairon em um evento. Na verdade não fui lá para aprender Rubi, sou psicólogo, servidor públic em uma instituição federal. Fui para prestigiar um amigo meu em outra palestra. Cheguei mais cedo, então e vi um rapaz falando de linguagem humana e de programação,o ato de pensar, lingüística, gramática, “semiótica”, sistema cognitivo, e outras ciência que eu nem imaginava que a computação estudava. Ele disse “você aprende ruby sem querer”, fiquei sem entender e complementou com uma analogia meio parodia de Descartes “você pensa no programa ele logo existe”.

Então pedi meu filho que instala-se o programa que entende ruby o “irb”, peguei um manual na internet e comecei a ler, pensar e “programar”. Eu fiquei muito feliz por não saber programar e “brincar” de ser programador, eu com 53 anos me sentindo capaz, e como o palestrante disse “expressar o pensamento em um programa”.

Eu só estou falando isso aqui porque fiquei muito empolgado e lendo o forum vi que programadores podem “ser humanos e legais”.

Um abraço a todos e obrigado por essa experiência.

Alberto.


As palavras que realmente marcam este comentário são sem dúvida "ser humanos e legais". A programação não está só reservada a geeks, existem linguagens de programação que permitem passar de simples ideias à prática de forma fácil e intuitiva. O Ruby é sem dúvida uma destas linguagens...

domingo, 30 de setembro de 2007

Primeira oferta de emprego em Ruby on Rails em Portugal

Até ao momento foi a primeira oferta de emprego que tenho conhecimento para a posição Programador Ruby / Ruby on Rails.

A empresa é PrimeIT consulting.

Será esta a primeira oferta de muitas? Só o tempo o dirá...

domingo, 23 de setembro de 2007

Paginar utilizando AJAX

Perguntaram-me recentemente como paginar sem ter a necessidade de "carregar" novamente todo o layout da página. A resposta é bem simples, utilizar AJAX.

O exemplo que vou utilizar é o que está implementado na página http://complethotel.publituris.pt/entidades/alfa?letter=A

Como podem ver existe uma listagem de empresas que está paginada, 15 empresas por página.

Colocar a seguinte função no application_helper.rb:

def pagination_links_remote(paginator)
page_options = {:window_size => 2}
pagination_links_each(paginator, page_options) do |n|
options = {
:url => {:action => 'list', :params => @params.merge({:page => n})},
:update => 'table',
:before => "Element.show('spinner')",
:success => "Element.hide('spinner')"
}
html_options = {:href => url_for(:action => 'list', :params => @params.merge({:page => n}))}
link_to_remote(n.to_s, options, html_options)
end
end

Fonte do Código : http://wiki.rubyonrails.org/rails/pages/How+to+Paginate+With+Ajax


No controlador defino um método "list_alfa":

def list_alfa

@entidades_pages, @entidades= (paginate :entidades, :per_page => 15,
:order => 'entidades.nome ASC',
:conditions=> "entidades.nome LIKE '#{params[:letter]}%'")

render :partial => "list_alfa", :layout => false

end



Este método não faz mais do que uma query à base de dados, recebendo como parâmetro a letra pela qual queremos filtrar. Em seguida faz um render a um partial "list_alfa" e como queremos que o layout não seja carregado novamente para este partial colocamos layout=> false.

O Ruby on Rails tem algo fantástico que se chamam "partials" que não são mais que zonas da nossa página, ou seja uma parte de um todo. Todos os "partials" são identificados facilmente nas Views pois os ficheiros começam com "_", neste caso utilizo um partial chamado "_list_alfa.rhtml":

<% if @entidades_pages.page_count > 1%>
Pagina
<%= pagination_links_remote @entidades_pages %>
<%= image_tag("spinner.gif", :align => 'absmiddle',
:border => 0,
:id => 'spinner',
:style=> "display:none;")%>
<% end%>

( ... )

<% end %>


O "if" vai confirmar a necessidade de paginar, se o "page_count" for menor que 1 significa que existiram 15 ou menos resultados para apresentar não existindo necessidade de paginar. Em seguida é chamado o método "paginate_links_remote", que é responsável por apresentar os números de página com os respectivos links.

Muito simples!!


NOTA: Apenas coloquei o código que me pareceu mais importante. Portanto se tiverem problemas na implementação coloquem as vossas dúvidas.

quinta-feira, 30 de agosto de 2007

Ruby on Rails Cheat Sheet

Numa única folha A4 o essencial de Ruby on Rails!!

Dave Child, com a ajuda de Amy Hoy (Slash7) e David Heinemeier Hansson (criador do Ruby on Rails), conseguiu juntar a descrição da estrutura de directórios, as variáveis pré-definidas, as palavras reservadas, a sintaxe das expressões regulares e os métodos.

Ideal para ter na nossa secretária de trabalho.

quarta-feira, 29 de agosto de 2007

Noobkit Docs - API user friendly

O Noobkit é uma excelente forma de navegar na documentação da API da framework RubyonRails.

A documentação está dividida em três áreas: Gems, Rails e Ruby. As grandes vantagens que encontro são mesmo a organização e acima de tudo a pesquisa.

Existe a possibilidade de fazermos bookmarks e deixar comentários, no entanto para isso é necessário autenticação com OpenID.

Talvez a única parte menos boa é a grande dimensão dos anúncios Google que ocupam o topo de uma página de documentação, mas acaba por ser um pormenor que nada afecta a excelente qualidade deste projecto.

Emprego - Consultor Suporte Aplicacional

No ITJobs surgiu recentemente uma proposta de emprego para Consultor Suporte Aplicacional da empresa Indra - Sistemas, SA. RubyonRails não faz parte da lista de conhecimentos fundamentais, no entanto são valorizados.

RailsForge

Será que um RailsForge é necessário?

Existe um curto questionário no site http://railsforge.com/ acerca da necessidade de uma centralizar a informação e ideias da comunidade Rails.

Os 56 melhores Sites em RubyonRails

Podemos encontrar no softwaredeveloper.com uma lista dos 56 melhores sites desenvolvidos em RubyonRails. Estão organizados por diferentes categorias tais como Business, Travel, Local, Multimedia, Social Networks, Web Developers, Miscellaneous e como não podia deixar de ser fazem uma referência às 4 aplicações desenvolvidas pela empresa 37Signals, responsável pela génese e rápido desenvolvido do RubyonRails.

Alguns já conhecia, como o Shopify e os da 37Signals, mas de facto existem muito boas aplicações web por esse mundo fora, todas desenvolvidas com RubyonRails.

Vale a pena dar uma vista de olhos.

Emprego - Programador Web

No ITJobs surgiu recentemente uma proposta de emprego para Programador Web da empresa Enterweb - Serviços de Internet e Marketing, Lda. RubyonRails não é um dos requisitos principais mas é feita referência como sendo “conhecimentos opcionais (também valorizados)”.

Onde alojar Aplicações Rails

No mês de Maio o Pedro Sousa escreveu no site da comunidade portuguesa de Ruby, um artigo interessante acerca dos serviços existentes no mercado para alojar aplicações Rails.

Basicamente o artigo do Pedro Sousa apresenta outros 2 artigos que fazem uma análise a algumas das soluções disponíveis (que na minha opinião são as principais).

Apenas acrescentava a ClusterCube que disponibiliza um serviço a preços bastante competitivos, por exemplo um particular que pretenda alojar o seu site ou blog, poderá adquirir o serviço desembolsando entre 15€ a 38€, dependendo das suas necessidades. No artigo do Pedro Sousa, o Alcides Fonseca colocou um post de resposta em que refere igualmente o serviço da ClusterCube, segundo ele a empresa disponibiliza óptimo suporte técnico. Quem conhece que comente. Sinceramente sinto-me tentado a experimentar.

Primeiro site lançado utilizando RubyonRails

Lancei recentemente o meu primeiro site desenvolvido totalmente em RubyonRails. Até ao momento apenas tinha feito aplicações para a intranet da empresa onde trabalho.

O endereço do site é http://www.complethotel.publituris.pt, é um directório de empresas da área de hotelaria. Quando foi lançado era HTML 4.01 Strict Valid, no entanto houve a necessidade de colocar publicidade online e o script gerado pelo phpAdsNew (agora designado Openads) acabou por estragar. Tem igualmente um excelente resultado na validação da acessibilidade (WatchFire).

Fica como exercício descobrir onde utilizei AJAX!!

O desenvolvimento foi muito rápido, pouco mais de 3 ou 4 dias. Não existe nada de extremamente complexo. Deixo aqui uma descrição de algumas das funcionalidade implementadas com recurso ao RubyonRails:

  1. Na página inicial surge uma imagem aleatória de uma das empresas em destaque no site.
  2. A alteração do highlight das secções no menú tem como base a alteração do controlador utilizado.
  3. É feita pesquisa apenas no campo "nome de empresa". Brevemente será disponibilizada a pesquisa avançada.
  4. Listagem de empresas por separadores e sub-separadores.
  5. Listagem de empresas por ordem alfabética.
  6. Diferenciação entre empresas anunciantes e não anunciantes na listagem

Brevemente espero colocar alguns exemplos de algum código.

Ruby on Rails - Instalação

Todo o processo de instalação é muito simples, precisamos do seguinte:

1. Interpretador de Ruby (sim, o Ruby é interpretado e não compilado).

2. RubyonRails

3. Base de Dados. Aconselho Mysql.

No caso de utilizarem Windows, existe já uma solução integrada, o InstantRails, que contém Ruby, Rails, Apache e Mysql. Não é necessária instalação, basta colocar num directório à escolha e iniciar o executável.

No caso do Linux costumo instalar em primeiro lugar o interpretador de Ruby e depois tudo o resto. Em plataformas como o Debian ou Ubuntu um simples apt-get é a solução ideal para instalar o Ruby:

% sudo apt-get install ruby irb rdoc

Quando já temos o Ruby instalado existe algo fantástico, o RubyGems, muito semelhante ao apt-get, que nos permite instalar e gerir vários pacotes. Basta fazer o download, descompactar e correr "ruby setup.rb". Depois tudo se torna mais simples, a partir da linha de comandos podemos instalar o Rails e todas as suas depedências:

gem install rails --include-dependencies

Para OS X recomendo a utilização do Locomotive.

Em qualquer dos casos podemos recorrer à linha de comandos para criar uma aplicação Rails:

rails path/to/your/new/application
cd path/to/your/new/application
ruby script/server

Basta aceder a http://localhost:3000 para verificarmos se tudo correu bem.

Recomendo a instalação do Eclipse e em seguida o RadRails, de modo a poderem desfrutar de um ambiente de desenvolvimento gráfico. No qual podem criar facilmente projectos, fazer a gestão de diferentes aplicações e servidores.

Para instalação do RadRails recomendo este tutorial passo a passo do Carlos Eduardo.

Primeiro Post

Olá a todos!

Este blog tem como principal objectivo dar a conhecer a plataforma RubyonRails.

O título "Web development that doesn´t hurt" tem o seu sentido quando pensamos na facilidade em colocarmos "qualquer coisa a mexer" rapidamente, para além disso é open-source.

Quando visitamos a página desta web framework encontramos alguns vídeos e apresentações que nos deixam rapidamente com vontade de experimentar, dou algum ênfase ao vídeo creating a weblog in 15 minutes (apesar da quantidade enorme de "OOps") que mostra a facilidade em criar uma aplicação web, neste caso como o próprio nome indica criar um simples weblog.

Mas como nasceu esta framework? Costumo interligar o crescimento das designadas aplicações web2.0 com aumento de popularidade do RubyonRails associado ao AJAX. A facilidade do Rails é realmente impressionante e acima de tudo é extremamente intuitivo.

As aplicações Rails são implementadas utilizando a arquitectura MVC (Model-View-Controller), muitas outras plataformas utilizam esta arquitectura (Struts, Zend, Catalyst, Django), ou seja existe uma zona para diferentes partes do código, e todas estas partes interagem de uma forma standart, iniciamos o desenvolvimento com todo a estrutura da aplicação já criada. Para além disso todas as aplicações Rails também vão criando automaticamente rotinas de testes sempre que adicionamos novas funcionalidades.

Mas a grande vantagem desta framework, e que para mim faz a diferença, é a linguagem de programação Orientada a Objectos Ruby. É muito fácil de escrever código e acima de tudo é muito fácil de ler código nesta linguagem pois evitam-se muitos parêntesis, chavetas, declaração de variáveis que complicam o desenvolvimento e a leitura do código.

Com isto não quero dizer que esta plataforma é melhor do que qualquer outra, tem as suas vantagens perante outras, tendo igualmente as suas desvantagens. No entanto não custa experimentar e o conhecimento não magoa...