An introduction to Ruby

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Notes on slide 1

    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

    2 Favorites & 1 Event

    An introduction to Ruby - Presentation 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

    + Wes OldenbeuvingWes Oldenbeuving, 2 weeks ago

    custom

    209 views, 2 favs, 1 embeds more stats

    My slides from the presentation I gave at the Devno more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 209
      • 207 on SlideShare
      • 2 from embeds
    • Comments 0
    • Favorites 2
    • Downloads 8
    Most viewed embeds
    • 2 views on http://devnology.nl

    more

    All embeds
    • 2 views on http://devnology.nl

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories

    Groups / Events