2012-07-30 28 views
7

下記のrailsコントローラを使用してRubyスクリプト(postgresデータベースに接続しています)を呼び出そうとしていますが、 PGのgemファイル私は 'pg'を要求するためにrequire文を設定し、絶対パスも試しました(/usr/local/rvm/gems/[email protected]/gems/pg-0.14.0/lib/pg/が必要です)。実際には、ファイル 'pg_ext'がディレクトリに存在します。さらに、私はrubyスクリプトを何の問題もなく(dbrubyscript.rb)スタンドアロンで走らせることができますが、この方程式にレールを追加すると、cannot load such file -- pg_extエラーが出ます。Rails/Ruby/Postgres - LoadErrorはこのようなファイルをロードできません - pg_ext

私はオンライン何かを見つけることができていないとして、ここで任意の方向をはるかに高く評価されるだろう、この問題を修正

Railsのコントローラ:

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 

.RBファイル(dbrubyscript.rb)次のとおりです。

require 'rubygems' 
require 'pg' 

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

トレースエラー:

bundle install 

Railsの用途:次に、コマンドラインを介してバンドラを実行

gem "pg" 

とLoadErrorあなたのGemfileに行を追加してみてください

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

宝石に依存性のある「pg」宝石がインストールされていますか? – AJcodez

+0

依存関係のあるgemをインストールしたかどうかはわかりません。 gem install pg --with-pg-config = '/ usr/local/PostgreSQL/9.1/bin/pg_config' – user1562080

+2

gemをインストールする前に、 pg''をRailsのGemfileに追加し、 'bundle install'を実行して依存関係のあるすべてのgemをインストールしますか? – rekado

答えて

0

ruby​​ /usr/local/rvm/gems/[email protected]/gems/pg-0.14.0/lib/を実行してみてください。 pg/ext/extconf.rbを実行し、どのようなエラーが発生するかを確認してください。それは私のケースでは、私のPostgreSQLクライアントが古すぎると判断するのに役立ちました。現在のバージョンがインストールされているように見えるため、エラーが異なる場合があります。

0

私は同じ問題を抱えていました。 私はスタンドアロンのルビースクリプトを持っています。それはpgを介してpostgresに接続し、shellから直接実行した場合に動作します。

rspecで実行しようとすると、エラーcannot load such file -- pgが発生します。

解決済み:rspecの問題は、の宝石は、Gemfileに定義されていませんでした。 Gemfileにpgを入力し、rspec経由でretestした後、それは機能しました。

関連する問題