微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

强制将未维护的ActiveRecord适配器安装到Rails版本6

如何解决强制将未维护的ActiveRecord适配器安装到Rails版本6

我正在研究“ Advantage数据库服务器”适配器扩展,以尝试与我有权访问的旧数据库(仍在使用中)进行对话。

我更新了“ Advantage”宝石,使其可以在新的/活动版本的Ruby https://github.com/t12nslookup/advantage上使用,并且看到我的activerecord-advantage-adapter https://github.com/t12nslookup/activerecord_advantage_adapter的副本在ruby 1.9上可以使用。 3和导轨3.2.22

我一直在努力尝试使其与Rails 6一起使用,并且通过简单的“ ruby​​”脚本取得了成功,该脚本“需要” gem并访问数据,但是我无法获得相同的简单数据库查询以在Rails控制台上工作。

我正在WSL 2中运行,如果有什么不同(但我不相信它。

ruby​​ 2.7.0p0(2019-12-25修订版647ee6f091)[x86_64-linux],Rails 6.0.3.3

我已经在activerecord-advantage-adapter github项目中添加了rails6分支。

Ruby脚本:

jadams@Temp046317:~/code/ais-lims$ more ../testme.rb
require 'rubygems'
gem 'advantage'
gem "activerecord-advantage-adapter"
require "active_record"

ActiveRecord::Base.establish_connection(
  adapter: 'advantage',options: 'ServerType=Local|Remote; ReadOnly=True; CommType=TCP_IP; Compression=INTERNET',database: '//172.27.176.1:6262/c$/ads/db/'
)

class discount < ActiveRecord::Base
  self.table_name = 'disCOUNT'
  self.sequence_name = :autogenerated
end

puts discount.all.inspect
puts discount.count

jadams@Temp046317:~/code/ais-lims$ ruby ../testme.rb
#<ActiveRecord::Relation [#<discount >,#<discount >,#<discount >]>
4

Rails控制台:

jadams@Temp046317:~/code/ais-lims$ more config/database.yml
development:
  adapter: 'advantage'
  options: 'ServerType=Local|Remote; ReadOnly=True; CommType=TCP_IP; Compression=INTERNET'
  database: '//172.27.176.1:6262/c$/ads/db/'

jadams@Temp046317:~/code/ais-lims$ more app/models/discount.rb
class discount < ApplicationRecord
  self.table_name = 'disCOUNT'
  self.sequence_name = :autogenerated
end

jadams@Temp046317:~/code/ais-lims$ rails c
Running via Spring preloader in process 728
Loading development environment (Rails 6.0.3.3)
2.7.0 :001 > puts discount.all.inspect
Traceback (most recent call last):
        1: from (irb):1
NoMethodError (undefined method `to_sym' for nil:NilClass)
2.7.0 :002 > puts discount.count
Traceback (most recent call last):
        2: from (irb):1
        1: from (irb):2:in `rescue in irb_binding'
NoMethodError (undefined method `to_sym' for nil:NilClass)

任何有关如何调试或在哪里找到问题的提示,我将不胜感激。

乔恩

解决方法

@rmlockerd和@ruby_object在帮助调试方面都是正确的,但最终,我只是以一种行不通的方式编写了这段代码。

调试是关键

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。