Railsã®Migration
- 2006.07.21
- Ruby/Rails, åå¼·ä¼è³æ
ãªãã§ããããã¯
ãã¼ã¿ãã¼ã¹æ§é ããã¼ã¸ã§ã³ç®¡çããä»çµã¿
SQLã§ã¯ãªãRubyã®ã³ã¼ãã§ãã¼ã¿ãã¼ã¹æ§é ãè¨è¿°ãããã¨ã«ãã£ã¦æ½è±¡å
- æ¬çªç°å¢ã¸ã®å¤æ´ã®é©ç¨æ¼ãããªããªã
- ã»ãã®éçºç°å¢ãæ¤è¨¼ç°å¢ã¸ã®å¤æ´ã®é©ç¨ãããããª
- å¿ è¦ãããã°ä»¥åã®ãã¼ã¸ã§ã³ã«æ»ãã
- è¤æ°ã®ãã¼ã¿ãã¼ã¹ã¨ã³ã¸ã³ã¸ã®å¯¾å¿ãç°¡åã«ã§ãã
- MySQL, PostgreSQL, SQLite, SQL Server, Sybase, Oracle (ã¡ã¸ã£ã¼ãªãã®ã¯DB2以å¤ããã¶ã ã£ã¦)
ã©ãã¤ããã¾ãã
$ svn up
$ rake migrate
ã»ããã§ä½¿ãã
ããã§æå ã®éçºç°å¢ã®ã½ã¼ã¹ã³ã¼ãã¨ãã¼ã¿ãã¼ã¹ã®æ§é ãææ°ã®ãã®ã«ãªãã
ä»çµã¿
schema_infoã¨ãããã¼ãã«ã¨Migrationå®ç¾©ãã¡ã¤ã«ã®ååã§ãã¼ã¸ã§ã³ç®¡ç
Migrationé¢é£ã®æä½
rake db:schema:dump (rake db_schema_dump)
db/schema.rbã«ãã¼ã¿ãã¼ã¹æ§é ããã³ãããã
# This file is autogenerated. Instead of editing this file, please use the
# migrations feature of ActiveRecord to incrementally modify your database, and
# then regenerate this schema definition.
ãã³ãããããã¡ã¤ã«ã®æåã®ä¸è¡ã ãã®ãã¡ã¤ã«ãç·¨éãã¦ä½¿ãããããªãã¦Migrationã使ã£ã¦ããã¨è¨ã£ã¦ããã
æ¢åã®ãã¼ã¿ãã¼ã¹ããã£ã¦éä¸ããMigrationãã¯ãããå ´åã¯ãã®ãã¡ã¤ã«ãå ã«æåã®å®ç¾©ãã¡ã¤ã«ãä½ã£ã¦ããã¨è¯ãã
ãã®ã¨ãunsignedãªã©æ½è±¡è¡¨ç¾ã§ãµãã¼ããã¦ãªãæ§é ã¯æ¶ãã¦ãã¾ãã®ã§æ³¨æã
rake db:schema:load (rake db_schema_import)
db/schema.rbã®å 容ããã¼ã¿ãã¼ã¹ã«åæ ããã
æ®éã¯ä½¿ããªãï¼
./script/generate migration MigrationName
Migrationå®ç¾©ãã¡ã¤ã«ã®éå½¢ãä½æããã
class Hoge < ActiveRecord::Migration
def self.up
end
def self.down
end
end
rake migrate
Migrationå®ç¾©ãã¡ã¤ã«ã®å 容ããã¹ã¦éçºç¨ã®ãã¼ã¿ãã¼ã¹ã«åæ ããã
rake migrate VERSION=1
Migrationå®ç¾©ãã¡ã¤ã«ã®å 容ã«å¾ã£ã¦ãã¼ã¿ãã¼ã¹ã®æ§é ãæå®ããããã¼ã¸ã§ã³ã®ç¶æ ã«æ»ã
â»ãã¼ã¸ã§ã³ãæ»ãå ´åã¯svnããå ã«migrateï¼å®ç¾©ãã¡ã¤ã«ããªããªãã¨å ã«æ»ããªãï¼
rake migrate RAILS_ENV=production
æ¬çªç°å¢ã¸ã®Migration
Migrationå®ç¾©ãã¡ã¤ã«ã®æ¸ãæ¹
ãã¡ã¤ã«åã¨ãã¼ã¸ã§ã³
ãã¡ã¤ã«åã®å é ã«ãã¼ã¸ã§ã³çªå·ãå ¥ãã
001_create_gadgets.rb
002_migration_test.rb
ãã¡ã¤ã«åã¨ã¯ã©ã¹åã¯ããããªãã¨ãã¡
ãã¡ã¤ã«åã®ãã¼ã¸ã§ã³çªå·ã¯ç¾å¨ãããã¡ã¤ã«ããã¨ã«ä½ãããã®ã§ãè¤æ°äººã§éçºãã¦ãã¨ãããã£ã³ã°ãã¦ãã¾ããã¨ãããå¾ã ããããå ´åã¯ãã¼ã¸ã§ã³æ»ããããã¦é©å®èª¿æ´ã
self.upã¨self.down
ãã¼ã¸ã§ã³ãé²ããã¨ãã«self.upãå®è¡ããã¦ããã¼ã¸ã§ã³ãæ»ãã¨ãã«self.downãå®è¡ãããã
ãã®æ´åæ§ãåãã¦ãªãã¨ãã¼ã¸ã§ã³ãæ»ããã¨ãã«ããããªãã¨ã«ãªãå¯è½æ§ãããã
ã§ãããã¨ä¸è¦§
- create_table(name, options)
- drop_table(name)
- rename_table(old_name, new_name)
- add_column(table_name, column_name, type, options)
- rename_column(table_name, column_name, new_column_name)
- change_column(table_name, column_name, type, options)
- remove_column(table_name, column_name)
- add_index(table_name, column_name, index_type)
- remove_index(table_name, column_name)
ã«ã©ã ã®å
æ½è±¡è¡¨ç¾ | Rubyå | PostgreSQLå | MySQLå |
---|---|---|---|
:primary_key | Fixnum | serial | primarykeyint(11)DEFAULTNULLauto_incrementPRIMARYKEY |
:string | String | charactervarying(255) | varchar(255) |
:text | String | text | text |
:integer | Fixnum | integer | int(11) |
:float | Float | float | float |
:datetime | Time | timestamp | datetime |
:timestamp | Time | timestamp | datetime |
:time | Time | timestamp | datetime |
:date | Date | date | date |
:binary | String | bytea | blob |
:boolean | Object | boolean | tinyint(1) |
- MySQLã®æ°å¤å
- :integer, :limit => 3 â tinyint
- :integer, :limit => 5 â smallint
- :integer, :limit => 7 â mediumint
- :integer, :limit => 10 â int
- :integer, :limit => 20 â bigint
unsignedã«ã¯ã§ããªãã½ãï¼
BLOBåã¨ããæ¡æ°æå®ã§tinyblobã¨ãã«ãªãã¾ãã
ã«ã©ã ã®ãªãã·ã§ã³
:limit | æ°å¤ã§æ¡æ°æå® |
:default | ããã©ã«ãå¤ãæå® |
:null | true or false |
çSQLã
- execute(sql)
ã©ããã¦ãunsignedã¤ãããã¨ãã¨ãã
ã¹ãã¼ãå¤æ´ä»¥å¤ã®ãã¼ã¿ã¡ã³ãã«ã
ã©ãã
åèã«ãããã¼ã¸
- ã½( ã»âã»)ããã¾ãã¾ã¼(2005-08-17) Migration
- Class: ActiveRecord::Migration:
- UsingMigrations in Ruby on Rails
- Rails Migration Cheat Sheet
ãã¾ããããã¯ã¹
æ¬çªéç¨
ãªãã¦ãã¨æå¤ã¨é£ãã
httpd
- Apache+Fast-CGI
- è¨å®ããªãããã©ã
- 2.0ã ã¨ä¸å®å®
- ã¨ã¯ããApacheã§åãããããå¾ãªãå ´åã¯å¤ã
- lighttpd+Fast-CGI
- è¨å®ãããªãã«ããã©ã
- äºå®ä¸Railsã®æ¨æºï¼
- mongrel
- ç°¡åã§ã¯ããï¼ãããï¼
- å°é ä¸
- WEBrick
- ç°¡åã ãããã©ã¼ãã³ã¹ããããã
- ã¢ã¯ã»ã¹ãå°ãªããã°ã³ã¬ã§åå
- Apache+CGI
- ããã¼ãã³ãã®æ代ã«éæ»ããããã®ãããªæããããè¦ãã
- ãã¡ã絶対
ãã¼ã¿ãã¼ã¹
- development,test,productionã®ç°å¢ã®éãã«æ³¨æ
- database.ymlã¯ãªãã¸ããªã«å ¥ããã¹ããªãã ããã
- å¤å°ã®å¦ç¿ã³ã¹ããæã£ã¦ãMigrationã使ã£ãã»ãããã
Railsãã¼ã¸ã§ã³äºææ§åé¡
Railsã®ãã¼ã¸ã§ã³ãå¤ããã¨ã¢ããªãåããªããªãã freezeãã¨ãã¨vender以ä¸ã«ç¹å®ãã¼ã¸ã§ã³ã®Railsãç½®ãã¦ãããã®ã§å¹³æ°ã
- rake rails:freeze:gems - ç¾å¨ã¤ã³ã¹ãã¼ã«ããã¦ããã¼ã¸ã§ã³ã使ç¨ãæ®æ®µã¯ãã¶ãããã
- rake rails:freeze:edge - Railsãªãã¸ããªã®HEADãæã£ã¦ããããã¶ãå®é¨ã¨ãããã¨ãã«ä½¿ãã
- rake rails:freeze:edge TAG=rel_1-1-2 - Railsã®ãªãã¸ããªããæå®ã¿ã°ã®ãã¼ã¸ã§ã³ãæã£ã¦ãã
Capistrano
- å¤ããã£ã¹ããªã ã¨rubyã®opensslã®ã©ã¤ãã©ãªã鬼éãªæ°ããã
- database.ymlãªãã¸ããªãããã¤ãæã£ã¦ãã
- ãã¹ã¦ã®ãµã¼ãã«Rubyã¨rakeã¨railsãå ¥ããªãã¨ãã¡ã§ã¦ã¼ã¶ãä½ããªãã¨ãã¡ãªã®ãããã©ã
- ãã©Railsã¢ããªãã¹ã±ã¼ã«ã¢ã¦ããããªãã³ã¬
éçºç°å¢ã©ããã
- ãã¼ã«ã«ã§ç·¨éãã¦ã¢ãã
- scp
- rsync
- ãªã¢ã¼ãã®ãã¡ã¤ã«ãç´æ¥ç·¨é
- ã¨ãã£ã¿ã®ãªã¢ã¼ããã¡ã¤ã«ç·¨éæ©è½
- samba
- ããããLinuxãã·ã³ãã¯ã©ã¤ã¢ã³ãã«
- Windowsã«Railsãå
¥ãã
- Cygwinä¸ã«å ¥ãããã®ã¯ã»ã¼åé¡ãªãåãããã
- ãã¼ã«ã«éçºä¸æ³
- Mac Bookãè²·ã