![](/img/trans.png)
[英]Ruby/PgSQL error on Rails start : cannot load such file — pg_ext (LoadError)
[英]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.