9

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

4

3 回答 3

0

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

于 2013-06-15T11:51:06.927 回答
0

我有同样的问题。我有一个独立的红宝石脚本。如果我直接pg从.postgresshell

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

已解决:rspec 的问题是,pggem 未在Gemfile. 将 pg 放入Gemfile并通过 rspec 重新测试后,它起作用了。

于 2015-03-17T09:35:58.983 回答
-1

尝试在 Gemfile 中添加一行:

gem "pg"

然后通过命令行运行 bundler:

bundle install

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

于 2012-12-11T06:05:24.793 回答