Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save antonymarcano/877451 to your computer and use it in GitHub Desktop.
Save antonymarcano/877451 to your computer and use it in GitHub Desktop.
$:.unshift(File.dirname(__FILE__), ".")
require 'rubygems'
require 'rspec'
module Butler
def self.extended base
base.get_ready
end
def get_ready
@place = []
end
def put_fork_on_the_left
@place.unshift "fork"
@place
end
def put_knife_on_the_right
@place.push "knife"
@place
end
end
module Cook
#Do something similar here
def boil_water
end
def turn_on_stove
end
def place_boil_in_bag_into_pot
end
end
module MakeDinner
def follow_instructions
turn_on_stove
boil_water
place_boil_in_bag_into_pot
end
end
module LayTable
def follow_instructions
put_fork_on_the_left
put_knife_on_the_right
end
end
class MyActor
#decide how we will make the actor know in which role they should perform the task
def initialize role
extend role
end
def perform task
recall_how_to_do task
follow_instructions
end
private
def recall_how_to_do something
extend something
end
end
describe "Something" do
it "Something" do
butler = MyActor.new Butler
butler.perform(LayTable).should == ["fork","knife"]
end
end
@antonymarcano
Copy link
Author

Changed self.included to self.extended

@antonymarcano
Copy link
Author

And now we've gotten rid of the eval :-)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment