Posts Tagged ruby
Problema ao tentar instalar a gem rmagick no Ubuntu
Publicado por mauriciovoto em Uncategorized em 29/02/2012
Olá pessoal, mais uma dica prática de instalação e configuração de ambiente rails.
Ao tentar instalar a gem rmagick no Ubuntu, após o apt-get install imagemagick, obtive o seguinte erro:
checking for Magick-config... no RMagick 2.13.1. Can't find Magick-config in .....
Basta instalar o pacote libmagick9-dev:
apt-get install libmagick9-dev
Até a próxima !
Html Reader, o experimento !
Publicado por mauriciovoto em gems, hpricot, html_reader, infinity_test, jeweler, rest-open-uri, rspec, ruby, spreadsheet, testes em 09/12/2010
Iae galera, vou aproveitar minha insônia e escrever mais um post, desta vez sobre ruby.
A bola da vez é uma aplicação que desenvolvi esses dias(https://github.com/mauriciovoto/html_reader) que surgiu com a necessidade de minha noiva estar um pouco revoltada de pedirem em seu trabalho para fazer um exaustivo trabalho de ctrl C + ctrl V. Ela tinha que copiar informações de todos os Procon do estado de SP. Daí que me surgiu a ideia de desenvolver algo para ajuda-la.
Esta foi uma ótima oportunidade para botar em prática algumas coisas que havia e venho estudando, algumas delas, recomendo fortemente, como o jeweler, o rspec(quem acompanha o blog e meu twitter sabe que venho estudando bastante esta ferramenta), o infinity_test e outras gems como hpricot, rest-open-uri e spreadsheet. Além de ser outro laboratório de git pois tenho o péssimo costume de desenvolver aplicações e mante-las em minha máquina.
Bom, para resumir o que utilizei, o jeweler é uma ferramenta para geração de gems, ou seja, gera um projeto ruby com uma mínima estrutura para iniciar um desenvolvimento ideal.
O rspec como já citei antes no blog, é uma ferramenta para escrever testes como especificações.
O infinity_test é uma biblioteca que permite ao desenvolvedor ver em tempo real se seus testes estão passando ou não, um autotester que a cada alteração que é feita, roda os testes em background e notifica(em conjunto com outra ferramenta, como o growl para mac os).
O hpricot e o rest-open-uri são gems que permitem a leitura do html dos sites, sugiro a leitura das documentações para quem quiser estudar, apliquei apenas o básico em minha aplicação.
Por último, o spreadsheet é uma gem para manipulação de planilhas excel, apesar da pouca documentação não tem muito segredo de uso. Também utilizei em minha aplicação o básico de geração, nada diferente do que encontramos na página da gem.
Espero que possam dar uma conferida na app: html_reader críticas e sugestões são sempre bem-vindas ! E mais uma vez agradeço ao meu digníssimo camarada @raulsouzalima pois ele me indicou várias dessas gems e também agradecer ao @danielvlopes que apresentou brevemente o jeweler em uma de suas aulas que tive o prazer de assistir.
rvm – o mágico gerenciamento de versões do ruby
Publicado por mauriciovoto em rvm em 24/11/2010
Salve salve rubistas, railers e demais developers !
O assunto de hoje, pelo menos para mim é o fantástico rvm. Como essa ferramenta é útil na vida de um desenvolvedor !
Se você deseja ter em sua máquina JRuby, Rails 3, Rails 2.3.8, Ruby 1.9.2, Ruby 1.8.7 e o melhor, de forma organizada, você tem que instalar urgentemente o rvm.
Esta ferramenta além de gerenciar as versões do ruby, também permite gerenciar as gems com o uso de gemsets que podemos chamar de “repositório” de gems para ilustrar melhor o que é, portanto, pode-se tem em sua máquina todas as versões do rails por exemplo.
Alguns comandos simples e básicos do rvm, após ter instalado:
- rvm list (lista todas as versões do ruby que você tem, incluindo jruby)
- rvm install 1.9.2 (instala a versão do ruby de seu desejo)
- rvm use 1.9.2 (para utilizar tal versão desejada)
- rvm system (volta para a versão setada como padrão no sistema)
- rvm gemset list (lista todos os “repositórios de gems disponíveis para seu ambiente atual)
- rvm gemset create rails303 (cria um “repositório” de gems)
- rvm gemset use rails303 (para utilizar o “repositório” desejado)
- para instalar as gems apenas o comum: gem install rails
Termino este post recomendando fortemente os railers a utilizarem o rvm, acho que é uma ferramenta essencial e requisito para um bom desenvolvedor RoR.
Fonte para os comandos básicos/estudo:
http://rvm.beginrescueend.com
Ah, não posso esquecer de dar créditos ao parceiro @raulsouzalima que me indicou o uso urgente da ferramenta !
Spreadsheet: solucionando bug em arquivos biff8
Publicado por mauriciovoto em gems, ruby, spreadsheet em 27/10/2010
Conforme prometido, vou atualizar com mais frequencia este blog e vou começar com um tópico bem interessante no meu ponto de vista: o Spreadsheet, uma gem para manipulação de planilhas Excel.
O Spreadsheet é bem tranquilo de se utilizar, apesar da pouca documentação em seu site(http://spreadsheet.rubyforge.org/GUIDE_txt.html), as tarefas básicas como escrever e ler uma planilha estão bem explicadas e tranquilas de se executar.
Tudo estava lindo e maravilhoso, instalei a gem na minha máquina(sudo gem install spreadsheet), comecei a usar tranquilamente até que me deparo com o seguinte erro ao ler uma planilha extensa:
../spreadsheet-0.6.4.1/lib/spreadsheet/excel/workbook.rb:67:in `shared_string': undefined method `content' for nil:NilClass (NoMethodError) Ao procurar uma solução, encontrei o seguinte link que explica melhor este erro:
http://rubyforge.org/tracker/index.php?func=detail&aid=28007&group_id=678&atid=2677
Para resumir, o que acontece é que há um bug no momento de varrer as strings longas nas planilhas que se enquadram no formato BIFF8, onde ao obter os valores(strings) e armazená-los utilizando identificador, ocorre um erro ao definir o tamanho da string que foi armazenada anteriormente pois não considera no tamanho do array os caracteres rich-text e os Asian-phonetics como disse o rapaz que reportou o bug, que felizmente foi resolvido em uma issue no github, onde um commit salvador no arquivo biff8.rb resolve o problema:
http://github.com/mugathur/ruby-spreadsheet/commit/30f8c6b25f87fd34cb76e0377975164a55b40ffa
Isto resolve o problema e deixa o Spreadsheet redondo para ser utilizado.
Ótima gem, recomendo !
Obs1: Estou estudando para aprimorar o uso do GitHub, talvez se eu tivesse um maior conhecimento nesta ferramenta, não precisasse dar esta volta toda para solucionar o problema.
Obs2: Reforço aqui, que sou aprendiz e meu conhecimento é muito pouco, o intuito deste blog não é somente ajudar os leitores, mas também que os leitores me ajudem. Caso tenham alguma observação ou correção sempre será bem-vindo !
Linguagem Ruby
Publicado por mauriciovoto em akita, ruby, tutorial em 12/10/2009
Olá a todos !
Para aqueles que estão se interessando por Ruby on Rails, é necessário que no minimo tenha uma boa noção de orientação à objetos. Aos que já possuem essa noção aqui vai uma dica para o aprendizado da linguagem Ruby em si. São os tutoriais do Akita on Rails:
Parte1: http://akitaonrails.com/2008/11/10/micro-tutorial-de-ruby-parte-i
Parte2: http://akitaonrails.com/2008/11/10/micro-tutorial-de-ruby-parte-ii
Parte3: http://akitaonrails.com/2008/11/10/micro-tutorial-de-ruby-parte-iii
Pretendo em breve postar particularidades do framework Rails. Iniciei com o material de Ruby pois faz mais sentido aprender a linguagem primeiro para depois partir para o famework.
Até breve.
Evitando a SQL Injection
Publicado por mauriciovoto em Ruby on Rails, SQL Injection em 03/10/2009
Olá galera, estou aqui agora para falar sobre um problema muito comum que acontece no mundo dos desenvolvedores, o sql injection. Que nada mais é do que o usuário inserir código malicioso(SQL) em um campo de seu site, software ou o que seja.
Por exemplo, se você faz em algum momento a determinada consulta:
User.find(:all, :conditions => "name = '#{params[:name]}'")
Isso possibilita o usuário a inserir um código malicioso através de sua consulta, ou seja, o usuário pode digitar no campo “name” o seguinte:
'; DELETE FROM PROJECTS; SELECT * from projects where '1'='1
Reultando em:
SELECT * FROM users WHERE name = ''; DELETE FROM USERS; SELECT * from users where '1'='1'
Vixxxx alguém deletou todos os dados da sua tabela de usuários. Mas calma, a solução para este
problema é bem simples, basta ao invés de passar toda a condição com uma string, passa-se um um
array ou um hash:
array:
User.find(:all, :conditions => ["name = ?", params[:name]])
hash:
User.find(:all, :conditions => {:name => params[:name]})
Pequenos detalhes como este são bem relevantes para nós desenvolvedores.
Até a próxima !