Otro punto de vista sobre la Administración de Bases de Datos


Mostrando entradas con la etiqueta ruby oci8 rails. Mostrar todas las entradas
Mostrando entradas con la etiqueta ruby oci8 rails. Mostrar todas las entradas

viernes, 12 de diciembre de 2008

Instalación de Ruby-Oci8 con Oracle

Para instalar ruby-oci8 en un servidor Linux con Oracle 10.2.0.4 es necesario seguir los siguientes pasos:

1.- Debe estar instalado previamente en el servidor el paquete de ruby y las gemas que se necesiten.

Para comprobar la instalación de ruby:

# ruby -v
ruby 1.8.6 (2008-03-03 patchlevel 114) [x86_64-linux]

Para comprobar la instalacion de las gemas:

# gem -v
1.3.0

2.- Instalación del adaptador de Oracle:

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

3.- Variables de entorno de Oracle
Antes de instalar el driver de ruby-oci8 es recomendable poner las siguientes variables de entorno:

export ORACLE_SID=ORCL
export PATH=$PATH:/home/oracle/product/10.2/db_1/bin
export ORACLE_HOME=/home/oracle/product/10.2/db_1
export TNS_ADMIN=/home/oracle/product/10.2/db_1/network/admin
export LD_LIBRARY_PATH=/home/oracle/product/10.2/db_1/lib
export NLS_LANG=american_america.AL32UTF8

4.- Instalación de ruby-oci8.

Bajar la última versión ruby-oci8-1.0.3.tar.gz desde: http://rubyforge.org
una vez descomprimido el fichero es necesario ejecutar:

# ruby setup.rb config

# make

# make install

5.- Configuración del fichero tnsnames.ora.

Añadir una entrada en el fichero tnsnames para el servicio ORCL.

ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)


6.- Comprobar que ruby-oci8 funciona correctamente.

Para comprobar el funcionamiento de ruby-oci8 se puede ejecutar el siguiente comando:

ruby -roci8 -e "OCI8.new('scott', 'tiger', 'ORCL').exec('select * from locales') do |r| puts r.join(' | '); end"

Si todo ha ido bien mostrará los datos de la tabla indicada.

7.- Modificar el fichero database.yml para configurar la conexión de rails a la base de datos.

   production:
adapter: oracle
database: ORCL
username: scott
password: tiger
host: 192.168.1.10
encoding: utf8
   development:
adapter: oracle
database: ORCL
username: scott
password: tiger
host: 192.168.1.10
encoding: utf8
8.- Arrancar el WEBrick de rails para comprobar que conecta bien.

Para probar la conexión se arranca el WEBrick de rails:

#RAILS_ENV=production ruby /home/rails/script/server

Es posible que al arrancarlo nos de el siguiente error:
/usr/lib64/ruby/site_ruby/1.8/rubygems.rb:147:in `activate': can't activate activerecord (>= 1.15.5.7843, runtime), 
already activate activerecord-2.1.0 (Gem::Exception)
En este caso es necesario modificar el fichero gemspec del oracle-adapter.

En el ejemplo, el fichero es el siguiente:
/usr/lib64/ruby/gems/1.8/specifications/activerecord-oracle-adapter-1.0.0.9250.gemspec

Hay que comentar las últimas líneas del fichero, quedará así:

# -*- encoding: utf-8 -*-

Gem::Specification.new do |s|
s.name = %q{activerecord-oracle-adapter}
s.version = "1.0.0.9250"

s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
s.authors = ["Michael Schoen"]
s.date = %q{2008-06-04}
s.email = %q{schoenm@earthlink.net}
s.files = ["lib/active_record/connection_adapters/oracle_adapter.rb"]
s.homepage = %q{http://ruby-oci8.rubyforge.org/}
s.require_paths = ["lib"]
s.rubyforge_project = %q{activerecord}
s.rubygems_version = %q{1.3.0}
s.summary = %q{Oracle adapter for Active Record}

# if s.respond_to? :specification_version then
# current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
# s.specification_version = 2
#
# if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
# s.add_runtime_dependency(%q, [">= 1.15.5.7843"])
# else
# s.add_dependency(%q, [">= 1.15.5.7843"])
# end
# else
# s.add_dependency(%q, [">= 1.15.5.7843"])
# end
end

Después de esto el WEBrick arrancará sin errores.

Links.

RubyForge
Jesse Hu's Weblog
Ruby-Oci8