Dr Nic
                                            drnicwilliams.com
Remember:
                                           ...
Dr Nic
Dr Nic’s
Magic Models
MyConfPlan
Composite
Primary Keys
Magic
Multi-Connections
Magic
Multi-Connections
             As seen on
             DHH’s
                blog
NewGem
    Generator

$ newgem <gem>
NewGem
    Generator
                 As seen in


$ newgem <gem>
Magic Model
 Generator
Magic Model
             Generator
As seen in

  ??
why?
Dr Nic’s
Dr Nic’s
   Academy
Dr Nic’s
         Academy
“Beginning Ruby on Rails”
  July 7/8 - Netherlands
RailsConf
So why is   important?
Why is   important?
Why is   important?
 When do I use   ?
Why is           important?
       When do I use          ?
Merb    Camping   CGI Mongrel Handlers
RailsConf
       Bet ween last year
       and this year, I’ve
       realised they aren’t
       “Railsconfs”, but...
RailsConf
       Bet ween last year
       and this year, I’ve
       realised they aren’t
       “Railsconfs”, but...
RubyConf
About web development and other things
Websites are text
        And it doesn’t
        matter how
        the text gets to
        the browser
<html>
  <head>
    <title>Hello world</title>
  </head>
  <body>                Here’s some
    <p>Hello World</p> might ...
Rails
When you come to              I just want to talk
Rails you quickly             about these 3...
learn there are
man...
Javascript HTML                             CSS



                        Rails
 Gems                                    ...
Javascript HTML                             CSS



                        Rails
 Gems                                    ...
RailsConf 2006
To understand
Rails and where
its going, let’s
look at rails 1.0
RailsConf 2006
To understand
Rails and where
its going, let’s
look at rails 1.0




“Can we make $$$ from Rails?”
RailsConf 2007
RailsConf 2007


    “Yes.”
RailsConf 2007


“Because its just
text generation”    Ok, now let’s
                    look at the
                    l...
“Does it scale?”


          Everyone worries about
          requests per second; but I
          think its more importan...
“Does it scale?”


“Yes. Just add more controllers.”
                   Everyone worries about
                   requests...
RESTful controllers
class PeopleController < ApplicationController
  # GET all or search
  def index...
  def show...
  de...
RESTful controllers
class PeopleController < ApplicationController
  # GET all or search
  def index...
  def show...
  de...
RESTful routes

/people/show/1         => /people/1

/people/some_action/45 => /people/45/some_action


                  ...
One of the main
agreements about
convention in Rails


                 RESTful result types
is RESTfulness.
Same actions,...
One of the main
agreements about
convention in Rails


                 RESTful result types
is RESTfulness.
Same actions,...
Any format you want
respond_to do |format|
  format.html     { render   ...   }
  format.xml      { render   ...   }
  for...
ActiveResource


Applications “talking” with REST
ActiveResource


Applications “talking” with REST
This is cool because...
class Person < ActiveResource::Base
  self.site = quot;http://contacts.drnicwilliams.com:3000/quot...
Learn more?

Read the README and CHANGELOG for
            ActiveResource


http://dev.rubyonrails.org/browser/trunk/activ...
Jester:
          REST for Javascript
Base.model(quot;Personquot;, {
            plural: quot;peoplequot;,
            pre...
“Logical” servers for the connector
 1) Jumpstart/PXE Boot
 2) Monitoring
 3) Auditing
 4) Logging
 5) Provisioning and co...
Guess which is “Rails”?



              Jason Hoffman, Railsconf 2007
Jason Hoffman, Railsconf 2007
A process of
ongoing improvement
Hosting

Don’t deploy Rails to Amazon’s EC2
Run Ruby scripts on Amazon’s EC2

           EC2 have virtual      Use EC2 for...
Deployment

Capistrano - by Jamis Buck

           +
 Deprec - by Mike Bailey     deprec =
                             de...
deprec - easy peasy

  cap     install_rails_stack
  cap     setup
  cap     deploy_with_migrations
  cap     restart_apac...
install_rails_stack
task :install_rails_stack do
  setup_user_perms
  enable_universe
  disable_cdrom_install
  install_pa...
Story of 200 database tables
magic_model_generator

 magicmodels.rubyforge.org
For demo:
                                 $ pgstart



   magic_model_generator
                                 $ rails ...
