The Depot Application

The Depot Application

17 Migration 15 Rails In Depth

16 Active Support

bundle exec /home/rubys/git/rails/bin/rails new namelist --skip-bundle --dev
      create  
      create  README
      create  Rakefile
      create  config.ru
      create  .gitignore
      create  Gemfile
      create  app
      create  app/controllers/application_controller.rb
      create  app/helpers/application_helper.rb
      create  app/mailers
      create  app/models
      create  app/views/layouts/application.html.erb
      create  config
      create  config/routes.rb
      create  config/application.rb
      create  config/environment.rb
      create  config/environments
      create  config/environments/development.rb
      create  config/environments/production.rb
      create  config/environments/test.rb
      create  config/initializers
      create  config/initializers/backtrace_silencers.rb
      create  config/initializers/inflections.rb
      create  config/initializers/mime_types.rb
      create  config/initializers/secret_token.rb
      create  config/initializers/session_store.rb
      create  config/locales
      create  config/locales/en.yml
      create  config/boot.rb
      create  config/database.yml
      create  db
      create  db/seeds.rb
      create  doc
      create  doc/README_FOR_APP
      create  lib
      create  lib/tasks
      create  lib/tasks/.gitkeep
      create  log
      create  log/server.log
      create  log/production.log
      create  log/development.log
      create  log/test.log
      create  public
      create  public/404.html
      create  public/422.html
      create  public/500.html
      create  public/favicon.ico
      create  public/index.html
      create  public/robots.txt
      create  public/images
      create  public/images/rails.png
      create  public/stylesheets
      create  public/stylesheets/.gitkeep
      create  public/javascripts
      create  public/javascripts/application.js
      create  public/javascripts/controls.js
      create  public/javascripts/dragdrop.js
      create  public/javascripts/effects.js
      create  public/javascripts/prototype.js
      create  public/javascripts/rails.js
      create  script
      create  script/rails
      create  test
      create  test/fixtures
      create  test/functional
      create  test/integration
      create  test/performance/browsing_test.rb
      create  test/test_helper.rb
      create  test/unit
      create  tmp
      create  tmp/sessions
      create  tmp/sockets
      create  tmp/cache
      create  tmp/pids
      create  vendor/plugins
      create  vendor/plugins/.gitkeep
bundle install
Using rake (0.9.2.2) 
Using abstract (1.0.0) 
Using activesupport (3.0.15) 
Using builder (2.1.2) 
Using i18n (0.5.0) 
Using activemodel (3.0.15) 
Using erubis (2.6.6) 
Using rack (1.2.5) 
Using rack-mount (0.6.14) 
Using rack-test (0.5.7) 
Using tzinfo (0.3.33) 
Using actionpack (3.0.15) 
Using mime-types (1.19) 
Using polyglot (0.3.3) 
Using treetop (1.4.10) 
Using mail (2.2.19) 
Using actionmailer (3.0.15) 
Using braintree (2.16.0) 
Using activemerchant (1.10.0) 
Using arel (2.0.10) 
Using activerecord (3.0.15) 
Using activeresource (3.0.15) 
Using bundler (1.1.3) 
Using highline (1.6.13) 
Using net-ssh (2.5.2) 
Using net-scp (1.0.4) 
Using net-sftp (2.0.5) 
Using net-ssh-gateway (1.1.0) 
Using capistrano (2.12.0) 
Using haml (3.1.6) 
Using htmlentities (4.3.1) 
Using json (1.7.3) 
Using rdoc (3.12) 
Using thor (0.14.6) 
Using railties (3.0.15) 
Using rails (3.0.15) 
Using jquery-rails (0.2.7) 
Using minitest (3.2.0) 
Using mysql (2.8.1) 
Using sqlite3 (1.3.6) 
Using test-unit (2.5.0) 
Using will_paginate (3.0.3) 
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.
edit config/routes.rb
Namelist::Application.routes.draw do
  # ...
 
  # This is a legacy wild controller route that's not recommended for RESTful applications.
  # Note: This route will make all actions in every controller accessible via GET requests.
   match ':controller(/:action(/:id(.:format)))'
