gpt4 book ai didi

ruby - Ruby 2.3.4 上的 ibm_db gem 缺少依赖项

转载 作者:太空宇宙 更新时间:2023-11-03 17:43:09 25 4
gpt4 key购买 nike

我在 Ruby 2.3.4 上使用 Rails 5.2.0 连接到 MySQL(通过 mysql2 gem)和 DB2(通过 ibm_db gem)数据库。

当我尝试连接到 DB2 时,我得到:

加载“ibm_db”Active Record 适配器时出错。缺少它所依赖的 gem ?无法加载此类文件 -- arel/visitors/bind_visitor

跟踪调用

ibm_db (4.0.0) lib/active_record/connection_adapters/ibm_db_adapter.rb:13:in'

包括

需要'arel/visitors/bind_visitor'

它确实看起来像是在尝试加载依赖项,但实际上并不能。 bundle install 未返回任何错误。

我不确定如何检查 Bind_Visitors 模块是否安装正确,或者还有什么可能导致此错误。如果您需要查看任何日志或 Gemfile,请告诉我。

每个请求,连接方法。

配置/数据库.yml:

default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
socket: /var/run/mysqld/mysqld.sock

prms: &prms
adapter: ibm_db
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
socket: /var/run/mysqld/mysqld.sock
username: <%= ENV["PRMS_USERNAME"] %>
password: <%= ENV["PRMS_PASSWORD"] %>
schema: V10INTRA
host: 10.11.210.61
port: 446
authentication: server

development:
<<: *default
database: portal
host: albireo
username: <%= ENV["DEV_DB_USERNAME"] %>
password: <%= ENV["DEV_DB_PASSWORD"] %>

应用程序/模型/prms_record.rb:

class PrmsRecord < ActiveRecord::Base
self.abstract_class = true
# establish_connection :"prms_#{Rails.env}"
establish_connection :prms
end

应用程序/模型/location.rb

class Location < PrmsRecord
end

我在 Controller 中仅使用 find_by_sql 调用进行测试,以选择表的前 10 行。请注意,我知道这里的连接池存在效率问题,我只是想在花时间让它变得高效之前让最简单的方法起作用。

最佳答案

您的问题是 ibm_db gem 与 arel 9.0 版不兼容。

rails 5.2 依赖于 active_record 5.2,它依赖于 arel 版本 >= 9.0。( Source )

ibm_db 在“lib/active_record/connection_adapters/ibm_db_adapter”第 13 行 (Source) 中有一个require 语句

require 'arel/visitors/bind_visitor'

但是 arel 9.0 版不再有这个文件 (Source)

为了使 ibm_db 正常工作,您需要将 rails 降级到依赖于 active_record 的 5.1 版,而 5.1 依赖于 arel 版本 ~> 8.0 ( Source )

arel 8.0 确实有一个文件“arel/visitors/bind_visitor.rb”(Source)所以 require 语句将相应地工作。

关于ruby - Ruby 2.3.4 上的 ibm_db gem 缺少依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50799800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com