Ruby/Ruby on Rails/step by step ¤Î¥Ð¥Ã¥¯¥¢¥Ã¥×(No.7)
- ¥Ð¥Ã¥¯¥¢¥Ã¥×°ìÍ÷
- º¹Ê¬ ¤òɽ¼¨
- ¸½ºß¤È¤Îº¹Ê¬ ¤òɽ¼¨
- ¥½¡¼¥¹ ¤òɽ¼¨
- Ruby/Ruby on Rails/step by step ¤Ø¹Ô¤¯¡£
- 1 (2010-03-12 (¶â) 06:47:36)
- 2 (2010-03-12 (¶â) 06:51:03)
- 3 (2010-03-13 (ÅÚ) 03:12:55)
- 4 (2010-03-13 (ÅÚ) 11:35:50)
- 5 (2010-03-13 (ÅÚ) 16:36:05)
- 6 (2010-03-15 (·î) 13:53:35)
- 7 (2010-03-16 (²Ð) 05:52:30)
- 8 (2010-03-16 (²Ð) 13:35:28)
- 9 (2010-03-17 (¿å) 03:52:09)
- 10 (2010-03-18 (ÌÚ) 06:22:21)
- 11 (2010-03-19 (¶â) 13:37:57)
- 12 (2010-03-20 (ÅÚ) 11:03:25)
- 13 (2010-04-03 (ÅÚ) 01:41:58)
- 14 (2010-04-03 (ÅÚ) 13:03:29)
- 15 (2010-04-03 (ÅÚ) 22:40:53)
- 16 (2010-04-12 (·î) 04:25:03)
- 17 (2010-09-10 (¶â) 02:37:57)
- 18 (2010-09-15 (¿å) 10:32:31)
- 19 (2010-09-15 (¿å) 23:22:27)
- 20 (2010-09-16 (ÌÚ) 15:20:53)
- 21 (2010-09-18 (ÅÚ) 15:06:51)
- 22 (2010-09-18 (ÅÚ) 20:48:26)
- 23 (2010-09-19 (Æü) 08:18:28)
- 24 (2010-09-19 (Æü) 14:07:11)
- 25 (2010-09-19 (Æü) 19:52:32)
- 26 (2010-09-20 (·î) 01:45:49)
- 27 (2010-09-20 (·î) 07:37:19)
- 28 (2010-09-20 (·î) 13:27:40)
- 29 (2010-09-20 (·î) 19:30:34)
- 30 (2010-09-21 (²Ð) 01:52:04)
- 31 (2010-09-21 (²Ð) 07:44:31)
Ruby on Rails¤Ç·«¤êÊÖ¤·Áàºî¤·¤Æ³Ð¤¨¤¿¤¤»öÊÁ¤òstep¤È¤·¤ÆÀ°Íý¤·¤Þ¤·¤¿¡£
- step01 InstantRails¤Îµ¯Æ°¤Èirb
- step02 ¥×¥í¥¸¥§¥¯¥È¤Î¿·µ¬ºîÀ®
- step03 Mongrel web¥µ¡¼¥Ð¤Îµ¯Æ°
- step04 Aptana Studio RadRails
- step05 ¥Ç¡¼¥¿¥Ù¡¼¥¹ÀßÄê
- step06 ¥Ç¡¼¥¿¥Ù¡¼¥¹ºîÀ®
- step07 migration¤Ë¤è¤ë¥Æ¡¼¥Ö¥ëºîÀ®
- step08 scaffold¤Ë¤è¤ê¥â¥Ç¥ë¤ª¤è¤Ó¥â¥Ç¥ë¤Ë¥¢¥¯¥»¥¹¤¹¤ë¾ì¤Î¥Ú¡¼¥¸¤òºîÀ®
- step09 ¥â¥Ç¥ë¤Ø¤Î¸¡¾Ú½èÍýÄɲÃ
- step10 ·îÁªÂò¤Î¥Õ¥©¡¼¥à¤ò±Ñ¸ì¤«¤é¿ô»ú¤ËÊѹ¹
- step11 ¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤¿gem¤ÎAPI¥É¥¥å¥á¥ó¥È»²¾È
- step12 Ruby-GetText¤Î¥¤¥ó¥¹¥È¡¼¥ë
- step13 Ruby-GetText¤òÍøÍѤ¹¤ë¤è¤¦¥×¥í¥¸¥§¥¯¥È¤ËÀßÄê
step01 InstantRails¤Îµ¯Æ°¤Èirb
C:\InstantRails\InstantRails.exe¤ò¥À¥Ö¥ë¥¯¥ê¥Ã¥¯¤·¤Æµ¯Æ°¤·¤Þ¤¹¡£
DOS¥×¥í¥ó¥×¥È²èÌ̤ò³«¤¡¢irb¤ÇÁàºî¤·¤Æ¤ß¤Þ¤¹¡£
[I¤Î¥¢¥¤¥³¥ó] - [Rails Applications] - [Open Ruby Console Window]
³Æ¥³¥Þ¥ó¥É¤Î°ÕÌ£
cmd /f:o | ctrl+f¤Ç¤Î¥Õ¥¡¥¤¥ë̾Êä´°¤ò͸ú¤È¤·¤Þ¤¹ |
ruby -v | ruby¤Î¥Ð¡¼¥¸¥ç¥ó¤òɽ¼¨¤·¤Þ¤¹ |
irb -ribr/completion | Êä´°µ¡Ç½Í¤ê¤Çirb¤òµ¯Æ°¤·¤Þ¤¹ |
pu[tab] | ÅÓÃæ¤Çtab¥¡¼¤ò²¡¤¹¤ÈÊä´°¤¬¸ú¤¤Þ¤¹ |
puts "Hello World!" | rubyʸ¤òÂǤĤȤ¹¤°¤Ë¼Â¹Ô¤µ¤ì¤Þ¤¹ |
exit | irb¤ò½ªÎ»¤·¤Þ¤¹ |
¤è¤¯»È¤¦Áàºî¤òrails_appsľ²¼¤Î¥Ð¥Ã¥Á¥Õ¥¡¥¤¥ë¤Ë¤·¤Þ¤·¤¿¡£
setenv.bat | cmd /f:o |
irb.bat | C:\InstantRails\ruby\bin\irb -rirb/completion |
step02 ¥×¥í¥¸¥§¥¯¥È¤Î¿·µ¬ºîÀ®
- InstantRails¤«¤éDOS¥×¥í¥ó¥×¥È¤ò³«¤¯
¥«¥ì¥ó¥È¥Õ¥©¥ë¥À¤ÏC:\InstantRails\rails_apps¤È¤Ê¤ê¤Þ¤¹¡£ - rails ¥×¥í¥¸¥§¥¯¥È̾¤Ç¥×¥í¥¸¥§¥¯¥È¤ò¿·µ¬ºîÀ®
- cd ¥×¥í¥¸¥§¥¯¥È̾¤Ç¥×¥í¥¸¥§¥¯¥È¥Õ¥©¥ë¥À¤Ë°ÜÆ°
°Ê¹ß¤ÎÁàºî¤Ï¥×¥í¥¸¥§¥¯¥È¥Õ¥©¥ë¥À¤Ç¹Ô¤¤¤Þ¤¹¡£
step03 Mongrel web¥µ¡¼¥Ð¤Îµ¯Æ°
- ¥×¥í¥¸¥§¥¯¥È¥Õ¥©¥ë¥À¤Çruby script\server¤ò¼Â¹Ô¤·¤ÆMongrel web¥µ¡¼¥Ð¤òµ¯Æ°
ctrl+c¥¡¼¤ÇÃæÃǤǤ¤Þ¤¹¡£ - http://127.0.0.1:3000/¤ò¥Ö¥é¥¦¥¶¤Ç³«¤¯¤È¡¢¥×¥í¥¸¥§¥¯¥È¤ÎWeb¥Ú¡¼¥¸¤¬¸«¤é¤ì¤Þ¤¹¡£
step04 Aptana Studio RadRails
UTF-8¤Ë½é´üÀßÄê
- Aptana Studio¤òµ¯Æ°
- ʸ»ú¥³¡¼¥É¤òUTF-8¤Ë½é´üÀßÄê
[Window] - [Preferences] - [General] - [Workspace] - [Text file encoding]¤òUTF-8¤ÇÀßÄê¤ËÀßÄꤷ¤Þ¤¹¡£
Rails¥×¥í¥¸¥§¥¯¥È¤Î¥¤¥ó¥Ý¡¼¥È
- [File] - [Import] - [Other] - [Import As New Project] - [Next]
- ¥×¥í¥¸¥§¥¯¥È¥Õ¥©¥ë¥À¤òÀßÄê
- ¤½¤Î¤Þ¤ÞFinish
step05 ¥Ç¡¼¥¿¥Ù¡¼¥¹ÀßÄê
config\database.yml¤ò³«¤¤¤Æ¡¢É¬ÍפʾðÊó¤òÆþÎÏ
development: adapter: mysql database: ¥×¥í¥¸¥§¥¯¥È̾_development username: root password: host: localhost test: adapter: mysql database: ¥×¥í¥¸¥§¥¯¥È̾_test username: root password: host: localhost production: adapter: mysql database: ¥×¥í¥¸¥§¥¯¥È̾_production username: root password: host: localhost
MySQL¤Î´ûÄê¤Îʸ»ú¥³¡¼¥É¤òUTF-8¤ËÀßÄê
- [Instant Rails] - [I¥¢¥¤¥³¥ó] - [Configure] - [MySql]¤Çmy.ini¤ò³«¤¯
- ËöÈø¤Ë¼¡¤Î£²¹Ô¤òÄɲÃ
default-character-set=utf8 skip-character-set-client-handshake
step06 ¥Ç¡¼¥¿¥Ù¡¼¥¹ºîÀ®
sql¥³¥Þ¥ó¥É¤ÇºîÀ®¤¹¤ëÊýË¡
- phpMyAdminµ¯Æ° [Instant Rails] - [I¥¢¥¤¥³¥ó] - [Configure] - [Database(via PhpMyAdmin)]
- SQL¥¢¥¤¥³¥ó¤ò¥¯¥ê¥Ã¥¯
- create database ¥×¥í¥¸¥§¥¯¥È̾_development default charset utf8;
- ºï½ü¤¹¤ë¤È¤¤ÏphpMyAdmin¤ò»ÈÍÑ
- ´Ä¶¤òÊѤ¨¤¿DB¤òºîÀ®¤¹¤ë¤È¤¤Ï¡¢¥³¥Þ¥ó¥É¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹Ì¾¤òÊѹ¹
rake¥¿¥¹¥¯¤ÇºîÀ®¤¹¤ëÊýË¡
- lib\tasks\setup_db.rake¥Õ¥¡¥¤¥ë¤òºîÀ®
env = ENV['RAILS_ENV'] || 'development' database = "¥×¥í¥¸¥§¥¯¥È̾_#{env}" task :connect_db => [:environment] do ActiveRecord::Base.establish_connection( :adapter => 'mysql', :host => 'localhost', :username => 'root', :database => 'mysql' ) end task :setup_db => [:connect_db] do ActiveRecord::Schema.define do create_database database end end task :destroy_db => [:connect_db] do ActiveRecord::Schema.define do drop_database database end end
- ¥×¥í¥¸¥§¥¯¥È¥Õ¥©¥ë¥À¤Ç¡Örake setup_db¡×
- ºï½ü¤¹¤ë¤È¤¤Ï¡Örake destroy_db¡×
- ´Ä¶¤òÊѤ¨¤¿DB¤òºîÀ®¤¹¤ë¤È¤¤Ï¡Örake RAILS_ENV=production setup_db¡×
step07 migration¤Ë¤è¤ë¥Æ¡¼¥Ö¥ëºîÀ®
- ruby script\generate migration create_memos_table
- db\migrate\001_create_memos_table.rb¤òÊÔ½¸¡Ê¿ô»ú¤ÏÊѤï¤ë¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡Ë
class CreateTable < ActiveRecord::Migration def self.up create_table :memos do |t| t.column :created_at, :datetime t.column :text, :string, :limit => 255 t.column :location, :string, :limit => 64 end end def self.down drop_table :memos end end
- ¡Örake db:migrate¡×¤Ç¥Þ¥¤¥°¥ì¡¼¥È¤ò¼Â¹Ô
step08 scaffold¤Ë¤è¤ê¥â¥Ç¥ë¤ª¤è¤Ó¥â¥Ç¥ë¤Ë¥¢¥¯¥»¥¹¤¹¤ë¾ì¤Î¥Ú¡¼¥¸¤òºîÀ®
¥×¥í¥¸¥§¥¯¥È¥ë¡¼¥È¤Ç¼¡¤Î¥³¥Þ¥ó¥É¤òÆþÎÏ
ruby script\generate scaffold ¥â¥Ç¥ë̾ ¢¨¥â¥Ç¥ë̾¤Ï¥¢¥Ã¥Ñ¡¼¥¥ã¥á¥ë¤Îñ¿ô·Á¤Ç¤¹
Î㤨¤Ð¡Öruby script\generate scaffold Memo¡×¤È¤·¤¿¾ì¹ç¡¢¼¡¤Î¥Ú¡¼¥¸¤¬ºîÀ®¤µ¤ì¤Þ¤¹
- http://127.0.0.1:3000/memos/list ... °ìÍ÷
- http://127.0.0.1:3000/memos/new ... ºîÀ®
- http://127.0.0.1:3000/memos/show/id ... ɽ¼¨
- http://127.0.0.1:3000/memos/edit/id ... ¹¹¿·
- http://127.0.0.1:3000/memos/destroy/id ... ºï½ü
¢¨¥³¥ó¥È¥í¡¼¥é¡¼¤¬memos¡¢¥¢¥¯¥·¥ç¥ó¤¬list, new, show, edit, destroy¤È¤Ê¤ê¤Þ¤¹
¼¡¤Î¥Õ¥¡¥¤¥ë¤¬ºî¤é¤ì¤Þ¤¹¡£
- app\models\memo.rb ... ¥â¥Ç¥ë
- app\controllers\memos_controller.rb ... ¥³¥ó¥È¥í¡¼¥é¡¼
- app\views\layouts\memos.rhtml ... Web¥¢¥×¥êÁ´ÂΤΥӥ塼
- app\views\memos\edit.rhtml ... edit¥¢¥¯¥·¥ç¥ó¤Î¥Ó¥å¡¼¡ÊÊÔ½¸¤Î¥Ó¥å¡¼¡Ë
- ...
step09 ¥â¥Ç¥ë¤Ø¤Î¸¡¾Ú½èÍýÄɲÃ
¥â¥Ç¥ë¤Ë¸¡¾Ú¥á¥½¥Ã¥É¤òÄɲä·¤Þ¤¹¡£
app\models\memo.rb
class Memo < ActiveRecord::Base validates_presence_of :text, :location validates_length_of :location, :maximum => 256 validates_length_of :¥Õ¥£¡¼¥ë¥É̾, :within 6..12 end
ºÇ¸å¤ÎÎã¤Ï6ʸ»ú°Ê¾å12ʸ»ú°Ê²¼¤Ç¤¹¡£
¥É¥Ã¥È¤ò£³¤Ã¤Ä¤È¤¹¤ë¤È¡Ö̤Ëþ¡×¤È¤Ê¤ê¤Þ¤¹¡£
step10 ·îÁªÂò¤Î¥Õ¥©¡¼¥à¤ò±Ñ¸ì¤«¤é¿ô»ú¤ËÊѹ¹
app\views\memos\_form.rhtml
... <%= datetime_select 'memo', 'created_at', :use_month_numbers => true %></p> ...
_form.rhtml¤«¤é¡Öcreated_at¡×¤Îɽ¼¨¤ò´Ý¤´¤Èºï½ü¤¹¤ë¤È¡¢¼«Æ°Åª¤Ë¥Ç¡¼¥¿ºîÀ®Æü»þ¤¬ÀßÄꤵ¤ì¤Þ¤¹¡£
step11 ¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤¿gem¤ÎAPI¥É¥¥å¥á¥ó¥È»²¾È
- DOS¥×¥í¥ó¥×¥È¤«¤égem_server¤ÈÆþÎÏ
- ¥Ö¥é¥¦¥¶¤Ç¼¡¤Îurl¤ò³«¤¯
http://127.0.0.1:8808/
Î㤨¤Ð¸¡¾Ú¤ÇÍѤ¤¤ë¥á¥½¥Ã¥É¤Ï¼¡¤ÎAPI¤ò»²¾È¤·¤Þ¤¹¡£
[activerecord rdoc] - [ActiveRecord::Validations::ClassMethods]
step12 Ruby-GetText¤Î¥¤¥ó¥¹¥È¡¼¥ë
- Instant Rails¤òµ¯Æ°¤·¡¢¤½¤³¤«¤éDOS¥×¥í¥ó¥×¥È¤ò³«¤¤Þ¤¹¡£
- ¡Øgettext-1.10.0-mswin32.gem¡Ù¤òÆþ¼ê
- ¥³¥Þ¥ó¥É¤òÆþÎϤ·¤Æ¥¤¥ó¥¹¥È¡¼¥ë
gem install C:\tmp\gettext-1.10.0-mswin32.gem
È÷¹Í¡§- ¡Ögem install gettext¡×¤ÈÆþÎϤ·¤Æ¡¢¥ª¥ó¥é¥¤¥ó¼èÆÀ¤·¤¿¥á¥Ë¥å¡¼¤«¤éÁªÂò¤¹¤ë¥¤¥ó¥¹¥È¡¼¥ëÊýË¡¤â¤¢¤ë¤½¤¦¤Ç¤¹¤¬¡¢¤Ê¤¼¤«¡ÖGemNotFoundException¡×¤È¤Ê¤ê¥¤¥ó¥¹¥È¡¼¥ë¤Ç¤¤Þ¤»¤ó¤Ç¤·¤¿¡£
- ¤³¤ì¤è¤ê¿·¤·¤¤¥Ð¡¼¥¸¥ç¥ó¤ÎRuby-GetText¤ÏRails 2.0¤Î¤ßÂбþ¤Ç¤¹
- ¥¤¥ó¥¹¥È¡¼¥ëÀ衧C:\InstantRails\ruby\lib\ruby\gems\1.8\gems\gettext-1.10.0-mswin32
- GNU GetText¤ò¥¤¥ó¥¹¥È¡¼¥ë
¡Øruby-gnome2-0.16.0-1-i386-mswin32.exe¡Ù¤òÆþ¼ê¤·¤Æ¥¤¥ó¥¹¥È¡¼¥ë¤·¤Þ¤¹¡£
¥¤¥ó¥¹¥È¡¼¥ëÀ衧C:\InstantRails\ruby\Ruby-GNOME2 - Instant Rails¤òºÆµ¯Æ°
step13 Ruby-GetText¤òÍøÍѤ¹¤ë¤è¤¦¥×¥í¥¸¥§¥¯¥È¤ËÀßÄê
- ¡Øgettext.rake¡Ù¤òlib\tasks¤Ë¥³¥Ô¡¼
- script\server¥³¥Þ¥ó¥É¤ò¼Â¹ÔÃæ¤Î¤È¤¤Ïctrl+c¥¡¼¤ÇÄä»ß
config¥Õ¥©¥ë¥ÀÆâ¤Î¥Õ¥¡¥¤¥ë¤òÊѹ¹¤¹¤ë¤È¤¤ÏºÆµ¯Æ°¤¬É¬Íפʤ¿¤á¤Ç¤¹¡£ - ¥×¥í¥¸¥§¥¯¥È¥Õ¥©¥ë¥À¤Ç¡Örake init_gettext¡×¤ò¼Â¹Ô
¸µ¤ËÌ᤹¤È¤¤Ï¡Örake void_gettext¡×¤ò¼Â¹Ô - ruby script\server¤ÇWeb¥µ¡¼¥ÐºÆµ¯Æ°