• ベストアンサー

railsのmigration機能

Ruby on Railsのmigration機能は便利ですが、この機能をRuby on Rails以外のプロジェクトのユニットテストのために使いたいと思っています。 というわけでRoRプロジェクトを作成しないで同等のmigration機能だけを使用できるようなツールみたいなものを探していますが、見つかりません。 (当方のrubyとRoRの無知さから情報にたどり着けないだけの可能性あり。。) 何かいいツール知ってる方いましたら教えて下さい。 (rubyで書かれていなくてもNPです。)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

Railsプロジェクトでなくとも、Railsに組み込まれているactiverecordライブラリさえあればmigrationを利用可能です。ただし、その場合はrailsのconfig/database.ymlに書かれている相当のactiverecord初期化処理を自分で呼び出さねばなりません。 参考URLに挙げたようなやり方で、ActiveRecord::Base.establish_connectionを呼び出してactiverecordを初期化します。例えば次のような具合です。 require 'rubygems' gem 'activerecord' require 'active_record' # 仮にSQLite3を使用。ファイルhoge.sqlite3に書き出し ActiveRecord::Base.establish_connection \ :adapter => 'sqlite3', :database => 'hoge.sqlite3' # migrationを定義 class CreateUsers < ActiveRecord::Migration def self.up create_table(:users) do |t| t.string :name, :limit => 100, :null => false, :unique => true t.timestamps end end def self.down drop_table(:users) end end # 実行 CreateUsers.up

参考URL:
http://jp.rubyist.net/magazine/?0006-RubyOnRails
nsnaago
質問者

お礼

まさに望んだ回答ありがとうございます。 実はユニットテストしようとしているのは、RubyどころかC#で開発しているプロジェクトなんですけど、NDbUnitはまだoracleに対応していなくて困って外部コマンドを呼んだり等してました。(この方法だとテキストベースでデータを設定できない) その点、全てRubyで行えばこんなに簡単にできちゃいますよね。(C#の場合はIronRubyがある!Javaの場合はJRubyがあるけど、DbUnitはoracle対応済。) 参考URLに書かれていることと、クラスライブラリのActiveRecord.Baseについて読んでいこうと思います。

関連するQ&A

専門家に質問してみよう