Rails/Ruby/Postgres - LoadError はそのようなファイルをロードできません – pg_ext
概要
以下の Rails コントローラーを使用して Ruby スクリプト (postgres データベースに接続する) を呼び出そうとしていますが、PG gem ファイルの 1 つをロードするときに問題が発生しているようです。 require ステートメントを「pg」を要求するように設定し、絶対パスも試しました(require /usr/local/rvm/gems/ruby-1.9.3-p194@railsTest/gems/pg-0.14.0/lib/pg) /)。ファイル「pg_ext」は実際にはディレクトリ内に存在します。さらに、Ruby スクリプト (dbrubyscript.rb) をスタンドアロンで問題なく実行できますが、この方程式に Rails を追加すると、「そのようなファイルを読み込めません – 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")
.....
トレースエラー: TestdlController#runmyscript の LoadError
解決策
Ruby /usr/local/rvm/gems/ruby-1.9.3-p194@railsTest/gems/pg-0.14.0/lib/pg/ext/extconf.rb を実行して、どのようなエラーが発生するかを確認してください。これにより、私の場合、PostgreSQL クライアントが古すぎることがわかりました。現在のバージョンがインストールされていると思われるため、エラーは異なる可能性があります。