14.1 Origins and Uses of Ruby - Designed by Yukihiro Matsumoto; released in 1996 - Use spread rapidly in Japan - Use is now growing in part because of its use in Rails - A pure object-oriented purely interpreted scripting language - Related to Perl and JavaScript, but not closely Chapter 15 © 2010 by Addison Wesley Longman, Inc. 1 15.1 Overview of Rails - Rails is a development framework for Web-based applications - Rails is written in Ruby and uses Ruby for its applications - Ruby on Rails (RoR) - Based on MVC architecture for applications - MVC cleanly separates applications into three parts: - Model – the data and any restraints on it - View – prepares and presents results to the user - Controller – controls the application - One characterizing part of Rails is its approach to connecting object-oriented software with a relational database – ORM - Maps tables to classes, rows to objects, and columns to fields of the objects Chapter 15 © 2010 by Addison Wesley Longman, Inc. 2 Architecture of a Four-Tier Application Supporting Software App User Interface User Interface Application Logic Database Engine DBMS / Database Server Database W EB W EB S E R V E R C L I E N T Application Server Database API Architecture of a Four-Tier Application Chapter 15 © 2010 by Addison Wesley Longman, Inc. 3 Architecture of a Four-Tier Application Supporting Software View User Interface Control T O M C A T Database Engine Database Model MySQL Rails ROR MVC Architecture Chapter 15 © 2010 by Addison Wesley Longman, Inc. 4 W E B C L I E N T 15.1 Overview of Rails (continued) - View documents are XHTML documents that may include Ruby code - Most of the controller code is provided by Rails - A Rails application is a program that provides a response when a client browser connects to a Rails-driven Web site - Rails can be used with Ajax - Two fundamental principles that guided the development of Rails: 1. DRY 2. Convention over configuration - Rails does not use a GUI - One simple way to get started with Rails is to download a complete development system http://instantrails.rubyforge.org/wiki/wiki.pl - Includes Ruby, Rails, MySQL, Apache and everything else that is necessary Chapter 15 © 2010 by Addison Wesley Longman, Inc. 5 15.2 Document Requests (continued) - Static Documents (continued) - Next, build the view file, or template, which must reside in the say subdirectory of the views directory of the application and be named hello.html.erb - This is an XHTML document with the following in its body element <h1> Hello from Rails! </h1> - To test the application, a Web server must be started >ruby script/server - This starts the default server, named Mongrel - Now, pointing the browser to the application produces the displayed view template content Chapter 15 © 2010 by Addison Wesley Longman, Inc. 6 15.2 Document Requests (continued) - Dynamic Documents - Dynamic documents can be built with Rails by embedding Ruby code in the template document - An example: display a greeting and the current date and time and the number of seconds since midnight - Ruby code is embedded in a document by placing it between <% and %> - To insert the result of evaluating the code into the document, use <%= - The Time class has a method, now, that returns the current day of the week, month, day of the month, time, time zone, and year, as a string It is now <%= t = Time.now %> Number of seconds since midnight: <%= t.hour * 3600 + t.min * 60 + t.sec %> Chapter 15 © 2010 by Addison Wesley Longman, Inc. 7 15.3 Rails Applications with Databases - We will use MySQL - Use a simple database with just one table - The application will be named cars - The application will present a welcome document to the user, including the number of cars in the database and a form to get the beginning and ending years and a body style for the desired car - Creating the application - In the subdirectory of our examples: >rails –d mysql cars - It is customary to use three databases in a Rails database application: one for development, one for testing, and one for production - To create the three (empty) databases: >rake db:create:all - Creates the database.yml file in the config subdirectory of the application directory (cars) - See next page Chapter 15 © 2010 by Addison Wesley Longman, Inc. 8 15.3 Rails Applications with Databases (continued) - If we fill out the form, as in: - Now we click Create, which produces: Chapter 15 © 2010 by Addison Wesley Longman, Inc. 9 15.3 Rails Applications with Databases (continued) <h1>Listing corvettes</h1> <table> <tr> <th>Body style</th> <th>Miles</th> <th>Year</th> </tr> <% for corvette in @corvettes %> <tr> <td><%=h corvette.body_style %></td> <td><%=h corvette.miles %></td> <td><%=h corvette.year %></td> <td><%= link_to 'Show', corvette %></td> <td><%= link_to 'Edit', edit_corvette_path(corvette) %></td> <td><%= link_to 'Destroy', corvette, :confirm => 'Are you sure?', :method => :delete %></td> </tr> <% end %> </table> <br /> <%= link_to 'New corvette', new_corvette_path %> Chapter 15 © 2010 by Addison Wesley Longman, Inc. 10
© Copyright 2024