ติดตั้ง Ruby on Rails บน Fedora 11

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

Ruby on Rails - Welcome-aboard
ตัวอย่าง 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

ข้อมูลอ้างอิง

Leave a Reply

Your email address will not be published.