【问题标题】:Rails/Ruby/Postgres - LoadError cannot load such file -- pg_extRails/Ruby/Postgres - LoadError 无法加载此类文件 -- pg_ext
【发布时间】:2012-07-27 19:52:01
【问题描述】:

我正在尝试使用下面的 rails 控制器调用 Ruby 脚本(连接到 postgres 数据库),但它似乎在加载其中一个 PG gem 文件时遇到问题。我已将我的 require 语句设置为 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 错误。

非常感谢这里的任何方向,因为我无法在网上找到任何可以解决此问题的东西

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 中的 LoadError#runmyscript

无法加载此类文件 -- 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

【问题讨论】:

  • 你 gem 安装了带有依赖关系的 'pg' gem 吗?
  • 我不确定我是否安装了带有依赖项的 gem。当我最初安装 gem 时,我使用了以下命令: gem install pg -- --with-pg-config='/usr/local/PostgreSQL/9.1/bin/pg_config'
  • 难道你不应该将gem 'pg' 添加到Rails 中的Gemfile 并通过运行bundle install 来安装所有具有依赖关系的gem?

标签: ruby-on-rails ruby pg


【解决方案1】:

尝试在您的 Gemfile 中添加一行:

gem "pg"

然后通过命令行运行bundler:

bundle install

Rails 使用 Bundler 来管理您的 gem 和依赖项。你可以在这里阅读更多关于 Bundler 背后的想法:http://gembundler.com/v1.2/rationale.html

【讨论】:

    【解决方案2】:

    尝试运行 ruby​​ /usr/local/rvm/gems/ruby-1.9.3-p194@railsTest/gems/pg-0.14.0/lib/pg/ext/extconf.rb 看看你得到了什么错误。这帮助我确定在我的情况下,我的 PostgreSQL 客户端太旧了。您的错误可能有所不同,因为您似乎安装了当前版本。

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题。 我有一个独立的红宝石脚本。它通过pg 连接到postgres,如果我直接从shell 运行它,它就可以工作。

      如果我尝试通过 rspec 运行它,我会收到错误 cannot load such file -- pg

      已解决:rspec 的问题是,pg gem 未在 Gemfile 中定义。将pg放入Gemfile,并通过rspec重新测试后,它工作了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-22
        • 2012-10-25
        • 2012-02-27
        • 2018-10-19
        • 1970-01-01
        • 2016-04-26
        相关资源
        最近更新 更多