簡體   English   中英

Rails/Ruby/Postgres - LoadError 無法加載此類文件 -- pg_ext

[英]Rails/Ruby/Postgres - LoadError cannot load such file -- pg_ext

我正在嘗試使用下面的 rails 控制器調用一個 Ruby 腳本(它連接到一個 postgres 數據庫),但是它似乎在加載一個 PG gem 文件時遇到問題。 我已經將我的 require 語句設置為需要'pg'並嘗試了絕對路徑(需要/usr/local/rvm/gems/ruby-1.9.3-p194@railsTest/gems/pg-0.14.0/lib/pg/ )。 文件“pg_ext”實際上存在於目錄中。 此外,我可以獨立運行 ruby 腳本而不會出現任何問題 (dbrubyscript.rb),但是當將 rails 添加到此等式時,它會出現cannot load such file -- pg_ext錯誤。

這里的任何方向將不勝感激,因為我無法在網上找到任何解決此問題的方法

導軌控制器:

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

無法加載這樣的文件 -- pg_ext

Rails.root: /usr/local/rvm/my_app 應用程序跟蹤 | 框架跟蹤 | 完整跟蹤 app/controllers/Testdl_controller.rb:3:in `runmyscript'

加載以下文件時發生此錯誤:
/usr/local/rvm/my_app/ruby_scripts/reports/dbrubyscript.rb
/usr/local/rvm/gems/ruby-1.9.3-p194@railsTest/gems/pg-0.14.0/lib/pg/
pg_ext

嘗試運行 ruby /usr/local/rvm/gems/ruby-1.9.3-p194@railsTest/gems/pg-0.14.0/lib/pg/ext/extconf.rb 看看你得到了什么錯誤。 這幫助我確定,就我而言,我的 PostgreSQL 客戶端太舊了。 您的錯誤可能有所不同,因為您似乎安裝了當前版本。

我有同樣的問題。 我有一個獨立的紅寶石腳本。 它通過pg連接到postgres ,如果我直接從shell運行它就可以工作。

如果我嘗試通過 rspec 運行它,我會收到錯誤cannot load such file -- pg

解決:rspec 的問題是, pg gem 未在Gemfile中定義。 將 pg 放入Gemfile並通過 rspec 重新測試后,它起作用了。

嘗試在 Gemfile 中添加一行:

gem "pg"

然后通過命令行運行 bundler:

bundle install

Rails 使用 Bundler 來管理您的 gem 和依賴項。 您可以在此處詳細了解 Bundler 背后的理念:http: //gembundler.com/v1.2/rationale.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM