Your SlideShare is downloading. ×
An introduction to Ruby
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

An introduction to Ruby

1,816
views

Published on

My slides from the presentation I gave at the Devnology Community Day on 7 November 2009.

My slides from the presentation I gave at the Devnology Community Day on 7 November 2009.

Published in: Technology, Education

2 Comments
9 Likes
Statistics
Notes
  • Thanks.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Uma introdução leve ao Ruby.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
1,816
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
122
Comments
2
Likes
9
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • Overview:
    * Top-level: what is it?
    * Low-level: how does it look?
    * Purpose: What can you use it for?
    * Practice: what is it used for?
  • Overview:
    * Top-level: what is it?
    * Low-level: how does it look?
    * Purpose: What can you use it for?
    * Practice: what is it used for?
  • * Simple strings
    * Puts -> global scope
    * Interpolation
    * Methods, parameters
    * Single quotes vs double quotes
  • * Simple strings
    * Puts -> global scope
    * Interpolation
    * Methods, parameters
    * Single quotes vs double quotes
  • Transcript

    • 1. An Introduction to Ruby
    • 2. Speaker.new({ :name => "Wes Oldenbeuving", :twitter => "@Narnach", :rubyist_since => "Early 2006", :works_as => "Freelance Rubyist", :code_at => "github.com/Narnach", :email => "wes@narnach.com" })
    • 3. Overview What is Ruby? History and current versions What does Ruby look like? Basic tools of the Rubyist Practical uses of Ruby The Ruby Community
    • 4. What is Ruby?
    • 5. Object oriented
    • 6. Everything is an object 1.class # => Fixnum 'a'.class # => String :z.class # => Symbol class Foo end Foo.class # => Class Foo.new.class # => Foo
    • 7. Dynamically typed def foo(bar) bar * 2 end foo(1) # => 2 foo("a") # => "aa"
    • 8. Duck Typing "a".respond_to? :size # => true 1.respond_to? :+ # => true 1.respond_to? :inject # => false
    • 9. Scripting language
    • 10. Everything is an expression
    • 11. Ruby: the history
    • 12. Japan
    • 13. Idea 1993
    • 14. Productivity and fun
    • 15. Focus on the programmer, not the computer
    • 16. Inspired by Perl, Smalltalk, Lisp
    • 17. v0.95 1995
    • 18. English-language 1999 v1.3
    • 19. Programming Ruby 2000
    • 20. Current versions of Ruby
    • 21. Matz Ruby Interpreter Stable Ruby 1.8
    • 22. Yet Another Ruby VM Development Ruby 1.9
    • 23. JRuby (1.4) Ruby 1.8 (1.9) on the JVM
    • 24. Rubinius Ruby 1.8 in Ruby (and a bit of C++)
    • 25. IronRuby (0.9.2) Ruby 1.8 without continuations
    • 26. MacRuby (0.5) Ruby 1.9 in Objective-C
    • 27. Maglev Ruby in Gemstone Smalltalk VM
    • 28. Ruby: the language
    • 29. What does Ruby look like?
    • 30. Strings and Variables 'Hello, Devnology!' name = 'Devnology' # => "Devnology" "Hello, #{name}!" # => "Hello, Devnology!"
    • 31. Methods str = "Hello, Devnology!" str.size # => 17 str.sub("Devnology", "World") # => "Hello, World!" def greet(name="Wes") "Greetings, #{name}!" end puts greet puts greet('Devnology') # >> Greetings, Wes! # >> Greetings, Devnology!
    • 32. Numbers 1 + 2 # => 3 1 + 2.1 # => 3.1 2**10 # => 1024 9 / 2 # => 4 5 % 3 # => 2 -3.abs # => 3 1.class # => Fixnum (2**50).class # => Bignum 1.3.class # => Float
    • 33. Arrays Array.new # => [] [1,2,3] # => [1, 2, 3] [1] + [2] << 3 # => [1, 2, 3] [1,2,3] - [2,3] # => [1] %w[one two] # => ["one", "two"] [1,2,3].pop # => 3 [1,2].push(3) # => [1, 2, 3] [1,2,3].shift # => 1 [2,3].unshift(1) # => [1, 2, 3] [1,3].insert(1,2) # => [1, 2, 3]
    • 34. Hashes options = {:name => "Devnology"} h = Hash.new # => {} h['string'] = 1 h[:symbol] = 1 h # => {:symbol=>1, "string"=>1} h.keys # => [:symbol, "string"] h[:symbol] # => 1
    • 35. Iterators for n in 0..2 puts n end (0..2).each do |n| puts n end [0,1,2].each {|n| puts n}
    • 36. Enumerable ary = [1,2,3] ary.map {|n| n * 2} # => [2, 4, 6] ary.select {|n| n % 2 == 0} # => [2] ary.inject(0) {|sum, n| sum + n} # => 6
    • 37. Control structures if some_condition # ... elsif other_condition # ... else # ... end while condition # ... end puts "lol" if funny?
    • 38. Regular Expressions str = "Hello, world!" str.gsub(/[aeiou]/,"*") # => "H*ll*, w*rld!" str =~ /w(or)ld/ # => 7 $1 # => "or" match = str.match(/w(or)ld/) # => #<MatchData: 0x532cbc> match[0] # => "world" match[1] # => "or"
    • 39. Error handling begin raise "Standard error" rescue => e p e end # >> #<RuntimeError: Standard error> begin raise StandardError.new("Oh, oh") rescue RuntimeError puts "runtime" rescue StandardError puts "standard" end # >> standard
    • 40. System interaction system "ls" output = `ls` ARGV File.open('test.txt','w') do |file| file.write("linen") file.puts("line") end File.read('test.txt')
    • 41. Classes class Calc attr_accessor :factor def initialize(factor=2) @factor = factor end def multiply(value) @factor * value end end calc = Calc.new calc.multiply 5 # => 10 calc.factor = 3 calc.multiply 5 # => 15
    • 42. Inheritance class Foo def greet "Hi, #{value}" end def value "foo" end end class Bar < Foo def value "bar" end end Foo.new.greet # => "Hi, foo" Bar.new.greet # => "Hi, bar"
    • 43. Mixins & Open Classes module Even def even? self % 2 == 0 end end class Fixnum include Even end 1.even? # => false 2.even? # => true
    • 44. Class methods class Foo def self.bar "BAR!" end def bar "bar" end end Foo.bar # => "BAR!" Foo.new.bar # => "bar"
    • 45. Basic tools of a Rubyist
    • 46. Rubygems
    • 47. Rdoc
    • 48. Interactive Ruby
    • 49. Practical uses of Ruby
    • 50. Ruby on Rails class BlogPost < ActiveRecord::Base belongs_to :user has_many :comments validates_presence_of :user_id validates_associated :user validates_length_of :title, :within => 10..100 validates_length_of :body, :within => 100..5000 end BlogPost.new(:title => "Hello", :body => "foo!")
    • 51. Rspec it "should be awesome" do foobar = FooBar.new foobar.should be_awesome end
    • 52. Cucumber Feature: Write blog post As a blogger I want to create a new blog post So that I can share my knowledge Scenario: Click the Add group button Given I am on the homepage When I follow "New post" Then I should be on the new blog post page Given /^I am on (.+)$/ do |page_name| visit path_to(page_name) end
    • 53. Scripting / automation
    • 54. DSL: Rake desc "Clean everything up" task :cleanup do Cleaner.cleanup! end desc "Make sure everything is shiny" task :shiny => :cleanup do Shiner.polish! end
    • 55. DSL: Capistrano set :application, "blog" set :repository, "git@github.com:Narnach/#{application}.git" set :deploy_to, "/var/www/www.#{application}.com" set :scm, :git role :web, "server" role :app, "server" role :db, "server", :primary => true namespace :deploy do desc "Restart Passenger" task :restart, :roles => :app, :except => { :no_release => true } do run "touch #{File.join(current_path,'tmp','restart.txt')}" end end
    • 56. The Ruby Community
    • 57. Rubyists
    • 58. Amsterdam.rb Monthly beer night Presentation nights
    • 59. Utrecht.rb Monthly beer night
    • 60. rubyists.eu
    • 61. ruby-groups.org dev-groups.org

    ×