FaqRailsJRubyDatabaseAccessJa

JRuby on Rails のアプリケーションをデータベースにアクセスさせるにはどうしたらよいですか?

Contents


JDBC アダプタ以外

MySQL アダプタは JRuby に入っています。ネイティブな Ruby on Rails アプリケーションでも使えます。

PostgreSQL では postgres-pr gem が使えます。

その他の情報があれば追加してください。

データベースの JDBC アダプタ

Rails 2.0 以降ではデータベース JDBC アダプタを使えます。以下のアダプタが利用可能です。

  • activerecord-jdbcderby-adapter
  • activerecord-jdbch2-adapter
  • activerecord-jdbcjhsqldb-adapter
  • activerecord-jdbcmysql-adapter
  • activerecord-jdbcpostgresql-adapter
  • activerecord-jdbcsqlite-adapter

これらのアダプタは JDBC コードの読み込みを考慮してくれます。また JDBC ドライバの JAR ファイルのコピーを読み込みます。そのためクラスパスや JAR ファイルを読み込む必要がありません。

これらのアダプタを使うには Ruby の設定は同じ構成を使えますが、jdbc をアダプタ名の前に付け足します:

development:
  adapter: jdbcpostgresql
  database: rubyweblog_development
  username: postgres
  password: mypassword
  host: localhost


一般的な JDBC アダプタ

JDBC 接続を使ったデータベースアクセスの本来の方法はサポートされています。これは 6.1 では「JDBC を使ったデータベースアクセス」チェックボックスを使う方法です。これはデータベース特有のドライバがない場合にこの方法を使えます。

一般的な JDBC アダプタを使用するには activerecord-jdbc-adapter gem をインストールし、データベースの JDBC 3.0 相当のドライバをダウンロードする必要があります。JDBC ドライバは純粋な Java ドライバである必要があります。JAR をクラスパスに置いてください。

設定は2つのオプションがあります。Rails の標準的なデータベースサーバーの構成、ネイティブ Ruby で使う方法か、ドライバや URL を指定する方法です。

標準的な設定

ネイティブ Ruby アプリケーションと同じ構成を使う事ができます。しかし environment.rbRails::Initializer直前に以下の記述が必要です。この方法はネイティブ Ruby と JRuby を切り替えて使う場合には便利です。

 if RUBY_PLATFORM =~ /java/
   require 'rubygems'
   gem 'activerecord-jdbc-adapter'
   require 'jdbc_adapter'
 end

environment.rb ファイルの上の記述には以下の例の設定が使えます:

development:
  adapter: postgresql
  encoding: unicode
  database: rubyweblog_development
  username: postgres
  password: adminadmin
  host: localhost
  port: 5432


JDBC 設定を使用する

database.yml にドライバと URL の構成を指定します。

development:
  adapter: jdbc
  driver: org.postgresql.Driver
  url: jdbc:postgresql://localhost/rubyweblog_development
  encoding: unicode
  username: postgres
  password: mypassword
  host: localhost
  port: 5432

Rails の 2. 0 以前のバージョンでは、以下を environment.rb に追加する必要があります。Rails::Initializer の直前に追加してください。Rails 2.0 やそれ以降のバージョンでは必要がありません。

 if RUBY_PLATFORM =~ /java/
   require 'rubygems'
   gem 'activerecord-jdbc-adapter'
   require 'jdbc_adapter'
 end

既知の問題

  • db:create rake タスクは JDBC/Postgresql では動きません。(JRUBY-2715)

その他の情報



バージョン: NetBeans 6.0、 6.1

プラットフォーム: すべて


Not logged in. Log in, Register

By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2012, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo