2012-07-30 28 views
7

Estoy tratando de llamar a un script de Ruby (que se conecta a un db postgres) utilizando el controlador de rieles a continuación, sin embargo, parece tener problemas para cargar uno de los archivos Archivos gema PG He establecido que mi declaración require requiera 'pg' y también intenté la ruta absoluta (requiera /usr/local/rvm/gems/[email protected]/gems/pg-0.14.0/lib/pg/). El archivo 'pg_ext' está de hecho presente en el directorio. Además, puedo ejecutar el script de ruby ​​de forma independiente sin ningún problema (dbrubyscript.rb), sin embargo, cuando se agrega rails a esta ecuación, se produce un error de cannot load such file -- pg_ext.Rails/Ruby/Postgres - LoadError no puede cargar dicho archivo - pg_ext

cualquier dirección aquí sería muy apreciada ya que no he podido encontrar nada en línea que corrige este problema

rieles controlador:

class TestdlController < ApplicationController 
def runmyscript 
    load "/usr/local/rvm/my_app/ruby_scripts/reports/dbrubyscript.rb" 
    send_file '/usr/local/rvm/tmp/failedtests.csv', :type => 'text/csv', :disposition => 'inline' 
    flash[:notice] = "Reports are being processed..." 
end 
end 

archivo .rb (dbrubyscript.rb) tiene la siguiente:

require 'rubygems' 
require 'pg' 

connects to (production) database 
@conn = PGconn.connect("zzzzz.test.prod", 5432,"","","yyyyy_prod" ,"postgres", "xxxxxx") 
..... 

Seguimiento de error: LoadError en TestdlController # runmyscript

cannot load such file -- pg_ext

Rails.root: /usr/local/rvm/my_app Application Trace | Framework Trace | Full Trace app/controllers/Testdl_controller.rb:3:in `runmyscript'

This error occurred while loading the following files:
/usr/local/rvm/my_app/ruby_scripts/reports/dbrubyscript.rb
/usr/local/rvm/gems/[email protected]/gems/pg-0.14.0/lib/pg/
pg_ext

+0

¿Has instalado gema la gema 'pg' con dependencias? – AJcodez

+0

No estoy seguro si instalé la gema con dependencias. Cuando instalé inicialmente la gema utilicé el siguiente comando: gem install pg - --with-pg-config = '/ usr/local/PostgreSQL/9.1/bin/pg_config' – user1562080

+2

¿No se supone que debes agregar 'gema ' pg'' a Gemfile in Rails e instalar todas las gemas con dependencias ejecutando 'bundle install'? – rekado

Respuesta

-1

Trate de añadir una línea a su Gemfile:

gem "pg" 

A continuación, ejecute bundler a través de la línea de comandos:

bundle install 

Rieles usos Bundler para administrar tus gemas y dependencias. Usted puede leer un poco más sobre la idea detrás de Bündler aquí: http://gembundler.com/v1.2/rationale.html

0

Intente ejecutar rubí /usr/local/rvm/gems/[email protected]/gems/pg-0.14.0/lib/ pg/ext/extconf.rb y vea qué errores obtiene. Eso me ayudó a determinar que, en mi caso, mi cliente de PostgreSQL era demasiado viejo. Su error puede ser diferente ya que parece tener instalada una versión actual.

0

Tuve el mismo problema. Tengo un guión de rubíes independiente. Se conecta a través de pg a postgres y funcionó si lo ejecuté directamente desde el shell.

Si traté de ejecutarlo a través de rspec obtengo el error cannot load such file -- pg.

Resuelto: El problema para rspec era, la gema pg no se definió en el Gemfile. Después de poner pg en Gemfile, y retestet vía rspec, funcionó.

Cuestiones relacionadas