ãªãã ã
1é±éåã«èªåã§èªã¿ãããã®å°ããªèšäºã§ã¯ãRoRã§ã¢ããªã±ãŒã·ã§ã³ããŒãããäœæãããå Žåã«å¿
èŠãªãã®ããã¹ãŠéããããšããŸããã ã€ãŸããæåã®ã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ãæ§æãäœæããããã«å¿
èŠãªæå°éã®æé ã説æããå¿
èŠã¯ãããŸããã ïŒ ç§èªèº«ã2é±éç®ã¯RoRãå匷ããŠããŸãã®ã§ãå³å¯ã«å€æããªãã§ãã ããïŒã
èšçœ®
ç°¡åãã€è¿
éã«rorã¯rvmãä»ããŠrvm.ioã§ã€ã³ã¹ããŒã«ãã
ãŸãã>\curl -L https://get.rvm.io | bash -s stable --rails --autolibs=enabled
rvmãå®è¡ããŸãã
>source /___*/.rvm/scripts/rvm
*ä»åŸã¯$ HOMEã
ãã®åŸãè¡ã¯$ HOME / .bash_profileã«è¡šç€ºãããŸãïŒ
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
ãããŠãããªããã³ã³ãœãŒã«ãéããã³ã«ãrvmãããŒããããŸãããããã¯ç§ã«ã¯èµ·ãããŸããã§ãã-ç§ã¯$ HOME / bashrcã§æžããªããã°ãªããŸããã§ããïŒ
. ~/.bash_profile
ããã§ãã¹ãŠã確å®ã«æ£åžžã«ãªããŸãã
ããã¯ã®å¿
èŠãªããŒãžã§ã³ïŒã»ãšãã©ã®å Žåãææ°ããŒãžã§ã³ïŒãã€ã³ã¹ããŒã«ããŸãïŒãããã®æ°ãšéãã¯ããã§ç¢ºèªã§ããŸã-httpïŒ//www.ruby-lang.orgïŒã
>rvm install 1.9.3
æåãã§ãã¯
>ruby -v
次ã®ãããªããè©³çŽ°ãªæ
å ±ãè¿ãå¿
èŠããããŸã
ruby 1.9.2p320 (2012-04-20 revision 35421) [x86_64-linux].
ã€ã³ã¹ããŒã«ããã»ã¹äžã«ã誀ã£ãŠããã€ãã®ããŒãžã§ã³ãã€ã³ã¹ããŒã«ãããããåŸã§åé¡ãçºçããŸããïŒã 次ã®ããã«ãRubyã®ã€ã³ã¹ããŒã«æžã¿ããŒãžã§ã³ã®ãªã¹ããèŠãããšãã§ããŸãã
> rvmãªã¹ã
è€æ°ã®ããŒãžã§ã³ãããå ŽåãçŸåšã®ããŒãžã§ã³ã«ã¯ã=>ããããã©ã«ã-ã*ããçŸåšããã³ããã©ã«ãã®ã= *ããããŒã¯ãããŸãã 䜿çšããç®çã®ããŒãžã§ã³ã«å€æŽã§ããŸãã
>rvm use ruby-1.9.2-p320 ( )
rubã®ããã©ã«ãããŒãžã§ã³ã倿Žããã«ã¯ã次ã®ããã«èšè¿°ããŸãã
>rvm use ruby-1.9.2-p320 --default
ãããžã§ã¯ããäœæããŸãã
ããã§ããããžã§ã¯ãã®äœæã«çŽæ¥é²ãããšãã§ããŸãã ãã©ã«ããŒ$ HOME / ROR / ticketãäœæãããã®ãã©ã«ããŒã«ç§»åããŠã以äžãå®è¡ããŸãã
>sudo gem install bundler >rails new tickets
ãããžã§ã¯ããäœæãããšãæå®ããããã©ã«ããŒå
ã®ãã¹ãŠã®å¿
èŠãªãã£ã¬ã¯ããªïŒappãconfigãdbãlogãªã©ïŒãšæ§æãã¡ã€ã«ãçæãããŸãã å°èŠæš¡ãªãã¹ããããžã§ã¯ããæ©èœãããã«ã¯ãç§ã®å ŽåãPostgreSQLããŒã¿ããŒã¹ãããã€ãã®gemïŒã©ã€ãã©ãªïŒãããã³RailsãµãŒããŒãå®è¡ãããŠããå¿
èŠããããŸãã
ãµãŒããŒãèµ·åããã«ã¯ãäœæãããããžã§ã¯ããå«ããã©ã«ããŒã®ã«ãŒãããã³ãã³ããå®è¡ããå¿
èŠããããŸãã
>rails s -p 3000
ããã§ãsã¯ãµãŒããŒïŒãµãŒããŒïŒãèµ·åããã³ãã³ãã§ã-p 3000ã¯ãããžã§ã¯ãã䜿çšã§ããããŒãçªå·ã§ãã ã³ã³ãœãŒã«ãéå§ããã«ã¯ã次ãå
¥åããŸãã
>rails c
cã¯ã³ã³ãœãŒã«ã®ç¥ã§ã
å
¥åãããšããã¹ãŠã®ããŒã ã®ãªã¹ãã衚瀺ã§ããŸã
>ã¬ãŒã«--hã
localhost ïŒ3000ã«ãããžã§ã¯ãã®éå§ããŒãžã衚瀺ãããŸãã ãŸããä»ã®ãããžã§ã¯ãã®ä»»æã®æ°ã®ãµãŒããŒããå æãããŠããªãä»ã®ããŒãã§å®è¡ããããšãã§ããŸãã äœæ¥äžã ããæç¹ã§ãäœããã®çç±ã§ãµãŒããŒã®èµ·åã«åé¡ãçºçããŸãã-ãµãŒããŒãæ¢ã«å®è¡ãããŠãããšãããšã©ãŒãçºè¡ãããŸãã-ããã解決ããã«ã¯ããã¡ã€ã«$ HOME / ROR / ticket / config / tmp / pids / server.pidãåé€ããã ãã§ããµãŒããŒãåèµ·åããŸãã
ããŒã¿ããŒã¹ã
postgresã§äœæ¥ããã«ã¯ãGemfileãã¡ã€ã«ã®æåŸã«è¡ã远å ããŸãããã®è¡ã¯ãããžã§ã¯ãã®ã«ãŒãã«é
眮ããå¿
èŠããããŸã
> gem 'pg'
ãã¡ã€ã«ãä¿åããŠ
>bundle install
Gemfileã«å€æŽãå ãããã³ã«ãããè¡ãããµãŒããŒãåèµ·åããŸãã ããã«æ»ããªãããã«ãããã«è¿œå ããŠ
>ãã¬ãŒã³ããŒã·ã§ã³ãã³ãã¬ãŒãã®ããŒã¯ã¢ããïŒäœ¿ãæ
£ããåŸïŒã«äŸ¿å©ãªgem 'haml-rails'ã ããã§ãdatabase.ymlãã¡ã€ã«ã®postgresãžã®æ¥ç¶ã®å±æ§ãç·šéããŸãã $ HOME / ROR / ticket / config /ãã©ã«ããŒã«ãããæ¬¡ã®ãããªãããã¯ãå«ãŸããŠããå¿
èŠããããŸãã
development: host: localhost adapter: postgresql encoding: unicode database: tickets pool: 5 username: tickets
é©åãªãŠãŒã¶ãŒåãšããŒã¿ããŒã¹åã§ããããããã±ãããšãã±ããããããŸãïŒã
ãã¹ãŠã®æºåãå®äºããã¢ãã«ãã³ã³ãããŒã©ãŒããã¥ãŒã®äœæãéå§ã§ããããã§ãã
ã¢ãã«ã
ã¢ãã«ãäœæããŸãã
>rails g model user
ããã§ãgã¯generateã®ç¥èªã§ã
ã¢ãã«ã®ååãåæ°åœ¢ã§èšè¿°ããŸã-ããŒã¿ããŒã¹ã®ããŒãã«ã¯è€æ°åœ¢ã«ãªããŸãã ãã®ã³ãã³ãã¯ã$ HOME / ROR / ticket / app / models / user.rbããã³$ HOME / ROR / ticket / app / db / migrate / 20130425081208_create_users.rbã«ã¢ãã«ãšç§»è¡ãã¡ã€ã«ãäœæããŸãã ãã¹ãŠã®ã³ã³ãããŒã©ãŒããã³ã¢ãã«ãã¡ã€ã«ã«ã¯ãæ¡åŒµå.rbãviews-.html.hamlïŒãã®äŸã§ã¯hamlã䜿çšïŒãä»ããŠããŸãã ç§»è¡ãéããŠãããŒã¿ããŒã¹å
ã®ããŒãã«ã䜿çšããŠäœæ¥ãã³ã³ãœãŒã«ã§ç®¡çããŸããããã¯éåžžã«äŸ¿å©ã§ãïŒããäžåºŠæ
£ãããšïŒãããšãã°ãã¢ããªã±ãŒã·ã§ã³ãå¥ã®ãµãŒããŒã«ç°¡åã«è»¢éããããšãã§ããŸãã å¿
é ãã£ãŒã«ãã远å ããŸãã
class CreateUsers < ActiveRecord::Migration def up create_table :users do |t| t.string :name, null: false t.boolean :role, null: false, default: false t.datetime :reg_date t.timestamps end end def down drop_table :users end end
ã¢ãããšããŠã³ã®2ã€ã®ã¡ãœãããäœæããŸãããããã¯ãç§»è¡ãæäœããæ©èœã«ãã£ãŠããã©ã«ãã§äœ¿çšãããŸãããããããããŒãã«ãäœæããã³åé€ããŸãã ããŒã¿åã®ååã¯ã䜿çšããããŒã¿ããŒã¹ã«ãã£ãŠç°ãªããŸãã äž»ããŒã¯ããã©ã«ãã§äœæãããidãšåŒã°ããŸãããæç€ºçã«èšå®ããããšãã§ããŸãã
create_table :users, :primary_key => :users_id do |t|
äž»ããŒããŸã£ããäœæããããªãå Žåã¯ã次ã®ããã«èšè¿°ããŸãã
create_table :users, :id => false do |t|
ã³ã³ãœãŒã«ã«ä¿åããŠæžã蟌ã¿ãŸãã
>rake db:migrate
ãã®ã³ãã³ãã®çµæãšããŠã$ HOME / ROR / ticket / app / db / migrate /ãã£ã¬ã¯ããªå
ã®ç§»è¡ãã¡ã€ã«ãã倱æãããã¹ãŠã®ã¡ãœãããå®è¡ãããŸãã ããŒãã«ã®ç¶æ
ã«é¢ãããã¹ãŠã®æ
å ±ã¯ããã¡ã€ã«$ HOME / ROR / ticket / app / db / shema.rbã«ãããŸãã
>rake db:rollback
æåŸã«å®è¡ãããç§»è¡ã®downã¡ãœãããéå§ããŸãããã®çµæãããŒãã«ãããŒã¿ããŒã¹ããåé€ãããŸãã ããã«å€ãã®ç§»è¡ãããŒã«ããã¯ããã«ã¯ãrollbackã³ãã³ãã«STEPãã©ã¡ãŒã¿ãŒã远å ããå¿
èŠããããŸãã
>rake db:rollback STEP=3
ãã®ã³ãã³ãã¯ãæåŸã®3ã€ã®ç§»è¡ãããŒã«ããã¯ããŸãã ã³ã³ãœãŒã«ã§ãã¹ãŠã®ç§»è¡ã®ã¹ããŒã¿ã¹ã衚瀺ããŸãã
>rake db:migrate:status
ç¹å®ã®ç§»è¡ããç¹å®ã®ã¡ãœãããå®è¡ããå¿
èŠãããå Žåã¯ãVERSIONãã©ã¡ãŒã¿ãŒã远å ããŸãã
>rake db:migrate:up VERSION=000001
ã¢ãã«ãã¡ã€ã«ïŒ$ HOME / ROR / ticket / app / models / user.rbïŒã§ã¯ããããŸã§1ã€ã®ããšã ããè¡ãå¿
èŠããããŸã-ç§ãçè§£ããŠããããã«ãã»ãã¥ãªãã£ã®ç®çã§ãã³ã³ãããŒã©ãŒãã倿Žã§ããããŒãã«ãã£ãŒã«ããå®çŸ©ããããã§ãïŒã ãããè¡ãã«ã¯ã次ã®ããã«æžã蟌ã¿ãŸãã
class User < ActiveRecord::Base attr_accessible :name, :role end
ã¡ãªã¿ã«ãhamlæ§æã¯ã¿ãã«éåžžã«ææã§ã-ç§ã䜿çšããŠãããšãã£ã¿ãŒ-Sublime Textã§ããããéåžžã«ãã远跡ã§ããŸãã
ã¢ããªã±ãŒã·ã§ã³ãåäœããŠããªãéãäœæããããã¹ãŠã®ããŒãã«ãå®éã«äœæãããå¿
èŠã«å¿ããŠæ©èœããããšã確èªããã«ã¯ãã³ã³ãœãŒã«ã³ã³ãœãŒã«ã䜿çšã§ããŸãã
>user = User.new(name:"Test",role:"true")
ãã®ã³ãã³ãã¯ããŒãã«ã«æžã蟌ã¿ãŸãããããã¹ãŠã®å±æ§ãèšå®ãããã¡ã¢ãªã«ruyiãªããžã§ã¯ããäœæããŸãã æ¬¡ã«ãã¡ã¢ãäœæããŸãããã
>user.save
æåããå Žåãtrueãè¿ããŸãã ã¬ã³ãŒãã¯1ã€ã®ã³ãã³ãã§äœæã§ããŸã-createïŒ
>User.create(name:"Test",role:"true")
ããŒã¿ããŒã¹ã«ãªããžã§ã¯ãããããã©ããã確èªããã«ã¯ãfindã䜿çšã§ããŸãã
>User.find(1)
ãªããžã§ã¯ããŸãã¯ãšã©ãŒãè¿ããŸãïŒ "ActiveRecord :: RecordNotFoundïŒID = 1ã®ãŠãŒã¶ãŒãèŠã€ãããŸããã§ãã"ãããã³ããŒã¿ããŒã¹èªäœã«å¯ŸããŠçæãããsql-queryã
ç¹å®ã®ãã£ãŒã«ããæ€çŽ¢ã§ããŸãïŒ
>User.find_by_name("Test")
æåã«äŸ¿å©ã«ãªããšæããããããã«äŸ¿å©ãªã¡ãœãããããã€ã玹ä»ããŸãã
> User.firstãšUser.lastã¯ããããããŒãã«ã®æåãšæåŸã®ã¬ã³ãŒããè¿ããUser.allã¯ããŒãã«å
ã®ãã¹ãŠã®ãªããžã§ã¯ãã®é
åãè¿ããŸãã
ã³ã³ãããŒã©ãŒ
ã³ã³ãããŒã©ãŒãäœæããŸãã
>rails g controller users
ãã®ã³ãã³ãã®çµæãã³ã³ãããŒã©ãŒãã¡ã€ã«ãäœæãããŸãïŒ$ HOME / ROR / ticket / app / controllers / users_controller.rbããã³ãã¥ãŒçšã®ãã£ã¬ã¯ããªïŒ
$ HOME / ROR /ãã±ãã/ã¢ããª/ãã¥ãŒ/ãŠãŒã¶ãŒ/ã åã³ã³ãããŒã©ãŒã¡ãœããã«ã¯ããã®ãã©ã«ããŒã«åãååã®ãã¥ãŒããããŸãã æåã§äœæããããããã«ã³ã³ãããŒã©ãŒãäœæã§ããŸãã
>rails g controller users index,list
ãã®å Žåããã¬ãŒã³ããŒã·ã§ã³ãã¡ã€ã«ã¯$ HOME / ROR / ticket / app / views / users /ãã©ã«ããŒã«èªåçã«äœæãããïŒhamlãå¿ããŠããªãå ŽåïŒindex.html.hamlãšlist.html.hamlãåŒã³åºãããŸãã æ¬¡ã®ããã«ã³ã³ãããŒã©ãŒãåé€ã§ããŸãã
>rails d controller users
ããã§ãdã¯destroyã®ç¥èªã§ã
ããã©ã«ãã®ã€ã³ããã¯ã¹æ¹åŒã®å®çŸ©ã¯ãªãã·ã§ã³ã§ãã ãŠãŒã¶ãŒã³ã³ãããŒã©ãŒã®å
å®¹ã¯æ¬¡ã®ãšããã§ãã
class UsersController < ApplicationController def list @users_list=User.all end end
Users_listã«ã¯ãã³ã³ãœãŒã«ããæ¢ã«è¿œå ãããŠãŒã¶ãŒãªããžã§ã¯ãã®é
åãå«ãŸããŸããã@ãã¯ã倿°ããã³ãã¬ãŒãã«æž¡ãããããšãæå³ããŸãã
æåºã
ãã¥ãŒãäœæããããæ£ãããã£ã¬ã¯ããªã«æãå
¥ããŠãã®ãã¡ã€ã«ãäœæããŸããã
$ HOME / ROR /ãã±ãã/ã¢ããª/ãã¥ãŒ/ãŠãŒã¶ãŒ/ list.html.haml
HAMLã®ããã¥ã¡ã³ãã¯ãã¡ãïŒhttp://haml.info/tutorial.htmlïŒã§èªãããšãã§ããŸãããçŸæç¹ã§ã¯æäœéã®ç¥èãå¿
èŠã§ããããšãã°ãéå§ã¿ã°ãšçµäºã¿ã°ã®ä»£ããã«ãïŒ
ã¿ã°ãã䜿çšããŸãã ã€ãŸããïŒ
htmlãå«ããã³ãã¬ãŒããã¬ã³ããªã³ã°ããåŸã
<html></html>
ã ãã¹ãã¬ãã«ã¯éèšã«ãã£ãŠèšå®ãããã¿ã°ã®å±æ§ã¯äžæ¬åŒ§ã§ãããã·ã¥ã®ããã«ãèšè¿°ãããŸãã
%td{colspan=>"2"}
ã«ãªããŸã
<td colspan="2"></td>
ãããã³å
容ã¯ã¹ããŒã¹ã§åºåãããŸãïŒïŒ
tdãã¹ãã ãããã£ãŠããã¥ãŒã®å
å®¹ã¯æ¬¡ã®ãšããã§ãã
%table{:border=>"1"} %tr %td %td - @users_list.each do |users| %tr %td= users.name %td %input{:type=>"checkbox",:name=>"role_#{users.id}",:checked=>users.role} %br
ãã€ãã³ã¯ããã³ãã¬ãŒãå
ã®å®è¡å¯èœã³ãŒãã§ãã ããã§ã¯ããªããžã§ã¯ãã®é
åã調ã¹ãŠãã«ãŒãå
ã®ã¡ãœããïŒååãã£ãŒã«ããããŒã«ãã£ãŒã«ããIDãã£ãŒã«ãïŒã衚瀺ããŸãã
ãã¹ãŠã®ãã¥ãŒã¯ã$ HOME / ROR / ticket / app / views / layouts / application.html.hamlã«ããã¡ã€ã³ãã³ãã¬ãŒãã§ãã©ããããããŸãã
ãã®äžã«ãããã®ããã¹ãŠåé€ããã§ããã ãåçŽã«ããŸãã
!!! %html{:lang => "en"} %head %title Test %body =yield
çæããããã¹ãŠã®ãã³ãã¬ãŒãã®å
容ã¯ã= yieldã«çœ®ãæããããŸãã äž»ãªããšã¯ããã¹ãã®ã¬ãã«ãééããªãããšã§ããæåã¯éåžžã«æ©ã¿ãŸããã
ã«ãŒã
ã«ãŒãèšå®ãã¡ã€ã«ïŒurlïŒã®ç·šé-routes.rbã1ã€ã ãæ®ã£ãŠããŸãã ããã¯ã$ HOME / ROR / ticket / config /ã«ãããŸãã ãããžã§ã¯ãã®ãã¹ãŠã®ã«ãŒãã説æããŠããŸãã ããã§ããšã³ããªã¯2ã€ã ãã«ãªããŸãã
Tickets::Application.routes.draw do root :to => "users#index"
ããã¯ããã¡ã€ã³ãããŒãžãžã®ã«ãŒããã¹ïŒã€ã³ããã¯ã¹ã¡ãœãããã³ã³ãããŒã©ãŒã§å®çŸ©ãããŠããªãå Žåã§ãã/ users / index.html.hamlãã³ãã¬ãŒãã®ã³ã³ãã³ãã衚瀺ãããŸãïŒããã³ãŠãŒã¶ãŒãªã¹ãåºåããŒãžãžã®ãã¹ã§ãã ã¡ãœãããžã®æçš¿ãªã¯ãšã¹ããããå Žåã¯ã次ã®ããã«èšè¿°ããå¿
èŠããããŸãã
ããŠãŒã¶ãŒ/远å ããæçš¿ããŠãã ããã
ããã§ãã¹ãŠãæ©èœããã¯ãã§ãïŒ