-
-
Save wp-networks/b23b42ada4fa9a461782277be25bc0ac to your computer and use it in GitHub Desktop.
Types of Developers
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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