Llamar a procedimientos PL/SQL de Oracle con ruby-plsql

Buscando una manera mas sencilla de poder llamar a procedimientos almacenados de Oracle pl/sql, encontré la gema ruby-plsql que es una simple API para procedimientos almacenados en oracle, su uso es muy sencillo como el siguiente:

Si tenemos el siguiente paquete:


CREATE OR REPLACE PACKAGE BODY scott.pck_prueba IS
    PROCEDURE LeeDatos(p_in VARCHAR2, p_out OUT VARCHAR2) IS
       BEGIN
       p_out := 'Se introdujo: ' || p_in;
    END;
END;

Ahora dentro del código, como ejemplo dentro del controlador:


require “ruby_plsql”
class UsuariosController < ApplicationController
  def index
    @usuarios = Usuario.all
    plsql.connection = OCI8.new(”SCOTT”, “PASS”)
    @hola = plsql.pck_prueba.LeeDatos(”Hola desde Oracle”)
    plsql.logoff
  end
end

Y para mostrar el dato, en la vista:


<%= @hola[:p_out] %>

Para poder instalar la gema solamente teclee:

[sudo] gem install ruby-plsql

Realmente me facilito bastante el trabajo, me gusta el concepto y el uso que engloba la metaprogramacion.

Nota.- Trabajando con la gema note que no trabaja en procedimientos con variables de entrada y salida, sino solamente de entrada o salida.

Mejorar la conexión a Oracle con Rails 2.1

Dentro del trabajo con Oracle y Rails, existen dos gemas que nos permiten conectar y manipular los datos estas son las gemas OCI-8 y active-record-oracle-adapter, pero existen algunos fallos dentro del Active-Record-Oracle-Adapter, uno lo indique en un post anterior, es por eso que en rayapps se escribe sobre como mejorar algunas cosas a este adaptador, es por eso que el autor de esos post publica ahora una gema que tiene incluido los patch y algunas mejoras esto es la gema activerecord-oracle_enhanced-adapter

Su instalación es simple:

gem install activerecord-oracle_enhanced-adapter

Tiene muchas características que se describen aquí.

Para su utilización simplemente se debe cambiar dentro del database.yml el adapter de oracle a oracle_ enhanced

development:

adapter: oracle_enhanced

database: wiebia

username: scott

password: gotama

Un gran aporte para los que trabajamos con oracle

Conectarse de rails 2.0.2 a oracle en windows

Recientemente estoy trabajando en un proyecto de contabilidad dentro del cual utiliza como base de datos a oracle 10g, para desarrollar la interfaz web veníamos planeando la utilización de ASP.NET, del cual recientemente obtuve la quinta estrella, pero se requería en el tiempo más corto posible y que además sea adaptable a cambios futuros y que además corriese dentro del sistema operativo Windows, asi que plantee como opción la utilización de Ruby on Rails como la plataforma de desarrollo, del cual aceptaron y se está desarrollando en tiempo record!!!
Bueno en este tutorial explicare la instalación de Rails + adaptador de oracle para conectarse a oracle + un parche para que corra satisfactoriamente las migraciones. Comenzamos.
Para el desarrollo con Rails dentro de Windows debemos de bajar el paquete InstantRails que contiene ya instalados Ruby 1.8.6 + Rails 2.0.2
Los bajamos y descomprimimos dentro de la unidad c:

instant-rails.JPG

nos adentramos dentro de la carpeta InstantRails y hacemos doble click en el ejecutable, listo eso es todo ya tenemos instalado Ruby on Rails.

Ahora en la ventana que se abre una ventana pequeña en la cual pulsamos en la I y seleccionamos Rails Applications > Open Ruby console window:

ventana-instantrails.JPG

Nos saldrá el intérprete de comandos cargando ruby.
Ahora tenemos que bajar la librería ruby-OCI8 de http://rubyforge.org/projects/ruby-oci8/ seleccionamos la versión para win-32 (ruby-oci8-1.0.0-mswin32.rb) la guardamos en C:\InstantRails\rails_apps ahora en la consola abierta tecleamos:

ruby ruby-oci8-1.0.0-mswin32.rb(enter)

Nos preguntara si deseamos copier los siguientes archives y escribimos:

Yes(enter)

consola.JPG

Ya tenemos instalado la librería ruby-oci8, ahora tenemos que instalar el adaptador especifico para rails que para la versión 2 es llamado activerecord-oracle-adapter versión 1.0 y que por ahora no se encuentra dentro de los repositorios de rubyforge.org sino en los repositorios de rubyonrails.org asi que dentro de la consola tecleamos lo siguiente:

gem install activerecord-oracle-adapter –source http://gems.rubyonrails.org

Ahora si tenemos instalado todo para el trabajo con Rails y oracle, pues bien existe una pequeña falla dentro del adaptador si tienen que utilizar migraciones dentro de rails sale un mensaje del tipo ’select_rows is an
abstract method’ bueno se debe de aplicar un parche aquí si no conocen como aplicar un parche(como yo) les dejo el archivo parchado de activerecord-oracle-adapter y sobrescriben el mismo archivo en este directorio:
C:\InstantRails\ruby\lib\ruby\gems\1.8\gems\activerecord-oracle-adapter-1.0.0\lib\active_record\connection_adapters
Ahora realizamos la prueba de coneccion con oracle creamos un Nuevo proyecto en netbeans que desde la versión 6.0 trae una extencion para trabajar con rails (mi IDE preferido para rails): Files > New Proyect

Seleccionamos el nombre de la aplicación y la base de datos oracle:

seleccion-nombre-y-database.JPG

Nos cercioramos de que tengamos la última versión de rails:

version-rails.JPG

Y pulsamos finish, ya tenemos nuestra aplicación, nos abre por defecto el archivo database.yml:
Nos cercioramos de los datos de la conexión:


development:
  adapter: oracle
  database: ORCL #Nombre de la instancia de oracle
  username: user #Nombre de usuario
  password: pass #contraseña

Con respecto de oracle debemos de cerciorarnos que estén corriendo los servicios de listener y de la base de datos.
Bien hasta aquí es el tutorial, espero que les funcione, sino pásenme las preguntas.