Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save jamesmartin/877159 to your computer and use it in GitHub Desktop.
Save jamesmartin/877159 to your computer and use it in GitHub Desktop.
$:.unshift(File.dirname(__FILE__), ".")
require 'spec_helper'
module Butler
def self.included base
base.instance_eval { @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
#Todo: 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
#Todo: 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
@jamesmartin
Copy link
Author

Add the Butler role's @place instance variable to the extended actor instance using instance_eval.

@antonymarcano
Copy link

Or we could do this

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