【发布时间】:2017-08-25 22:23:26
【问题描述】:
我一直在尝试使用 Ruby(特别是 JRuby)中的 Active Record 连接到远程 JDBC/SqlServer 数据库。这是我的代码:
require 'activerecord'
require 'activerecord-jdbc-adapter'
ActiveRecord::Base.establish_connection(
:adapter => 'sqlserver',
:username => '<username>',
:password => '<password>',
:database => '<database_name>',
:url => '<database_url>',
)
@connection = ActiveRecord::Base.connection
puts @connection
我也将“jdbc”作为适配器,但也没有用。
这是我得到的错误的缩写版本:
NameError: cannot load Java class com.microsoft.sqlserver.jdbc.SQLServerDriver
for_name at org/jruby/javasupport/JavaClass.java:286
get_proxy_class at org/jruby/javasupport/JavaUtilities.java:34
block in java_import at uri:classloader:/jruby/java/core_ext/object.rb:49
map at org/jruby/RubyArray.java:2486
java_import at uri:classloader:/jruby/java/core_ext/object.rb:36
block in driver_class at C:/jruby-9.1.12.0/lib/ruby/gems/shared/gems/activerecord-jdbc-adapter-1.3.23/lib/arjdbc/jdbc/driver.rb:24
module_eval at org/jruby/RubyModule.java:2833
block in driver_class at C:/jruby-9.1.12.0/lib/ruby/gems/shared/gems/activerecord-jdbc-adapter-1.3.23/lib/arjdbc/jdbc/driver.rb:23
synchronized at org/jruby/javasupport/JavaObject.java:257
这不是一个具体的问题,但更多的是我不确定从这里去哪里。由于服务器上的 JDBC,在纯 Ruby 中使用“activerecord-sqlserver-adapter”不起作用。 (我可能在这里误用了这些术语,我对数据库的工作原理相当陌生。)
但是,jdbc/sqlserver gem 似乎没有得到很好的支持或已过时。这可能没有灵丹妙药,但任何方向都会有很大帮助。
【问题讨论】:
-
我的理解是那个宝石已经过时了?但我会试一试。
-
那是你正在使用的 gem
activerecord-jdbc-adapter我只是提供了他们自述文件中的说明(因为它被埋没了)关于如何安装正确的驱动程序(这是你的问题)以及如何配置 ActiveRecord使用它 -
微软提供的 gem 需要正常工作的驱动程序现在似乎不再提供。当我尝试访问 Ruby 版本时,它告诉我安装“tiny_tds”gem,它仅适用于 Ruby,不适用于 JRuby。
标签: sql-server ruby activerecord jdbc jruby