RubyGems are good
Instead of plugins,
    use gems
Dependencies
Version numbers
Use outside of Rails
Non-ruby code
“But I don’t know
      how?”
hoe - Ryan Davis
hoe - Ryan Davis
 seattle.rb - ZenTest/autotest
hoe - Ryan Davis
        seattle.rb - ZenTest/autotest
   # Rakefile
   hoe = Hoe.new(GEM_NAME, VERS) do |p|
     p.author...
r
a
k
e
r
a
k
e
History.txt
== 0.2.0 2007-06-03

* Added more foo into foo.rb

== 0.1.0 2007-06-02

* Foo and Bar now in own files
* Using...
History.txt
Manifest.txt

                  Manifest.txt
README.txt
Rakefile
bin/gemsonrails
lib/gemsonrails.rb
lib/gemson...
History.txt
Manifest.txt

                  Manifest.txt
README.txt
Rakefile
bin/gemsonrails
lib/gemsonrails.rb
lib/gemson...
NewGem
   Generator
$ newgem <gemname>

 newgem.rubyforge.org
newgem.rubyforge.org
Test::Unit
        or

      RSpec
newgem.rubyforge.org
Finally...
JRuby is cool
Learn     on   !

Dr Nic Academy

 drnicacademy.com
What: Beginning Rails
When: July 7 and 8th
Where: Amsterdam +/-
BYO: Laptop
Cost: 975€

  drnicacademy.com
What: Beginning Rails
When: July 7 and 8th
Where: Amsterdam +/-
BYO: Laptop
Cost: 975€
    600€ - “rubyenrails”
  drnicaca...
Enjoy    En    !
drnicwilliams.com
drnicacademy.com
    by Dr Nic
Upcoming SlideShare
Loading in...5
×

RubyEnRails2007 - Dr Nic Williams - Keynote

6,037

Published on

Dr Nic gives his report on what's cool with Rails right now

Published in: Technology, Design
0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
6,037
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
330
Comments
0
Likes
7
Embeds 0
No embeds

No notes for slide

