RubyでActiveRecordをMySQLの管理ライブラリとして使う (Railsは使わない)

スポンサーリンク

[筆者環境]
Windows7 64bit
Ruby192 mingw32
Rails3 インストール済

Ruby on Rails 3 にて、DB管理のActiveRecordに慣れ親しんできたので、せっかくだから普通のRubyアプリケーションにもActiveRecordを使いたくなった。便利ですよね。

ってことで使っていきたいんだけど、Rails3だと全部railsコマンドで自動でセッティングしてくれるので、具体的な設定方法が分からない。上記のリンクは非常に参考になったサイト。

最低限抑えておかないといけない点をまとめる。

ORマッピング

  1. 先頭大文字の単数形クラスと小文字複数形のテーブルをマップ
  2. 主キーとなる列名は、id
  3. 外部キーは、「参照先テーブルの単数形」_「主キー名(id)」。(例:user_id)

データベースの作成にはMigrationを使う

まず、Migrationをするためのファイルを準備
ファイル名を001_create_users.rbというように、テーブル名と合わせたルール規則にしないといけない。
このファイルを、rubyプロジェクトのルートからdb/migrate下(なければディレクトリ作成)に作成

class CreateUsers < ActiveRecord::Migration
def self.up
create_table :users do |t|
t.column :name, :string, :null => false
end
end
def self.down
drop_table :users
end
end

RubyプロジェクトのルートフォルダにRakeファイルを作成

#Rakefile
require 'active_record'
require 'yaml'
require 'logger'
task :default => :migrate
desc "Migrate the database through scripts in db/migrate. Target specific version with VERSION=x"
task :migrate => :environment do
ActiveRecord::Migrator.migrate('db/migrate', ENV["VERSION"] ? ENV["VERSION"].to_i : nil )
end
task :environment do
ActiveRecord::Base.establish_connection(YAML::load(File.open('database.yml')))
ActiveRecord::Base.logger = Logger.new(File.open('database.log', 'a'))
end

Rubyプロジェクトのルートでrakeコマンドを叩く。
テーブルの作成が完了

以下は動作確認用

require 'rubygems'
require 'active_record'
require 'yaml'
require 'logger'
dbconfig = YAML::load(File.open('database.yml'))
ActiveRecord::Base.establish_connection(dbconfig)
ActiveRecord::Base.logger = Logger.new(STDERR)
ActiveSupport::LogSubscriber.colorize_logging = false # ActiveRecord.colorize_logging = false は使えないため
class User < ActiveRecord::Base
end
puts User.count
# SQL (0.000277)   SELECT count(*) AS count_all FROM users
# 6

————————————————————————–

http://thinkit.co.jp/story/2010/10/13/1804
http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/SchemaStatements.html

How to use ActiveRecord without Rails
http://snippets.aktagon.com/snippets/257-How-to-use-ActiveRecord-without-Rails

ActiveRecord Without Rails
http://blog.aizatto.com/2007/05/21/activerecord-without-rails/

ActiveRecord Migrations Without Rails
http://blog.aizatto.com/2007/05/27/activerecord-migrations-without-rails/

http://www.sanecode.com/2010/10/activerecord-disable-colorize_logging/
http://api.rubyonrails.org/classes/ActiveRecord/Migration.html

http://exposinggotchas.blogspot.jp/2011/02/activerecord-migrations-without-rails.html

// 他の日本語での紹介ページ
http://cryks.hateblo.jp/entry/20081110/1226321503

コメント

  1. saru999 より:

    ブログ引っ越しされたんですね。
    これからもよろしくおねがします。

    できましたら、旧ブログもそのまま置いておいてもらえると助かります。技術系ブログはあとになって、検索にかかり、勉強になる記事が多いので。。。時間の劣化がないのが技術系ブログの良さであり、永続的な価値を出し続けるブログはぜひそのまま置いておいてもらえると助かります♪

  2. fxkireek より:

    コメントありがとうございます^^
    前のブログの内容をすべて転載しているので、こちらで検索していただければ大丈夫だと思います。また、前のブログを消す予定は今のところないです。^^

タイトルとURLをコピーしました