end

Restart the server.

rails generate model person name:string
      invoke  active_record
      create    db/migrate/20120629191556_create_people.rb
      create    app/models/person.rb
      invoke    test_unit
      create      test/unit/person_test.rb
      create      test/fixtures/people.yml
rake db:migrate
mv 20120629191556_create_people.rb 20110711000001_create_people.rb
==  CreatePeople: migrating ===================================================
-- create_table(:people)
   -> 0.0046s
==  CreatePeople: migrated (0.0048s) ==========================================
 
edit app/controllers/people_controller.rb
class PeopleController < ApplicationController
 
  def index
    @person = Person.new(params[:person])
    @person.save! if request.post?
    @people = Person.find(:all)
  end
end
edit app/views/layouts/people.html.erb
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"></meta>
    <title>My Name List</title>
  </head>
  <body>
    <%= yield :layout %>
  </body>
</html>
mkdir app/views/people
edit app/views/people/index.html.erb
<table border="1">
  <tr>
    <th>Name</th><th>bytes</th><th>chars</th><th>reversed</th>
  </tr>
  <% for person in @people %>
    <tr>  
      <td><%=h person.name %></td>
      <td><%= person.name.length %></td>
      <td><%= person.name.chars.length %></td>
      <td><%=h person.name.chars.reverse %></td>
    </tr>
  <% end %>
</table>
 
<% form_for :person do |form| %>
  New name: <%= form.text_field :name %>
  <%= submit_tag "Add" %>
<% end %>
get /people
Namebytescharsreversed
New name:
post /people

NoMethodError in People#index

Showing /home/rubys/git/awdwr/edition3/work-30/namelist/app/views/people/index.html.erb where line #9 raised:

undefined method `length' for #<Enumerable::Enumerator:0x7f350cb2fde8>

Extracted source (around line #9):

6:     <tr>  
7:       <td><%=h person.name %></td>
8:       <td><%= person.name.length %></td>
9:       <td><%= person.name.chars.length %></td>
10:       <td><%=h person.name.chars.reverse %></td>
11:     </tr>
12:   <% end %>

Rails.root: /home/rubys/git/awdwr/edition3/work-30/namelist

Application Trace | Framework Trace | Full Trace
app/views/people/index.html.erb:9:in `_app_views_people_index_html_erb__220157634_69932911543480_0'
app/views/people/index.html.erb:5:in `each'
app/views/people/index.html.erb:5:in `_app_views_people_index_html_erb__220157634_69932911543480_0'

Request

Parameters:

{"person"=>{"name"=>"Dave"},
 "utf8"=>"✓",
 "authenticity_token"=>"swNGJr2CpDZbbLsRnts1YZKhLVhNZRxBFxm2LUjBlQw="}

Show session dump

Show env dump

Response

Headers:

None

get /people

NoMethodError in People#index

Showing /home/rubys/git/awdwr/edition3/work-30/namelist/app/views/people/index.html.erb where line #9 raised:

undefined method `length' for #<Enumerable::Enumerator:0x7f350c953808>

Extracted source (around line #9):

6:     <tr>  
7:       <td><%=h person.name %></td>
8:       <td><%= person.name.length %></td>
9:       <td><%= person.name.chars.length %></td>
10:       <td><%=h person.name.chars.reverse %></td>
11:     </tr>
12:   <% end %>

Rails.root: /home/rubys/git/awdwr/edition3/work-30/namelist

Application Trace | Framework Trace | Full Trace
app/views/people/index.html.erb:9:in `_app_views_people_index_html_erb__220157634_69932910623940_0'
app/views/people/index.html.erb:5:in `each'
app/views/people/index.html.erb:5:in `_app_views_people_index_html_erb__220157634_69932910623940_0'

Request

Parameters:

None

Show session dump

Show env dump

Response

Headers:

None

sqlite3> select name,length(name) from people where name like 'G%'

17 Migration 15 Rails In Depth