Transcript of "RubyEnRails2007 - Dr Nic Williams - Keynote"

  1. 1. Dr Nic drnicwilliams.com Remember: drnicacademy.com * setup for demo of magic_model_generator (pp 36) * set font size of database.yml to large What’s cool about Rails?
  2. 2. Dr Nic
  3. 3. Dr Nic’s Magic Models
  4. 4. MyConfPlan
  5. 5. Composite Primary Keys
  6. 6. Magic Multi-Connections
  7. 7. Magic Multi-Connections As seen on DHH’s blog
  8. 8. NewGem Generator $ newgem <gem>
  9. 9. NewGem Generator As seen in $ newgem <gem>
  10. 10. Magic Model Generator
  11. 11. Magic Model Generator As seen in ??
  12. 12. why?
  13. 13. Dr Nic’s
  14. 14. Dr Nic’s Academy
  15. 15. Dr Nic’s Academy “Beginning Ruby on Rails” July 7/8 - Netherlands
  16. 16. RailsConf
  17. 17. So why is important?
  18. 18. Why is important?
  19. 19. Why is important? When do I use ?
  20. 20. Why is important? When do I use ? Merb Camping CGI Mongrel Handlers
  21. 21. RailsConf Bet ween last year and this year, I’ve realised they aren’t “Railsconfs”, but...
  22. 22. RailsConf Bet ween last year and this year, I’ve realised they aren’t “Railsconfs”, but...
  23. 23. RubyConf About web development and other things
  24. 24. Websites are text And it doesn’t matter how the text gets to the browser
  25. 25. <html> <head> <title>Hello world</title> </head> <body> Here’s some <p>Hello World</p> might send text that you </body> </html>
  26. 26. Rails When you come to I just want to talk Rails you quickly about these 3... learn there are many things you need to get good at quickly...
  27. 27. Javascript HTML CSS Rails Gems Ruby When you come to I just want to talk Rails you quickly about these 3... learn there are many things you need to get good at quickly... Rake Databases Unix
  28. 28. Javascript HTML CSS Rails Gems Ruby When you come to I just want to talk Rails you quickly about these 3... learn there are many things you need to get good at quickly... Rake Databases Unix
  29. 29. RailsConf 2006 To understand Rails and where its going, let’s look at rails 1.0
  30. 30. RailsConf 2006 To understand Rails and where its going, let’s look at rails 1.0 “Can we make $$$ from Rails?”
  31. 31. RailsConf 2007
  32. 32. RailsConf 2007 “Yes.”
  33. 33. RailsConf 2007 “Because its just text generation” Ok, now let’s look at the latest ways to generate text on the web...
  34. 34. “Does it scale?” Everyone worries about requests per second; but I think its more important to worry about the cost per new feature. Rails is structured to make it easy to design and implement new stuff.
  35. 35. “Does it scale?” “Yes. Just add more controllers.” Everyone worries about requests per second; but I think its more important to worry about the cost per new feature. Rails is structured to make it easy to design and implement new stuff.
  36. 36. RESTful controllers class PeopleController < ApplicationController # GET all or search def index... def show... def new... def edit... def create... def update... def destroy... end
  37. 37. RESTful controllers class PeopleController < ApplicationController # GET all or search def index... def show... def new... CRUD operations def edit... def create... def update... def destroy... end
  38. 38. RESTful routes /people/show/1 => /people/1 /people/some_action/45 => /people/45/some_action Its now cool to use restful routing. The benefit is you can remove the tail of a url, and the url is still meaningful.
  39. 39. One of the main agreements about convention in Rails RESTful result types is RESTfulness. Same actions, but new paradigm. class PeopleController < ApplicationController def create @person = Person.create(params[:person]) respond_to do |format| format.html { redirect_to person_url(@person) } format.xml { render :status => :created, :location => person_url(@person), ... } end From developer side, end you can return more end data formats with the same actions.
  40. 40. One of the main agreements about convention in Rails RESTful result types is RESTfulness. Same actions, but new paradigm. class PeopleController < ApplicationController def create @person = Person.create(params[:person]) respond_to do |format| format.html { redirect_to person_url(@person) } format.xml { render :status => :created, :location => person_url(@person), ... } end From developer side, end you can return more end data formats with the same actions.
  41. 41. Any format you want respond_to do |format| format.html { render ... } format.xml { render ... } format.csv { render ... } format.js { render ... } formal.foobar { render ... } end
  42. 42. ActiveResource Applications “talking” with REST
  43. 43. ActiveResource Applications “talking” with REST
  44. 44. This is cool because... class Person < ActiveResource::Base self.site = quot;http://contacts.drnicwilliams.com:3000/quot; end Person.find_by_name quot;Dr Nic Williamsquot; Who cares what REST is? This syntax is awesome.
  45. 45. Learn more? Read the README and CHANGELOG for ActiveResource http://dev.rubyonrails.org/browser/trunk/activeresource/README
  46. 46. Jester: REST for Javascript Base.model(quot;Personquot;, { plural: quot;peoplequot;, prefix: quot;http://drnicwilliams.com:3000quot;}) Person.find(quot;allquot;, { premium: true }, This #find call is asynchronous { onSuccess: callback }) and invokes callback on complete. by Eric Mill
  47. 47. “Logical” servers for the connector 1) Jumpstart/PXE Boot 2) Monitoring 3) Auditing 4) Logging 5) Provisioning and configuration management 6) DHCP/LDAP for server identification/authentication and control (at dual for failover) 7) DNS: DNS cache and resolver, and a (private) DNS system (4x + 2; 2+ sites) 8) DNS MySQL (4x + 2, dual masters with slaves per DNS node, innodb tables) 9) SPAM filtering servers (files to NFS store and tracking to postgresql) 10) SPAM database setup (postgresql) 11) SPAM NFS store 12) SMTP proxies and gateways out 13) SMTP proxies and gateways in (delivery to clusters to Maildir over NFS) 14) Mail stores 15) IMAP proxy servers 16) IMAP servers 17) User LDAP servers 18) User long running processes 19) User postgresql DB servers 20) User web servers 21) User application servers 22) User File Storage (NFS) 23) Joyent Organization Provisioning/Customer panel servers (web, app, database) 24) iSCSI storage systems 25) Chat servers Jason Hoffman, Railsconf 2007 26) Load balancer/proxies/static caches ...
  48. 48. Guess which is “Rails”? Jason Hoffman, Railsconf 2007
  49. 49. Jason Hoffman, Railsconf 2007
  50. 50. A process of ongoing improvement
  51. 51. Hosting Don’t deploy Rails to Amazon’s EC2 Run Ruby scripts on Amazon’s EC2 EC2 have virtual Use EC2 for storage - if you other lose your instance, processes on you lose data. demand. Backup hourly.
  52. 52. Deployment Capistrano - by Jamis Buck + Deprec - by Mike Bailey deprec = deployment recipies
  53. 53. deprec - easy peasy cap install_rails_stack cap setup cap deploy_with_migrations cap restart_apache Slap ubuntu on a machine and go.
  54. 54. install_rails_stack task :install_rails_stack do setup_user_perms enable_universe disable_cdrom_install install_packages_for_rails install_rubygems The process of install_gems deploying rails install_apache generically is being solved end
  55. 55. Story of 200 database tables
  56. 56. magic_model_generator magicmodels.rubyforge.org
  57. 57. For demo: $ pgstart magic_model_generator $ rails magic_show -d postgresql $ database.yml: database: activerecord_unittest $ Kill textmate and reload it fresh from magic_show folder $ Have /db and /app/models folders open and empty $ Pump up font size $ iTerm open to magic_show folder Now, demo is ready $ sudo gem install magic_model_generator # Show post.rb as example $ rails magic_show $ cd magic_show # point database.yml to legacy database $ rake db:migrate # check /db/schema.rb contains all tables $ ruby script/generate magic_model # check /app/models contains model files
  58. 58. RubyGems are good
  59. 59. Instead of plugins, use gems
  60. 60. Dependencies
  61. 61. Version numbers
  62. 62. Use outside of Rails
  63. 63. Non-ruby code
  64. 64. “But I don’t know how?”
  65. 65. hoe - Ryan Davis
  66. 66. hoe - Ryan Davis seattle.rb - ZenTest/autotest
  67. 67. hoe - Ryan Davis seattle.rb - ZenTest/autotest # Rakefile hoe = Hoe.new(GEM_NAME, VERS) do |p| p.author = AUTHOR p.description = DESCRIPTION p.email = EMAIL p.summary = SUMMARY p.url = HOMEPATH end Its easier to write a Gem than not to!
  68. 68. r a k e
  69. 69. r a k e
  70. 70. History.txt == 0.2.0 2007-06-03 * Added more foo into foo.rb == 0.1.0 2007-06-02 * Foo and Bar now in own files * Using Hoe
  71. 71. History.txt Manifest.txt Manifest.txt README.txt Rakefile bin/gemsonrails lib/gemsonrails.rb lib/gemsonrails/version.rb scripts/txt2html setup.rb templates/init.rb ordered list of templates/tasks_gems_freeze.rake published files templates/tasks_gems_link.rake templates/tasks_gems_unfreeze.rake templates/tasks_load_tasks_in_gems.rake test/test_gemsonrails.rb test/test_helper.rb website/index.html website/index.txt website/javascripts/rounded_corners_lite.inc.js website/stylesheets/screen.css website/template.rhtml
  72. 72. History.txt Manifest.txt Manifest.txt README.txt Rakefile bin/gemsonrails lib/gemsonrails.rb lib/gemsonrails/version.rb scripts/txt2html setup.rb templates/init.rb ordered list of templates/tasks_gems_freeze.rake published files templates/tasks_gems_link.rake templates/tasks_gems_unfreeze.rake templates/tasks_load_tasks_in_gems.rake test/test_gemsonrails.rb test/test_helper.rb website/index.html website/index.txt website/javascripts/rounded_corners_lite.inc.js website/stylesheets/screen.css website/template.rhtml rake check_manifest
  73. 73. NewGem Generator $ newgem <gemname> newgem.rubyforge.org
  74. 74. newgem.rubyforge.org
  75. 75. Test::Unit or RSpec newgem.rubyforge.org
  76. 76. Finally...
  77. 77. JRuby is cool
  78. 78. Learn on ! Dr Nic Academy drnicacademy.com
  79. 79. What: Beginning Rails When: July 7 and 8th Where: Amsterdam +/- BYO: Laptop Cost: 975€ drnicacademy.com
  80. 80. What: Beginning Rails When: July 7 and 8th Where: Amsterdam +/- BYO: Laptop Cost: 975€ 600€ - “rubyenrails” drnicacademy.com
  81. 81. Enjoy En ! drnicwilliams.com drnicacademy.com by Dr Nic
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×