Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ruby For Beginning Rails Programmers

Ryder Moody
November 07, 2012

Ruby For Beginning Rails Programmers

For Columbia's Ruby on Rails class. November 2012.

Ryder Moody

November 07, 2012
Tweet

Other Decks in Programming

Transcript

  1. Goals: 1. why Ruby is cool (or why to stop

    writing java) 2. how Ruby works 3. how Ruby solves complex problems 4. a taste of what Ruby can do
  2. # yup a_method that: ‘takes’, a_hash: ‘argument’ a_method :that =>

    ‘takes’, :a_hash => ‘argument’ # WASTE OF PRECIOUS BYTES!!! a_method({:that => ‘takes’, :a_hash => ‘argument’}) a_method {:that => ‘takes’, :a_hash => ‘argument’}
  3. # on github, your friend’s machine def do_something @var +=

    1 @students.each do { |s| s.teach! s.fail! } end
  4. Trainer = Class.new do def name “Unknown” end end ash

    = Trainer.new ash.name #=> “Unknown”
  5. Trainer = Class.new do def name @name || “Unknown” end

    def name= something @name = something end end ash = Trainer.new ash.name = “Ash” ash.name #=> “Ash”
  6. Trainer = Class.new do def initialize name = nil @name

    = name end def name @name || “Unknown” end def name= something @name = something end end
  7. Trainer = Class.new do def initialize name = “Unknown” @name

    = name end def name @name end def name= something @name = something end end
  8. class Trainer attr_reader :name # def name attr_writer :name #

    def name= def initialize name = “Unknown” @name = name end end
  9. class Trainer # def name, def name= attr_accessor :name def

    initialize name = “Unknown” @name = name end end
  10. # new instance of a blank class, Class Trainer =

    Class.new # syntactic sugar so that it looks familiar class Trainer end # new instance of a class with an # initializer, getter, and setter Trainer = Struct.new :name
  11. class Trainer < Class.new end # works class Student <

    User.new end # TypeError: superclass must be a Class (User given)
  12. class RudeClass def method_missing method_name, *args, &block formatted = method_name.to_s.gsub(‘_’,

    ‘ ‘) “No, you #{formatted}” end end r = RudeClass.new r.dance! #=> “No, you dance!” r.go_away! #=> “No, you go away!”
  13. a = “hey” class String def secret_password “The password is

    2ryp4py3g” end end a.secret_password #=> “The password is 2ryp4py3g”
  14. class Government # Boring stuff omitted... private def launch_nuke! #

    top secret contents omitted... “Mission Success!” end end g = Government.new g.launch_nuke! #=> NoMethodError g.send :launch_nuke! #=> ‘Mission Success!’
  15. def benchmark method, num = 10000, *args, &block start =

    Time.now num.times { send method } (Time.now - start) / num end benchmark :size #=> 1.46441e-07
  16. Constant = 10 Constant = 11 warning: already initiated constant

    Constant Constant #=>11 def Constant.constant? false end Constant.constant? #=> false “constants”