Rails e Javascript: Escrevendo seu próprio javascript.
Posted: December 9th, 2009 | Author: Márcio Gasparotto | Filed under: Tutorial, ruby on rails | 2 Comentários »O integração padrão entre Ruby on Rails e Javascript sempre foi muito boa, as possibilidades com rjs, métodos que respondem javascript, json, etc. ajudam muito.
Mas o que vou falar hoje é sobre como escrever seu próprio javascript, sem depender dos helpers do rails. Na minha opinião, embora a integração existente ajude muito, quando queremos ir pouco mais fundo, ou em um projeto muito grande que exija mais do que simples chamadas ajax eu prefiro criar meu próprio javascript, isso pelo simples fato de que faço do jeito que eu quero, organizo minha biblioteca de arquivos js da forma que melhor se adapta ao projeto e tenho total controle sobre o que estou fazendo, não fico “preso” ao jeito de fazer “imposto” pelo rails.
Só um aparte neste ponto, NÃO estou dizendo que rjs é ruim pelo contrário ele ajuda muito em muitas coisas.
Bem, dito isso vamos por a mão na massa! Em primeiro lugar aviso que usarei o jquery ao inves do prototype, não vou entrar em detalhes de como configurar o jquery no rails pra isso você pode usar o jrails (eu uso).
O cenário que escolhi para esse post foi algo bem básico, só para exemplificar mesmo, imagine o seguinte: Um cadastro de produtos, esses produtos tem uma categoria e uma subcategoria, então quando eu escolher uma categoria em um select quero que o select de subcategorias seja carregado dinamicamente:
o meu controller eu adiciono o seguinte metodo: (leia os comentários no código)
Ai na view do metodo:
Por fim no meu formulário, na pagina de cadastro de produto: (leia os comentários no código)
Vejam que para o exemplo eu estou usando o formtastic, por isso o formulário um pouco diferente do convencional.
Lembre sempre de setar o método no routes.rb também
map.resources :products, :collection => { :ajax_load_sublinhas => :get }
Vejam que temos muita liberdade para fazer a coisa do nosso jeito, esse foi só um exemplo bem simples de selects dinâmicos, mas o leque de coisas que podemos fazer é o quanto a nossa imaginação permitir.
Qualquer dúvida é só comentar.
This is it!
Uma semana de Mac OS X.
Posted: September 1st, 2009 | Author: Márcio Gasparotto | Filed under: Mac | Tags: Mac | 4 Comentários »Depois de usar por 3 anos o meu querido Linux, no caso, o Ubuntu, comprei na semana passada meu primeiro mac, um macbook jeitoso por um ótimo preço.
Deixei pra escrever esse post depois de uma semana para que eu tivesse um pouco mais de base para falar sobre o mac, vou dividir minha impressões em algumas partes.
Preço
Um macbook por R$ 2.875,00 eu achei bem barato (com base na experiência que estou tendo), um pc no mesmo padrão sairia por uns R$ 2.200,00.
Hardware
Meu note anterior era um vaio, maquina top, muito boa, ótimo acabamento, mas perto do macbook, é incontestável que a apple mata a pau no acabamento, com todo respeito ao vaio, mas o mac é muito melhor desenhado e planejado, tudo no lugar certo, e com um cuidado notável nos detalhes.
Usabilidade
No começo eu estranhei um pouco, mesmo ja tendo contato anterior com o Mac OS X, na hora de usar o sistema full time sempre fica resquícios dos antigos habitos, mas de modo geral acho muito tranquilo de fazer as coisas no mac os, principalmente depois que se começa a acostumar com as teclas de atalho tudo fica muito simples.
Software Básico (browser, im, agenda, organizador de fotos, player de musica e vídeo, etc.)
Sem dúvida nenhuma é aqui que a coisa começa a ficar desigual, mesmo o Linux tendo muitas opções, e algumas muito boas por sinal, os softwares de uso no dia-a-dia no mac são bem mais polidos, a maioria dos aplicativos usa com competência o recurso de drag on drop, além de interfaces mais objetivas e uma integração muito boa entre os aplicativos.
Desenvolvimento
Muito tranquilo, um terminal competente, parecido com o do Linux, Para programar eu estou usando o Text Mate, que realmente é tudo isso que dizem por ai, é bom mesmo. E mais ruby, rails, algumas gems aki e ali, php, mysql e tudo mais. Resumo da opera é que tenho tudo que tinha no linux, com um editor consideravelmente melhor (eu usava o gedit turbinado) e ainda ganho algumas ferramentas para edição de gráficos (as vezes preciso recortar uns pngs, criar um ou outro botão, etc.) e no linux só tinha o gimp e o inkscape que eram descentes, agora as possibilidades nessa área aumentaram bastante.
Conclusões
Não fiz nenhuma comparação dos sistemas em si, Linux X Mac, acho que o caminho não é esse, tudo que faço no mac hoje, eu também fazia no linux anteriormente, mudou muito a maneira de se fazer algumas coisas, o Mac é bem mais…eu diria…lapidado que outros sistemas, o linux é muito bom, mas ter que ficar orando para que não quebrasse algo cada vez que atualizava o meu driver de vídeo intel, eu confesso que era muito frustante, assim como compilar drivers windows para adaptadores wireless, mas isso é outra história, é injusto comparar algo gratuito com algo que você paga pra ter, meu saudoso avô ja dizia “cavalo dado não se olha os dentes”.
Eu estou feliz da vida com meu macbook, o Mac é melhor sim que o Linux, pelo menos esta sendo até agora, afinal ele tem mesmo que ser, eu e todos os outros macqueiros por ai pagamos a Apple por isso, e se você puder, compre um Mac, você não vai se arrepender.
Sumido…
Posted: May 24th, 2009 | Author: Márcio Gasparotto | Filed under: diversos | Comente! »Oi Pessoal, sei que to meio sumido nos últimos meses, mas espero em breve voltar a postar pelo menos uns dois ou três posts por mês.
To trabalhando muito e o tempo não perdoa, como diria o Cazuza “o tempo não para”!
Até breve.
Livro grátis! Ruby on Rails 2.2 – O que há de novo?
Posted: January 19th, 2009 | Author: Márcio Gasparotto | Filed under: Dicas, ruby on rails | Comente! »
O Carlos Bandro liberou a versão em português do livro Ruby on Rails 2.2 – o que há de novo? para download, “di grátis”, isso mesmo free!
Eu já tinha adquirido o mesmo na data do lançamento junto com o screencast, e até ja tinha dado a dica aqui mesmo.
Parabéns Carlos pela iniciativa!
Link do post no blog do Carlos
Abraço!
(Rails + Merb) Mais uma vez os rubistas saem na frente…
Posted: December 24th, 2008 | Author: Márcio Gasparotto | Filed under: merb, ruby on rails | 1 Comentário »Eu sou uma pessoa a favor da diversidade, acho muito bom podermos escolher entre esse ou aquele, gostar mais disto do que daquilo, ter que fazer uma escolha nos obriga a tomar uma decisão, faz com que paremos e pensamos se o que estamos optando realmente é o melhor para o momento.
No desenvolvimento web não é diferente, temos muitas opções de linguagens, bibliotecas javascripts, frameworks, etc.
Mas a diversidade que eu defendi no primeiro parágrafo começou a jogar contra quando o assunto é frameworks web, os últimos anos foi um festival de aberrações frameworks pipocando de tudo quanto é lado, alguem arrisca dizer quantos frameworks existe hoje em PHP, Java, Ruby ou qualquer outra linguagem?
Perdi a conta de quantos posts eu vi pela net a fora com o título “Faça seu próprio web framework (linguagem que vc escolher) em 3 passos”.
É aqui, exatamente neste ponto, onde tem um monte de gente indo cada um para um lado que os “rubistas” saem na frente, pararam de “espalhar” e decidiram se “juntar”, porque aquele ditado que diz: “antes só do que mal acompanhado” é balela, eu prefiro aquele que diz: “duas cabeças pensam melhor do que uma”, ou ainda: “é melhor serem dois do que um, pois se um cair o outro ajuda a levantar”.
Nesse ponto a união do Rails com o Merb (os dois maiores frameworks escritos em Ruby) foi um grande passo em direção a algo melhor, algo que será feito por mais pessoas, com mais idéias e ideais, mais gente pensando na melhor forma de resolver um determinado problema.
Por que ficar cada um de um lado investindo tempo, estudo, pesquisas e esforços pra no final fazerem a mesma coisa, muitas vezes quase do mesmo jeito?
Estou muito otimista em relação a esta fusão, e que isso sirva de lição insentivo para outros “core teams”.
Page.reload com o jrails
Posted: November 26th, 2008 | Author: Márcio Gasparotto | Filed under: Dicas, ruby on rails | Tags: dica, jrails, ruby on rails | Comente! »No rails 2.2 foi adicionado um novo helper para os templates .rjs o reload, pra quem assim como eu, usa o jrails para trocar o prototype pelo jquery fica essa dica, pois até o momento pessoal do jrails não atualizou o mesmo, portanto se você chamar o page.reload usando o jrails vai quebrar.
Para solucionar o problema é simples, basta incluir o codigo abaixo no arquivo jrails.rb (vendor/plugins/jrails/lib/jrails.rb) dentro da Classe JavaScriptGenerator e do Módulo GeneratorMethods.
Abraço!
Ubuntu 8.10 + Ruby + Rails + Gedit + Git = Ótimo ambiente!
Posted: October 31st, 2008 | Author: Márcio Gasparotto | Filed under: Gedit, Git, Linux, Ubuntu, ruby on rails | Tags: Gedit, Git, ruby on rails, ubuntu intrepid | 18 Comentários »Ontem (30-10-2008) foi liberado o Ubuntu 8.10 (Intrepid Ibex), e eu como sempre não aguento esperar, desta vez eu já vinha me preparando (fazendo backps, etc..) pra formatar minha máquina. Foi só baixar o .iso queimar no cd colocar no drive e mais uns 20 minutos o Intred já estava rodando.
1 etapa: Configurações Básicas do sistema
Eu sempre instalo as bibliotecas e programas para áudio, video, gerenciador de clipboard, etc…mas isso era meio chato, mas isso já era! O Hamacker fez um script que faz tudo isso, você só precisa selecionar o que quer e pronto! Parabéns Hamacker pelo ótimo trabalho!
2 etapa: Instalando o Ruby e o Rails
a) Abra o terminal e execute o comando:
sudo apt-get install ruby irb ri rdoc ruby1.8-dev libzlib-ruby libyaml-ruby libreadline-ruby libncurses-ruby libcurses-ruby libruby libruby-extras libfcgi-ruby1.8 build-essential libopenssl-ruby libdbm-ruby libdbi-ruby libdbd-sqlite3-ruby libsqlite3-dev libsqlite3-ruby libxml-ruby libxml2-dev
b) Baixe a ultima versão do rubygem (neste data é a 1.3.1), extraia em um diretório, entre nesse diretorio através do terminal (cd diretorioondeextrai) e execute o seguinte comando:
sudo ruby setup.rb
c) Agora vamos instalar o Rails, no terminal execute:
sudo gem install rails
E depois
sudo gem install sqlite3-ruby mongrel capistrano
d) Agora vamos instalar o mysql e suas bibliotecas, o instalador pedirá pra você escolher uma senha para o usuário root do mysql, eu deixo em branco, pois só uso minha maquina pra desenvolvimento, mas se quiser é só digitar a senha que preferir, no caso de maquinas de produção, pelo amor de Deus, você DEVE por uma senha…rs.
sudo apt-get install mysql-server mysql-client libdbd-mysql-ruby libmysqlclient15-dev
Tive por base este post que era para o ubuntu 8.04. Pronto! neste momento seu ambiente ruby, rails e mysql já está configurado, vamos agora ajustar o gedit.
3 etapa: Instalando os plugins para o Gedit
O Gedit vem instalado por padrão no ubuntu/gnome, entáo só vamos incrementá-lo.
a) vamos começar instalando um pacote padrão de plugins
sudo apt-get install gedit-plugins
b) Agora vamos baixar o Gmate, criado pelo Alexandre, que recomendo a todos que usam o gedit e rails acompanharem pois ele tem feito muita coisa legal, fica aqui também os meus parbéns para o Alexandre.
Na página do Gmate no github tem as instruções para a instalação do mesmo. Outro plugin que eu sempre instalo e não está no gmate é o Advanced Bookmarks (no final da página mostra como instalar).
LEMBRE-SE: para ativar esses plugins e ajustar o visual e as demais configurações do Gedit você deve clicar em Editar->Preferências ai você poderá ajustar da sua maneira.
d) E tem mais, segue os links para instalar o notificador de testes (autotest) e melhorar a aparencia da famosa fonte Monaco no Ubuntu/Gedit.
UPDATE: Instalando fonts: Uma das maneiras de instalar fonts no ubuntu é criar um diretório chamado .fonts na pasta home/seunomedeusuario e colocolar as fontes que deseja dentro dele, atenção para o . (ponto) antes do nome fonts, isso significa que o diretório será oculto e da próxima vez você não o verá por padrão, mas basta dar um ctrl+h que todos os diretórios ocultos aparecerão inclusive o .fonts é claro….dããã.
4 etapa: Instalando mais ferramentas (Git, Subversion, etc)
a) Instalar o git.
sudo apt-get install git-core git-doc git-svn git-gui gitk
git-svn é para integração com repositórios subversion, e git-gui e gitk são front-end para o git no caso você poderia escolher apenas um.
b) Instalar o subversion
sudo apt-get install subversion subversion-tools
c) Front-end para o mysql
sudo apt-get install mysql-admin mysql-query-browser
PRONTO! É isso, epero que ajude, e quem tiver dúvidas ou sugestões é só enviar. Abraço!
Ruby on Rails 2.2 – O que há de novo
Posted: October 27th, 2008 | Author: Márcio Gasparotto | Filed under: Dicas, ruby on rails | Tags: livro, ruby on rails | 2 Comentários »Acabei de adquirir o livro Ruby on Rails 2.2 – O que há de novo, e aproveito para parabenizar o Carlos Brando, pelo excelente trabalho. Parabéns Carlos!
Só li umas 15 ou 20 páginas ainda, mas já vi muita coisa legal, como especificar conditions usando hash e as mudanças no método validates_length_of.
Fica aqui a dica, comprei o pacote contendo o livro e o screencast por $16,00. Na cotação de hoje saiu por apenas R$36,80 o que acho que é até um valor simbólico pela qualidade e importância do conteúdo.
Search + params + will_paginate
Posted: October 26th, 2008 | Author: Márcio Gasparotto | Filed under: Tutorial, ruby on rails | Tags: rails, Tutorial, will_paginate | 2 Comentários »Depois que iniciei meu curso de ruby on rails na e-genial ministrado pelo Carlos Brando, tenho me dedicado ainda mais em conhecer e me aprofundar em rails, começar a fazer projetos realmente legais com a ferramenta e deixar de ser apenas mais um eterno iniciante ou um programador mediocre….
Esses dias estava trabalhando em um projeto pessoal, em rails é claro…rs, e precisei implantar uma busca no meu sistema, algo trivial, mas ai fui incrementar, paginar os resultados no estilo dig, etc… Nesse ponto tive alguns problemas com as rotas e na passagem de parâmetros, ai resolvi fazer esse mini tutorial de como resolvi o problema.
Se alguem conhecer uma solução melhor comenta ai.
Bem, vamos lá… Para paginar registros eu já estava usando o will_paginate, e minha solução ficou da seguinte maneira:
No meu controller (categorias_controller.rb) eu adicionei o seguinte metodo:
Como estava implantando o formulário de busca em uma tela já pronta e iria repetir esse form em vários lugares, criei um partial para o formulário da busca (_busca.html.erb).
A view (busca.html.erb) que apresenta os resultados ficou da seguinte maneira:
Observem a linha 26, quando chamo o will_paginate preciso passar como parâmetro a variável query que contem a expressão que esta sendo buscada:
No meu arquivo routes.rb eu adicionei uma collection no resouce categorias.
Veja que adicionei a :busca como sendo mais um resource de :categorias, o parametro :any significa que esse resource responderá :get/:post/:put/:delete, eu poderia simplesmente colocar :get, uma vez que o parâmetro nesse caso só é passado via url, mas deixei como :any pra exemplificar.
Ou coisa, pra não precisar ficar definindo os labels do will_paginate em todo os lugares, acrescentei no final(depois do ultimo end) do meu arquivo environment.rb as seguintes linhas:
Ai foi só reiniciar o server e partir pro abraço!
Abraço a todos.