h1

Instalando o Rails 3 Beta no Ubuntu

09-02-2010

Como muitos já sabem saiu a versão beta do Rails 3. Para quem deseja dar uma olhada nas novidades já é possível o instalar pelo gem install.
Abaixo estarei mostrando tudo que é necessário para que ele funcione no Ubuntu 9.10, o que talvez funcione perfeitamente para outras versões.
Se você possui o ruby e o rubygems já instalados sugiro que faça os passos 1,3,7.

1 – Começaremos instalando alguns pacotes necessários para compilação.
sudo apt-get install -y gcc g++ build-essential zlib1g zlib1g-dev sqlite3 libsqlite3-dev
2 – Agora instalamos o ruby.
sudo apt-get install -y ruby1.8 ri1.8 rdoc1.8 rake irb1.8
3 – Outro pacote necessário para compilação é o ruby1.8-dev que será instalado com o comando.
sudo apt-get install -y ruby1.8-dev
4 – Criando alguns links simbólicos para facilitar o trabalho.
cd /usr/bin
sudo ln -s ruby1.8 ruby
sudo ln -s ri1.8 ri
sudo ln -s rdoc1.8 rdoc
sudo ln -s irb1.8 irb

5 – Instalando o rubygems.
O código abaixo irá fazer o download da versão mais nova e a instalará.

cd
mkdir instalacao
cd instalacao
LINK=$(wget -qO - http://rubyforge.org/frs/?group_id=126 |grep "rubygems-" -m 1 | sed 's/.*href="//g'| sed 's/".*//g')
VERSION=$(echo $LINK | sed 's/.*rubygems-//g' | sed 's/.t.*//g')
wget http://rubyforge.org$LINK
ARQ=$(echo $LINK |sed 's/.*rubygems-//g' )
tar -xvzf rubygems-$ARQ
cd rubygems-$VERSION
sudo ruby setup.rb
cd ../..
rm -rf instalacao

6 – Link simbólico do rubygems
cd /usr/bin
sudo ln -s gem1.8 gem

7 – Instalando o Rails 3.0.0.beta.
Primeiro instale as gems com o comando.
sudo gem install tzinfo builder memcache-client rake rack rack-test rack-mount erubis mail text-format thor bundler i18n sqlite3
Instalando o rails.
sudo gem install rails --pre
Pronto agora verificando se funcionou corretamente.
rails -v
Rails 3.0.0.beta

Agora é só usar o rails 3 normalmente e brincar com as novas funcionalidades.
rails teste

h1

Rails e postgresql erro: “autenticação do tipo Ident falhou para usuário”

22-01-2010

Está é uma dica rápida, a algum tempo atrás comecei a trabalhar com postgresql no rails e me deparei com o seguinte erro.
autenticação do tipo Ident falhou para usuário "user"
De imediato pensei que o usuário ou a senha estavam inválidos, então os conferi e funcionavam corretamente quando acessava o phppgadmin.
A configuração de produção do meu database.yml era assim.
development:
database: app_production
adapter: postgresql
encoding: unicode
pool: 5
username: user
password: 'MINHA_SENHA'

Para minha surpresa o problema estava em meu database.yml mesmo, mas não eram usuário e senha, e sim as opções host e port que mesmo localhost e 5432 sendo padrão não funcionavam se não fossem informadas. Para resolver foi necessário especificá-las e pronto, funcionou corretamente.
A configuração de produção do meu database.yml ficou assim.
development:
database: app_production
adapter: postgresql
encoding: unicode
pool: 5
username: user
password: 'MINHA_SENHA'
host: localhost
port: 5432

h1

Erro na exportação SQL do phppgadmin no Ubuntu: invalid option — ‘d’

11-01-2010

Com a última atualização do postgresql no ubuntu 9.10 (versão 8.4.2 do postgresql) , apareceu um pequeno problema, o phppgadmin não estava mais conseguindo exportar os dados em SQL. Ao tentar executar a exportação a tela ficava em branco (sinal de erro de execução no código em PHP), verifiquei o log de erros do apache e encontrei o seguinte erro:

/usr/lib/postgresql/8.4/bin/pg_dump: invalid option — ‘d’
Try “pg_dump –help” for more information.

Pronto com essa informação percebi que o problema estava na remoção da opção -d do pg_dump na nova versão do postgresql, então procurei no phppgadmin o arquivo que executava o php_dump e encontrei este arquivo “dbexport.php” (para ser mais exato /usr/share/phppgadmin/dbexport.php no ubuntu).

Para corrigir é necessário apenas alterar as linhas 104

if ($_REQUEST['d_format'] == 'sql') $cmd .= ' -d';

para

if ($_REQUEST['d_format'] == 'sql') $cmd .= ' --inserts';

e a linha 112

if ($_REQUEST['sd_format'] == 'sql') $cmd .= ' -d';

para

if ($_REQUEST['sd_format'] == 'sql') $cmd .= ' --inserts';

e pronto. Com isso o phppgadmin voltou a exportar em SQL.

h1

Deixando o FireWatir um pouco mais rápido.

09-12-2009

Realizei alguns testes com o FireWatir mas achei ele um tanto lento, especialmente por ter de esperar ele “digitar” as informações. Então desenvolvi um método para o TextField para que ele somente inclua os valores, sem demorar muito.
Veja o código abaixo.

module FireWatir
  class TextField < InputElement
    def set_fast( setThis )
      assert_exists
      assert_enabled
      assert_not_readonly
      highlight(:set)
      @o.scrollIntoView
      @o.focus
      @o.select()
      @o.fireEvent("onSelect")
      @o.value = ""
      @o.fireEvent("onKeyPress")
      @o.value = setThis
      highlight(:clear)
      @o.fireEvent("onChange")
      @o.fireEvent("onBlur")
    end
  end
end

Para utilizar precisa-se apenas trocar o comando set por set_fast.
require 'rubygems'
require 'firewatir'
ff = FireWatir::Firefox.new
ff.goto('http://www.google.com.br')
ff.text_field(:name,"q").set_fast('dannnylo.wordpress.com')
ff.button(:name,"btnG").click

Esse teste fará com que o firefox entre no google e pesquise pelo meu blog ;) .
Espero ter ajudado.

