Ruby on Rails ช่วยทำให้การพัฒนา Web Application ด้วยภาษา Ruby ได้ง่ายขึ้น
Rails เป็น web framework ประกอบด้วยส่วน (components) ต่างๆ ซึ่งสามารถนำไปสร้างเป็น Web Application ได้เลย เพียงแค่รันไม่กี่คำสั่งเท่านั้น
ดาวน์โหลดไฟล์ rpm และติดตั้ง
ไฟล์ RPM ที่ต้องใช้สำหรับติดตั้ง Ruby on Rails
ruby-rdoc-1.8.6.287-8.fc11.x86_64.rpm rubygems-1.3.1-2.fc11.noarch.rpm rubygem-activesupport-2.3.2-1.fc11.noarch.rpm rubygem-actionpack-2.3.2-1.fc11.noarch.rpm rubygem-actionmailer-2.3.2-1.fc11.noarch.rpm rubygem-activerecord-2.3.2-1.fc11.noarch.rpm rubygem-activeresource-2.3.2-1.fc11.noarch.rpm rubygem-rake-0.8.4-1.fc11.noarch.rpm rubygem-rails-2.3.2-2.fc11.noarch.rpm rubygem-sqlite3-ruby-1.2.4-2.fc11.x86_64.rpm
ใช้คำสั่ง rpm เพิ่มติดตั้ง packages ตามลำดับต่อไปนี้
[root@fc11-64a ~]# rpm -ivh ruby-rdoc-1.8.6.287-8.fc11.x86_64.rpm [root@fc11-64a ~]# rpm -ivh rubygems-1.3.1-2.fc11.noarch.rpm [root@fc11-64a ~]# rpm -ivh rubygem-activesupport-2.3.2-1.fc11.noarch.rpm [root@fc11-64a ~]# rpm -ivh rubygem-actionpack-2.3.2-1.fc11.noarch.rpm [root@fc11-64a ~]# rpm -ivh rubygem-actionmailer-2.3.2-1.fc11.noarch.rpm [root@fc11-64a ~]# rpm -ivh rubygem-activerecord-2.3.2-1.fc11.noarch.rpm [root@fc11-64a ~]# rpm -ivh rubygem-activeresource-2.3.2-1.fc11.noarch.rpm [root@fc11-64a ~]# rpm -ivh rubygem-rake-0.8.4-1.fc11.noarch.rpm [root@fc11-64a ~]# rpm -ivh rubygem-rails-2.3.2-2.fc11.noarch.rpm [root@fc11-64a ~]# rpm -ivh rubygem-sqlite3-ruby-1.2.4-2.fc11.x86_64.rpm
ทดสอบสร้าง Blog ด้วย Rails
ตัวอย่างต่อไปนี้ แสดงวิธีการสร้าง Web Application ด้วย Rails
สร้างไดเร็คทอรีสำหรับเก็บ application
[root@fc11-64a ~# cd /var/www/html/ [root@fc11-64a html]# mkdir rails [root@fc11-64a html]# cd rails/
ใช้คำสั่ง rails เพื่อสร้าง application ขึ้นมา ในที่นี้ตั้งชื่อว่า blog
[root@fc11-64a rails]# rails blog create create app/controllers create app/helpers create app/models create app/views/layouts create config/environments create config/initializers create config/locales create db create doc create lib create lib/tasks create log create public/images create public/javascripts create public/stylesheets create script/performance create test/fixtures create test/functional create test/integration create test/performance create test/unit create vendor create vendor/plugins create tmp/sessions create tmp/sockets create tmp/cache create tmp/pids create Rakefile create README create app/controllers/application_controller.rb create app/helpers/application_helper.rb create config/database.yml create config/routes.rb create config/locales/en.yml create config/initializers/backtrace_silencers.rb create config/initializers/inflections.rb create config/initializers/mime_types.rb create config/initializers/new_rails_defaults.rb create config/initializers/session_store.rb create config/environment.rb create config/boot.rb create config/environments/production.rb create config/environments/development.rb create config/environments/test.rb create script/about create script/console create script/dbconsole create script/destroy create script/generate create script/runner create script/server create script/plugin create script/performance/benchmarker create script/performance/profiler create test/test_helper.rb create test/performance/browsing_test.rb create public/404.html create public/422.html create public/500.html create public/index.html create public/favicon.ico No such file or directory - /usr/lib/ruby/gems/1.8/gems/rails-2.3.2/bin/../lib/rails_generator/generators/applications/app/../../../../../html/favicon.ico
คำสั่ง rails จะสร้างไดเร็คทอรีชื่อ blog สำหรับเก็บไฟล์ของ application ที่สร้างขึ้น พร้อมทั้งไดเร็คทอรีย่อยต่างๆ
[root@fc11-64a rails]# ls -l total 0 drwxr-xr-x 13 root root 156 2009-09-19 12:29 blog
[root@fc11-64a rails]# ls -l blog/ total 16 drwxr-xr-x 6 root root 63 2009-09-19 12:29 app drwxr-xr-x 5 root root 128 2009-09-19 12:29 config drwxr-xr-x 2 root root 6 2009-09-19 12:29 db drwxr-xr-x 2 root root 6 2009-09-19 12:29 doc drwxr-xr-x 3 root root 18 2009-09-19 12:29 lib drwxr-xr-x 2 root root 6 2009-09-19 12:29 log drwxr-xr-x 5 root root 135 2009-09-19 12:29 public -rw-r--r-- 1 root root 307 2009-09-19 12:29 Rakefile -rw-r--r-- 1 root root 10011 2009-09-19 12:29 README drwxr-xr-x 3 root root 134 2009-09-19 12:29 script drwxr-xr-x 7 root root 106 2009-09-19 12:29 test drwxr-xr-x 6 root root 58 2009-09-19 12:29 tmp drwxr-xr-x 3 root root 20 2009-09-19 12:29 vendor
เข้าไปในไดเร็คทอรี blog แล้วรันคำสั่ง rake เพื่อสร้าง database สำหรับเก็บข้อมูลของ application blog
โดยดีฟอลต์จะใช้ฐานข้อมูล SQLite version 3 (sqlite3) ดูคอนฟิก database ได้ในไฟล์ “config/database.yml”
[root@fc11-64a rails]# cd blog
[root@fc11-64a blog]# cat config/database.yml # SQLite version 3.x # gem install sqlite3-ruby (not necessary on OS X Leopard) development: adapter: sqlite3 database: db/development.sqlite3 pool: 5 timeout: 5000 ...
[root@fc11-64a blog]# rake db:create (in /var/www/html/rails/blog)
ไฟล์ database ของ sqlite3 ที่ถูกสร้างขึ้นจะถูกเก็บไว้ใน “db/”
[root@fc11-64a blog]# ls -l db/ total 0 -rw-r--r-- 1 root root 0 2009-09-19 12:35 development.sqlite3
ใช้คำสั่ง script/generate เพื่อสร้าง controller และ view ของ application
[root@fc11-64a blog]# script/generate controller home index exists app/controllers/ exists app/helpers/ create app/views/home exists test/functional/ create test/unit/helpers/ create app/controllers/home_controller.rb create test/functional/home_controller_test.rb create app/helpers/home_helper.rb create test/unit/helpers/home_helper_test.rb create app/views/home/index.html.erb
รันคำสั่ง script/server เพื่อสตาร์ตเว็บเซิร์ฟเวอร์ของ application ที่สร้างขึ้น
หมายเหตุ
- โดยดีฟอลต์ Rails จะรันเว็บเซิร์ฟเวอร์ของตัวเองที่พอร์ต 3000 ไม่ได้ใช้ Apache
-
คำสั่งรันเซิร์ฟเวอร์นี้ หน้าจอจะค้างที่ console เพื่อแสดงเหตุการณ์ (log) ต่างๆ เมื่อมีการเรียกใช้
[root@fc11-64a blog]# script/server => Booting WEBrick => Rails 2.3.2 application starting on http://0.0.0.0:3000 => Call with -d to detach => Ctrl-C to shutdown server [2009-09-19 13:02:23] INFO WEBrick 1.3.1 [2009-09-19 13:02:23] INFO ruby 1.8.6 (2008-08-11) [x86_64-linux] [2009-09-19 13:02:23] INFO WEBrick::HTTPServer#start: pid=2351 port=3000
ทดสอบใช้ Browser เรียกเข้ามาที่เครื่อง ระบุ IP และพอร์ต 3000
ตัวอย่าง log ที่แสดงออกหน้าจอ console
Processing ApplicationController#index (for 10.3.3.1 at 2009-09-19 13:02:42) [GET]
ActionController::RoutingError (No route matches "/javascripts/prototype.js" with {:method=>:get}): /usr/lib/ruby/1.8/webrick/httpserver.rb:104:in `service' /usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run' /usr/lib/ruby/1.8/webrick/server.rb:173:in `start_thread' /usr/lib/ruby/1.8/webrick/server.rb:162:in `start' /usr/lib/ruby/1.8/webrick/server.rb:162:in `start_thread' /usr/lib/ruby/1.8/webrick/server.rb:95:in `start' /usr/lib/ruby/1.8/webrick/server.rb:92:in `each' /usr/lib/ruby/1.8/webrick/server.rb:92:in `start' /usr/lib/ruby/1.8/webrick/server.rb:23:in `start' /usr/lib/ruby/1.8/webrick/server.rb:82:in `start'
Rendering rescues/layout (not_found)
หากต้องการยกเลิก (stop) เว็บเซิร์ฟเวอร์ ให้กดปุ่ม [Ctrl-C] ที่ Console
[Ctrl-C]
^C
[2009-09-19 13:06:18] INFO going to shutdown ...
[2009-09-19 13:06:18] INFO WEBrick::HTTPServer#start done.
Exiting