Gosto bastante da linguagem Ruby para tarefas de administração de sistema.
Segue abaixo passos para compilar o ruby 1.9.2 no sistema operacional RedHat ou compatível
juntamente com a biblioteca de acesso ao banco de dados Oracle. A instalação será feita em Linux com Oracle 10g previamente instalado.
Instalando o Ruby
yum install zlib-devel openssl-devel readline-develcd /rootwget ftp://ftp.ruby-lang.org//pub/ruby/1.9/ruby-1.9.2-p0.tar.gztar -xvf ruby-1.9.2-p0.tar.gzcd /ruby-1.9.2-p0./configure makemake install
O ruby será instalado em /usr/local/lib/ruby. Os executáveis importantes como ruby, irb, ri, rake, gem etc.ficarão em /usr/local/bin
Instalando o OCI para que o Ruby acesse o Oracle
cd /rootwget http://rubyforge.org/frs/download.php/69454/ruby-oci8-2.0.4.tar.gztar -xvf ruby-oci8-2.0.4.tar.gzcd ruby-oci8-2.0.4Seto as variáveis do oracle como root mesmo para que o processo de compilação do OCI possa achar as bibliotecas do Oracle. Ajuste-as ao seu ambiente.
ORACLE_BASE=/u01/app/oracleORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1ORACLE_SID=orclLD_LIBRARY_PATH=$ORACLE_HOME/libexport ORACLE_BASE ORACLE_HOMEexport LD_LIBRARY_PATH
ruby setup.rb configruby setup.rb setupruby setup.rb install
Para ver se o acesso oci está funcionando digite os comandos abaixo no irb que é o shell interativo do ruby
su oracle -
Defina as variáveis novamente como fizemos acima quando estávamos logados como root. Não se esqueça do ORACLE_SID. Na verdade no passo acima ele não era importante, mas neste é pois é por ele que o oci vai identificar qual instância do bd nos conectaremos.
irbrequire 'rubygems'require 'oci8'O teste consiste em :
- Invocar o ruby interativo
- Carregar a biblioteca rubygems que é o padrão de bibliotecas oficial do ruby. Isto é necessário pois a biblioteca oci8 segue este padrão. Neste ponto vai aparecer true
- Carregar a oci8. Se tudo correu bem vai aparecer true
Para tirar a teima e cutucar o Oracle com o ruby você pode:
irb
> require 'rubygems'
=> true
> require 'oci8'
=> true
> conexao = OCI8.new(nil,nil,nil,:SYSDBA)
=> #
> cursor = conexao.exec('select sysdate from dual')
=> #
> registro = cursor.fetch
=> [2010-10-21 23:05:43 -0200]
> registro[0]
=> 2010-10-21 23:05:43 -0200
Conectamos ao Oracle via usuário de sistema operacional como SYSDBA.
Para mais informações a respeito :
Ruby: http://www.ruby-lang.org/pt/
OCI: http://ruby-oci8.rubyforge.org/en/
Quilos de bibliotecas ruby: http://rubyforge.org/