h1

No tray com Ruby e GTK

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.

h1

Plugin para Passenger no Webmin

07-08-2009

Estes dias estava instalando na empresa onde trabalho um servidor para desenvolvimento e testes, então ao instalar o Webmin (Gerenciador web de servidores), vi a possibilidade de criar um modulo que gerencia-se a criação, edição e remoção de RailsBaseURI e RackBaseURI para o passenger (já estava cansado de adicionar editando diretamente o arquivo), abaixo farei uma explicação de como instalá-lo.
Primeiramente desenvolvi o modulo visando apenas trabalhar com um único virtual host apache, provavelmente mais tarde criarei um que possibilite vários, mas isso é só no futuro.
Como pré requisitos para o modulo tem-se, ter o apache2 instalado, possuir o passenger já funcionando em sua maquina (caso não tenha instalado ainda veja este tutorial), e obviamente ter o webmin instalado.
Crie um o arquivo vazio chamado rails.conf na pasta /etc/apache2 , seguindo o comando abaixo.
sudo touch /etc/apache2/rails.conf
Adicione então ao seu virtualhost a seguinte linha:
Include /etc/apache2/rails.conf
Assim fazendo com que sejam rodados as configurações presentes no arquivo.
Então baixe no link abaixo o arquivo com o módulo.
passenger.wbm.gz.doc (Como o wordpress não permite postar outras extensões renomeie o arquivo para passenger.wbm.gz )
Então abra o webmin acesse Webmin Configuration >> Webmin Modules selecione From uploaded file e encontre o arquivo e clique em install module.
Pronto agora no menu ao lado na categoria server irá aparecer passenger.
Qualquer duvida me poste um comentário.
Obrigado

h1

Problemas ao tentar rodar Shoes + openssl no Windows XP

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.

h1

Brincando com RSA no Ruby através do OpenSSL

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.

h1

Problemas ao rodar o rails 2.2 no passenger

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.

h1

Passenger: Error message: No such file or directory – /nonexistent

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.