Nasuta<http://www.nasuta.jp/>

2007年04月17日

Jruby On Rails + MySQL

前回はJruby On RailsでWebrickが立ち上がるところまで確認しましたので、今回はMySQLへの接続にトライしてみました。

結論からいうと、config/database.yml config/environment.rb の設定でハマりましたが、原因がわかればすんなりと行きました。

参考にしたURLはこちら。
「(Java+Derby)* Ruby on Rails プログラミング」
http://www.atmarkit.co.jp/fjava/column/koyama/koyama04.html

と、こちら。
「Ruby On Rails On Tomcat」(英語)
http://buggyvelarde.org/?p=20

前者はDerbyを前提にしているので後者の「Ruby On Rails On Tomcat」の内容にそってトライしてみました。ActiveRecord-JDBCのインストール
ActiveRecord-JDBCモジュールをインストールすることによってRailsからJDBCドライバ経由でMySQLにアクセスできます。

% $JRUBY_HOME/bin/gem install ActiveRecord-JDBC


config/environment.rb
http://jruby-extras.rubyforge.org/ActiveRecord-JDBC/
参考にしたページに書かれてある方法ではなく、こちらのドキュメントが正式なやり方だと思います。
Rails::Initializer. の前に次の記述を行います。

require 'rubygems'
gem 'ActiveRecord-JDBC'
require 'jdbc_adapter'


config/database.yml
一番ハマったのがここ。 url: をuri:にしていてずっと接続できずに例外が発生したので注意してください。また url:の後にキチンとスペースをあけてURLを記述してください。よくわからないエラーが表示されます。これも悩みました。

development:
adapter: jdbc
driver: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost/test_development
username: root
password:


migration
migrationをつかってテーブルを作成します。

ruby script/generate migration create_wiki_tables

db//migrate/001_create_wikis_tables.rb にスキーマを定義します。

class CreateWikiTables < ActiveRecord::Migration
def self.up
create_table :wikis do |t|
t.column :name, :string, :limit => 50, :null => false
t.column :wpage, :string, :limit => 70, :null => false
end
# make the :name field of the database a key.
add_index(:wikis,:name)
end

def self.down
end
end

rake もちゃんと動作してテーブルも作成されます。

% rake db:migrate


scaffold
DBもできたのでscaffoldを実行してみます。

jruby script/generate scaffold wiki

scaffoldの作成も問題なくできました。

Webrickの起動

% jruby script/server

Webrickを起動して http://localhost:3000/list にアクセスしたら無事表示されました。すばらしい。
が、日本語の扱いがまずいらしく文字化けするかエラーになって保存されません。

ここまでくれば文字化けはなんとかなるでしょう。次はtomcatでRailsを動かしてたいと思います。
posted by ふんじ at 22:54| Comment(0) | TrackBack(0) | Jruby on Rails | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。