Arquivo da categoria ‘Ruby’
25-09-2009
Como tenho ultimamente estado meio ausente do blog, resolvi criar ao menos um post rápido.
Estes dias tive necessidade de colocar um ícone no tray do ubuntu, visando um possível desenvolvimento posterior. Com isso resolvi fazê-lo em Ruby + GTK.
Primeiro é necessário ter instalado o Ruby ( caso não tenha ele instalado veja o tutorial Aqui ) e o GTK.
Para a instalação do Gtk para o ruby no Ubuntu é preciso apenas rodar o comando abaixo:
sudo apt-get install ruby-gnome2
Após a instalação está pronto para usar-mos.
#Adicionando a biblioteca
require "gtk2"
#Criando objeto
tray = Gtk::StatusIcon.new
#Define a imagem que aparecerá
tray.file = "icone.png"
#Cria uma verificação de ação
#No clique no icone
tray.signal_connect('activate') do
puts "Clicou no tray"
quit
end
#Método para fechar o GTK
def quit
Gtk::main_quit
end
#Comando para iniciar o GTK
Gtk.main
Este pequeno código pode gerar inúmeras possibilidades de implementações legais.
Mais tarde posto algumas coisas sobre Ruby com GTK.
Publicado em Programação, Ruby, Ubuntu | Tagged GTK, Ruby, Tray, Ubuntu | Deixar um comentário »
03-05-2009
Ao tentar usar o openssl com o shoes tive o seguinte problema, ele pedia o arquivo ssleay32.dll, depois de bater um pouco a cabeça, pesquisando e testando algumas soluções, decidi baixar o arquivo de instalação do openssl para windows e lá estava o arquivo que o shoes pedia.
Então copiei da pasta bin o arquivo para a pasta do shoes e não funcionou, deu erro falando que era neste arquivo libeay32.dll, então copiei ele também e pronto, openssl funcionado no windows e sem problemas.
Os instalador do openssl do windows pode ser encontrado neste link openssl-0.9.8e_WIN32.zip. Os arquivos estão dentro da pasta bin.
Publicado em Programação, Ruby, windows | Tagged OpenSSl, Ruby, Shoes, windows | Deixar um comentário »
27-04-2009
Para utilizar a Cifragem RSA com ruby, utilizaremos o OpenSSl.
Incluindo a biblioteca Openssl
require "openssl"
Criando uma chave privada:
chave_privada= OpenSSL::PKey::RSA.new(1024)
Segundo o algoritmo, a chave privada RSA é formada de três número primos representados pelas letras: P,Q,D.
Para saber o valor de cada uma delas é necessário somente utilizar o seguintes comandos:
chave_privada.p
chave_privada.q
chave_privada.d
Para gerar uma chave publica, a qual será usada na decifragem, é necessário apenas o seguinte comando:
chave_publica=chave_privada.public_key
A partir da chave privada consegue-se cifrar um texto por exemplo: “Brincando com RSA”
texto_cifrado=chave_privada.private_encrypt("Brincando com RSA")
Como resultado se obtém o texto:
texto_cifrado
=>”\215\322\351\35331\273\av\200\372a_k32\f\21230\336z359[\257^900>\343\345>B\335d v24\207\350\327\e\355Z\2263\bfKW06\312\216\nN35\343/\303Kr\217\254\333k%\366\2615Lz\360\253\205\352\212\303?\366P\”\372o C\24736.\233W\252\240\304\27505\23220\272M\305\303\363@Q\353B\311w\363\336\265\363\317′\270\263<\32535g\277\234#238~\316WL\335″
Para decifrar o texto acima, poderíamos utilizar a mesma variável como abaixo:
chave_privada.public_decrypt(texto_cifrado)
=> “Brincando com RSA”
Mas como dificilmente em uma mesma instância existiria cifragem e decifragem RSA, o texto da chave publica deve ser salvo e utiliza-se da seguinte forma, cria-se uma chave publica como no código abaixo:
nova_chave_publica = OpenSSL::PKey::RSA.new(chave_publica)
Assim para decifrar o texto é só utilizar o seguinte comando:
nova_chave_publica.public_decrypt(texto_cifrado)
Para saber os valores de E e N que formam a chave publica utiliza-se os seguintes comandos
chave_privada.e
chave_privada.n
Para mais informações acesse a Documentação oficial.
Publicado em Programação, Ruby | Tagged Cifragem, Decifragem, OpenSSL::PKey::RSA, RSA, Ruby | Deixar um comentário »
22-04-2009
Uma dica rápida, mas que pode ajudar muito, apartir da versão 2.2.0 do rails foi adicionado uma configuração que especifica a pasta padrão da qual é rodada a aplicação, ajudando assim a se ter várias aplicações em um unico domínio.
Por padrão a aplicação rails pensa que está no / do dominio, gerando o seguinte erro caso não esteja.
Exemplificando ao acessar http://www.meuservidor.com.br/minha_aplicacao .
Routing Error
No route matches "/minha_aplicacao" with {:method=>:get}
Então para resolver isto é necessário apenas adicionar a linha abaixo ao envoriment.rb trocando o “/minha_aplicacao” pela pasta onde ela esta.
config.action_controller.relative_url_root="/minha_aplicacao"
Espero ter ajudado.
Publicado em Linux, Ruby, Ruby on Rails | Tagged No route matches, passenger, Rails, relative_url_root, Ruby, Ruby on Rails | Deixar um comentário »
18-12-2008
Ontem ao instalar o sistema no servidor de um cliente, me deparei com o seguinte erro :
Error message:
No such file or directory - /nonexistent
Já tinha visto este erro, mas não sabia como resolvê-lo e nem porque ele acontecia.
Ele existe pois alguns serviços do pessenger estavam sendo rodados por um usuário chamado nobody, e ao procurar a pasta “home” deste usuário, o ruby recebia “/nonexistent” como sendo sua pasta.
Update: Existe uma forma melhor de resolver isto, do que a apresentada abaixo, veja ela Aqui. Obrigado Walter.
A solução encontrada pra esse erro foi criar a pasta /nonexistent com o comando com permissões de super usuário.
# mkdir /nonexistent
Esta foi a solução mais rápida encontrada, para ser resolvido o problema, mas acho que deve existir uma forma melhor de corrigi-lo.
Espero ter ajudado.
Publicado em Linux, Programação, Ruby, Ruby on Rails, Ubuntu | Tagged erro, Linux, mod_rails, passenger, Rails, Ruby, Ubuntu | 1 Comentário »
11-12-2008
Mesmo após o lançamento do rails 2.2 muitos servidores e programadores ainda usam o rails 1.2, pois tem maior número de servidores que o suportam, ou porque já possuem um sistema desenvolvido nesta versão.
Para instalar versões mais antigas do rails utilize o comando:
gem install rails -v VERSAO
Ou seja instalar a versão 1.2.6 use:
gem install rails -v 1.2.6
Atenção: Este comando necessita de permissões de administrador.
Após instalado, para criar uma aplicação com uma das versões anteriores utilize na seguinte sintaxe:
rails _VERSAO_ nome_da_aplicacao
No caso de uma aplicacao rails 1.2.6 o comando ficaria assim.
rails _1.2.6_ blog
Publicado em Programação, Ruby, Ruby on Rails | Tagged Programação, Rails, Ruby, Ruby on Rails | Deixar um comentário »
27-11-2008
Por ter suporte a diferentes tipos de bancos de dados, ruby / ruby on rails se torna uma ótima ferramenta para fazer integrações/exportações com bancos legados.
Mas aí surge o grande problema, normalmente bancos de dados legados, não seguem o padrões para os quais o Active Record foi desenvolvido, mas para isso foram desenvolvidos alguns itens dentro do própria classe ActiveRecord para você poder adaptar o seu Ruby/Ruby on Rails ao seu velho banco de dados legado.
Entre elas estão:
set_table_name
Este método faz com que o model acesse a tabela informada. Ele torna-se necessário pois como padrão o model tenta acessar a tabela que tem o mesmo nome que o seu arquivo/classe pluralizado, e também para poder criar models com nomes mais faceis e de melhor entendimento.
set_table_name "nome_da_tabela"
set_primary_key
Este método faz com que o model reconheça um campo primário diferente de id que é o padrão.
set_primary_key "nome_do_campo_primary_key"
set_inheritance_column
Outra coisa normal a se deparar em uma importação/exportação é com o seguinte erro:
ActiveRecord::SubclassNotFound: The single-table inheritance mechanism failed to locate the subclass: 'folder'. This error is raised because the column 'type' is reserved for storing the class in case of inheritance. Please rename this column if you didn't intend it to be used for storing the inheritance class or overwrite Nodulo.inheritance_column to use another column for that information.
Ele aparece pois um dos campos da tabela possui o nome reservado pelo ActiveRecord, no caso acima o mais conhecido, o aparecimento do campo ‘type’, quando se está desenvolvendo o banco de dados do zero aconselha-se a trocar o nome do campo, mas quando temos de fazer o uso da tabela e não podemos modificar nada tempos um “problema”. Os nomes reservados são palavras utilizadas neste caso pelo activerecord para dar informações sobre o campo. No caso do type ele serve para informar qual é a o tipo do campo (subclasse).
Para solucionar isso utiliza-se o método abaixo para trocar o nome do campo da tabela, sem necessitar alterar realmente no banco de dados.
set_inheritance_column "novo_nome_para_o_campo"
Abaixo um exemplo de utilização.
Exemplo:
class Nodulo < ActiveRecord::Base
set_table_name "node"
set_primary_key "node_id"
set_inheritance_column "tipo"
end
Publicado em Programação, Ruby, Ruby on Rails | Tagged active-record, ActiveRecord, Banco de dados, exportação, inheritance_column, integração, Rails, Ruby, set_primary_key, set_table_name | Deixar um comentário »
28-10-2008
Hoje fui testar os passos que comentei em outro post no ubuntu 8.10 , pra verificar se estavam corretos.
Pra não ficar na monotonia resolvi instalar o ruby do source, como eu já sabia que poderia ter problemas na hora de instalar o rubygems com o zlib instalei os pacotes zlib1g e zlib1g-dev, como citado na atualização daquele post.
Continuei feliz da vida instalando, funcionou direitinho o ruby , rubygems e o rails, e quando fui instalar o passenger o gem instalou corretamente mas tive uma feliz surpresa na hora de rodar o comando : sudo passenger-install-apache2-module
Apareceu então a seguinte tela:* GNU C++ compiler… found at /usr/bin/g++
* Ruby development headers… found
* OpenSSL support for Ruby… not found
* RubyGems… found
* Rake… found at /usr/local/bin/rake
* Apache 2… found at /usr/sbin/apache2
* Apache 2 development headers… found at /usr/bin/apxs2
* Apache Portable Runtime (APR) development headers… found at /usr/bin/apr-1-config
* fastthread… found
* rack… found
Pesquisei um pouco e encontrei em alguns fóruns a dica de instalar os pacotes: libopenssl-ruby1.8, openssl, libssl-dev e libssl0.9.8 , instalei os pacotes e nada.
Lembrei então de que as versões >= 1.8.7 ficam na pasta /usr/local/lib e não na /usr/lib que é a padrão da versão 1.8.6 que está como instável nos repositórios do ubuntu.
Então não teve jeito, desinstalei o ruby, apagando mesmo a pasta /usr/local/lib/ruby e na hora de instalar, adicionei o seguinte:
./configure --with-openssl-dir=/usr/lib
make
sudo make install
Após isso não tive mais problemas, instalei o rubygems, o rails e o passenger.
Espero que isso ajude.
Agradeço pelas visitas… qualquer dúvida é só deixar um comentário.
Obrigado
Publicado em Linux, Programação, Ruby, Ruby on Rails, Ubuntu | Tagged passenger, Rails, Ruby, Ubuntu | 1 Comentário »
17-10-2008
Hoje disponibilizei no github meu primeiro plugin rails, o what_i_take.
Ele funciona da seguinte forma, ele é um debuger que mostra o valor de algumas variáveis na view.
Assim podendo-se saber quais são os valores passados pelo params e pelo session para a sua view, e alem do mais, desenvolvi ele para ser visualizado através de uma tecla atalho, para não poluir a tela.
Para utilizar ele é só baixar e adicionar o código abaixo em sua view ou então em seu layout.
<%= what_i_take? %>
Segue abaixo uma imagem dele em ação:

plugin what_i_take
O link para o plugin é http://github.com/dannnylo/what_i_take/tree/master , gostaria de saber a opinião e sugestão de vocês.
Obrigado
Publicado em Programação, Ruby, Ruby on Rails | 1 Comentário »
06-10-2008
Estarei disponibilizando aqui as pastas onde, por padrão, está instalado o ruby, e o rubygems:
Ubuntu 8.04:
- Executável:
/usr/bin/ruby1.8
- Arquivos:
/usr/lib/ruby/
- gem:
/usr/lib/ruby/gems/
Ubuntu 8.04:
- Executável:
/usr/bin/ruby1.8
- Arquivos:
/usr/local/lib/ruby/
- gem:
/usr/local/lib/ruby/gems/
Em breve mais…
Caso você tenha o caminho do ruby no seu S.O. favorito, deixe no comentário e estarei adicionando aqui.
Obrigado
Publicado em Linux, Programação, Ruby, Ubuntu | Tagged caminho, gem, gems, pasta, Ruby, Ubuntu | Deixar um comentário »