Skip to content

Instantly share code, notes, and snippets.

@wp-networks
Forked from luckydev/devs.rb
Created June 19, 2018 23:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wp-networks/b23b42ada4fa9a461782277be25bc0ac to your computer and use it in GitHub Desktop.
Save wp-networks/b23b42ada4fa9a461782277be25bc0ac to your computer and use it in GitHub Desktop.
Types of Developers
# SeniorDev, AwesomeDev, NoviceDev
class SeniorDev
def do_some_old_stuff
puts "This is a piece of cake"
end
def method_missing(name, *args)
puts "Err.. What? #{name}??.. THAT IS IMPOSSIBLE! Leave me alone."
end
end
class AwesomeDev
def do_some_awesome_stuff
puts "<AWESOME> Alright, this is done now"
end
def method_missing(name, *args)
puts "<AWESOME> Well, I don't know how to do #{name}. But wait, give me some time.. i will do it"
self.class.learn_new(name, *args)
send(name, args)
puts "<AWESOME> that was a good learning experience"
end
def self.learn_new(name, *args)
define_method(name) do |*args|
puts "<AWESOME> #{name} with #{args.join(',')} is done!"
end
end
end
class NoviceDev
def initialize
@awesomeDev = AwesomeDev.new
end
def method_missing(name, *args)
puts "Let me learn it from AwesomeDev :)"
@awesomeDev.send(name, *args)
end
end
puts "\n ========> Senior DEV"
developer = SeniorDev
developer.new.some_impossible_task(1,2,3)
puts "\n ========> Awesome DEV"
developer = AwesomeDev
developer.new.some_impossible_task(1,2,3)
puts "\n ========> New DEV"
developer = NoviceDev
developer.new.some_impossible_task(1,2,3)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment