2017-08-24 28 views
0

Ruby(特にJRuby)でActive Recordを使用してリモートJDBC/SqlServerデータベースに接続しようとしました。Ruby Active Record JDBC経由でSQL Serverにアクセスする

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 

それはあまり具体的な問題ではないのですが、私はどこここから行くためにちょうどよくわからないんだということより:ここ

そして、私は取得していますエラーの簡略版です。純粋なRubyで 'activerecord-sqlserver-adapter'を使用することは、サーバ上のJDBCのために機能しません。 (ここではこの用語を誤解しているかもしれませんが、データベースの仕組みにはあまり馴染みがありません)

しかし、jdbc/sqlserverの宝石は十分にサポートされていないか、古くなっているようです。おそらくこれには銀色の弾丸はありませんが、どんな方向性も大きな助けになるでしょう。

+0

おそらくこれが役に立ちますか? https://github.com/jruby/activerecord-jdbc-adapter/blob/master/activerecord-jdbcmssql-adapter/README.rdoc – engineersmnky

+0

宝石が古くなったのは私の理解でしたか?しかし、私はそれを試してみましょう。 – Cooper

+0

これは、 'activerecord-jdbc-adapter'を使用している宝石です。正しいドライバ(問題あり)をインストールする方法と、ActiveRecordを使用するように設定する方法については、READMEから(埋まっているので) – engineersmnky

答えて

0

あなたはまだrequire 'active_record'が必要ですか?

require 'arel'が必要かどうかわかりません。これはactive_recordによって実装された低レベルのSQLビルダー/フォーマッタです。

require 'active_record' 
require 'activerecord-jdbc-adapter' 

ActiveRecord::Base.pluralize_table_names = false 
ActiveRecord::Base.establish_connection(
    :adapter => "sqlserver", 
    :host => "SqlServerHostName", 
    :database => "HostDbName" 
) 
+0

私は分かりやすくするために質問に入れていますが、このファイルはプロジェクトの中にあります。私はactiverecordが他のファイルの1つに必要と考えています。 「ホスト名」とは何ですか?それはURLと関係がありますか?これはリモートデータベースですが、これも質問に追加します。 – Cooper

+0

ブラインドがブラインドをリードしています。あなたはMS JDBCドライバをインストールしていると確信しています。私はIDE内でJDBCを使って作業していましたが、それはドライバの問題を解決しました。ホスト名はSqlServerをホストするサーバー名で、databaseはそのインストールのdbです。あなたが「アイル」で何をしようとしているのか聞いてもよろしいですか? – donvnielsen

+0

FYI - MicrosoftのSqlServer JDBC v6.0.8112.100を使用しています。 – donvnielsen

関連する問題