かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

ActiveRecordを入門(JRubyで)

前回、PostgreSQLの設定について書いたのは、これがやりたかったから!!!
早速やってみた。


やることは↓

この2つはgem install railsとgem install ActiveRecord-JDBCでサクっと終わる。

次に、PostgreSQLJDBCCLASSPATH環境変数に追加する。
とりあえずCLASSPATH環境変数使うの嫌だけど、ここで変なことして時間を食うのも勿体無いので、とりあえず環境変数に追加しといた。
PostgreSQLactiverecordという名前でDBを作っておく。
文字コードUTF-8です。
DBには下のDDLでテーブルを切った。

create table employees (
  id serial primary key,
  name varchar(50),
  age int
)

ActiveRecordのデフォルト設定に従うなら「idという主キーのカラムにシーケンスを割り当てる」「テーブル名は複数形にする」という決まりがある。
ここも従っておく。


早速Rubyのコード!!
PostgreSQLのユーザ名とパスワードをpostgresと仮定した場合のコードです。

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

# DBの接続に関する設定 JDBCと同じやね
ActiveRecord::Base.establish_connection(
  :adapter => 'jdbc',
  :driver => 'org.postgresql.Driver',
  :url => 'jdbc:postgresql://localhost:5432/activerecord?user=postgres&password=postgres'
)

# employeesテーブルに対応するクラス テーブルが複数形なのに対してクラスは単数形
class Employee < ActiveRecord::Base
end

# Tarou君10歳をDBに登録
emp = Employee.new
emp.name = "Tarou"
emp.age = 10
emp.save

# 全件取得して画面に出力
Employee.find(:all).each { |emp|
  puts "#{emp.id}: #{emp.name}"
}

うっし。できた!!
ただ、残念なことに…日本語文字化けしてしまいますorz
なぜだぁぁぁぁぁ!