Ricardo Sanchez
                @ricardojsanchez
    rsanchez.jayhawk@gmail.com
svDevOps Meetup – August 3, 2010
 Operations  Architect for PlayHaven
 Started with Ruby/Rails in late 2008
 Networking guy prior to that
  • Linux/Unix...
 ShortRuby Intro
 Ruby projects
 Ruby Lab
 Created   by Yukihiro “Matz” Matsumoto
 First release 1995, renassaince 2005
 Influenced by Python, Perl, and Lisp
 F...
 Object-Oriented
    With inheritance, mixins, and metaclasses
 Interpreted
 Dynamic  typing and Duck typing
 Everyth...
 Created  by DHH (released 2004)
 Web application framework
 Model-View-Controller (MVC) pattern
 Stable 2.3.8, Beta 3...
Database
            Router              Controller               Model
                                                  ...
 Request  made from browser to URL
  http://localhost:3000/users/show/1
 Rails receives request on port 3000
  • Server ...
 ActiveRecord
 ActionController
 ActionView
 ActionMailer
 ActiveSupport
…   is all morphing as Rails3 is introduced
   Command line tool
    • Install multiple ruby interpreters/versions
       E.g.: ruby (1.8.6-p399, 1.8.7-p187, …); jr...
 Tool for building and distributing
  virtualized development environments
 Uses Oracle‟s VirtualBox
 Main features
  •...
 Task automation tool on remote servers
 Features
    • Restart particular service on multiple servers once
       $ ca...
 Problem: how to manage many servers
 Solution: consolidate access to infrastructure data for
  all nodes („systems inte...
 Books
   • Programming Ruby 1.9
   • The Ruby Programming Language
   • Practical Ruby for Systems Administration
   • E...
 Installation   (all platforms)
  • http://www.wiki.devchix.com/index.php?title=Work
    shop_Installation_Notes
     Ru...
Upcoming SlideShare
Loading in …5
×

Ricardo Sanchez - Ruby projects of interest for devops

1,556 views
1,522 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,556
On SlideShare
0
From Embeds
0
Number of Embeds
13
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Ricardo Sanchez - Ruby projects of interest for devops

  1. 1. Ricardo Sanchez @ricardojsanchez rsanchez.jayhawk@gmail.com svDevOps Meetup – August 3, 2010
  2. 2.  Operations Architect for PlayHaven  Started with Ruby/Rails in late 2008  Networking guy prior to that • Linux/Unix, kernel+user software development • C/C++, Routers/Switches, …
  3. 3.  ShortRuby Intro  Ruby projects  Ruby Lab
  4. 4.  Created by Yukihiro “Matz” Matsumoto  First release 1995, renassaince 2005  Influenced by Python, Perl, and Lisp  Focus on simplicity, productivity, and developer happiness  Principle of least surprise  Many interpreters • MRI, YARV, Jruby, Rubinius, IronRuby, REE, MacRuby, MagLev, …  “Rubyist” are passionate and friendly people (Culture)
  5. 5.  Object-Oriented  With inheritance, mixins, and metaclasses  Interpreted  Dynamic typing and Duck typing  Everything is an object, no primitives  and many more “conventions”
  6. 6.  Created by DHH (released 2004)  Web application framework  Model-View-Controller (MVC) pattern  Stable 2.3.8, Beta 3.0 RC (just released)  Principles • Convention over Configuration (CoC) • Don‟t Repeat Yourself (DRY)  REST (Representational State Transfer)
  7. 7. Database Router Controller Model Model HTTP Controller Action Action Action Model Request Parameters Action View <h2>List of items: HTTP <% @items.each do |item| %> Response <li> Item: <%= item %></li> <% end %> </h2>
  8. 8.  Request made from browser to URL http://localhost:3000/users/show/1  Rails receives request on port 3000 • Server invokes dispatcher (routing)  :controller = users, :action = show, :id = 1 • Action fetches model object from database • Action renders view which generates HTML  Rails sends response (HTML page) back
  9. 9.  ActiveRecord  ActionController  ActionView  ActionMailer  ActiveSupport … is all morphing as Rails3 is introduced
  10. 10.  Command line tool • Install multiple ruby interpreters/versions  E.g.: ruby (1.8.6-p399, 1.8.7-p187, …); jruby, rubinius • Manage sets of gems („gemsets‟) • Perform operations over installed interpreters/gemsets  Avail for all *nix systems (require „bash‟)  Quick examples (no sudo needed!) • $ rvm install ruby-1.9.2, jruby  Install • $ rvm use 1.9.1  Switching • $ rvm gemset use rails3  Managing Gems • $ rvm 1.8.7, 1.9.1, jruby tests  Running tests • $ rvm 1.8.7, 1.9.1 rake do:all  Running rake task  http://rvm.beginrescueend.com
  11. 11.  Tool for building and distributing virtualized development environments  Uses Oracle‟s VirtualBox  Main features • Automated provisioning using chef • Forward port to host machine • Full SSH access to created environments • Shared folders between host/guest(s) • Package environments into distributable boxes  Great for distributable dev/qa environments  To install: # gem install vagrant  http://vagrantup.com
  12. 12.  Task automation tool on remote servers  Features • Restart particular service on multiple servers once  $ cap HOSTS=„www-1,www-2‟ COMMAND=„/etc/init.d/apache2 restart” invoke • Check state of service/resource (memory,cpu) that is not monitored  $ cap HOSTS=„www-1,www-2‟ COMMAND=„grep MemTotal /proc/meminfo‟ invoke • Run command in multiple servers and monitor output • Systems deployment tasks (e.g., Rails deployments)  To install: # gem install capistrano  http://capify.org
  13. 13.  Problem: how to manage many servers  Solution: consolidate access to infrastructure data for all nodes („systems integration‟)  Chef provides configuration, integration, and operations as code (written in Ruby) • Treat infrastructure like software development projects  Modes: solo, client/server  Concepts • Nodes, Roles, Cookbooks, Recipes, Resources, Attributes  Opscode offerings • Chef - Server Configuration Management Tool (API & DSL) • Opscode Platform (hosted chef server)  http://www.opscode.com
  14. 14.  Books • Programming Ruby 1.9 • The Ruby Programming Language • Practical Ruby for Systems Administration • Everyday Scripting with Ruby  Online Learning • http://rubylearning.org (Free course) • http://github.com/edgecase/ruby_koans (FUN)  Blogs • http://rubyinside.com • http://rubyflow.com
  15. 15.  Installation (all platforms) • http://www.wiki.devchix.com/index.php?title=Work shop_Installation_Notes  Ruby, RubyGems  Editor (your choice)  Exercise • Open irb  $ irb  >> puts “Hello world” • Save previous line on hello.rb, chmod +x, and run  $ ruby hello.rb

×