2,3番目はmigrationを使います
- create_user.rb
class CreateUsers < ActiveRecord::Migration def self.up create_table :users do |t| t.column :family_name, :string, :limit => 40, :null => false t.column :first_name, :string, :limit => 40, :null => false t.column :login_name, :string, :limit => 40, :null => false t.column :hashed_password, :string, :limit => 40, :null => false end end def self.down drop_table :users end end
- setup.rb
class Setup < ActiveRecord::Migration def self.up User.setup end def User.delete_all end end
- user.rb
class User < ActiveRecord::Base def self.setup create(:family_name => "田中", :first_name => "太郎", :login_name => "tanaka", :hased_password => plain_password_to_hash('tanaka')) end private def plain_password_to_hash(plain_password) #ハッシュ値に変換 end end
Raketaskファイル作成
このtaskでは、DBテーブルを作成し、migrationを適応させるという2つのことを行います。
- setup.rake
require 'environment' databases = %w(myapp_development myapp_test) user = "myuser" user_password = "mypassword" mysql_root_user_password = [MySQLのrootユーザーのpassword] #Mysqlにrootユーザーで接続 def connect ActiveRecord::Base.establish_connection( :adapter => 'mysql', :host => 'localhost', :username => 'root', :password => mysql_root_user_password, :database => 'mysql' ) end #セットアップタスク #db:setup、db:migrate2つのタスクを実行 task :setup do %w(db:setup db:migrate).each do |task| Rake::Task[task].invoke end end namespace :db do task :setup do ActiveRecord::Schema.define do connect begin databases.each do |database| #DB作成 create_database database #権限付与及びユーザー作成 execute "grant all privileges on #{database}.* to '#{user}'@'localhost' identified by '#{mypassword}'" end rescue end end end task :clean do ActiveRecord::Schema.define do connect begin execute "drop user '#{user}'@'localhost'" rescue end databases.each do |database| drop_database database end end end end
1行目でenvironment.rbを読み込んでおかないと、次のエラーが発生する。
uninitialized constant ActiveRecord
uninitialized constant ActiveRecord が解決したにあるように、rake environment setupとやってもできるのですが、rake setupとやりたかったので、requireで読みこむ。
参考
かんたんRuby on RailsでWebアプリケーション開発
- 作者: arton
- 出版社/メーカー: 翔泳社
- 発売日: 2006/07/27
- メディア: 大型本
- 購入: 5人 クリック: 211回
- この商品を含むブログ (89件) を見る