Skip to content

Instantly share code, notes, and snippets.

Avatar
😀

Jim Gay saturnflyer

😀
View GitHub Profile
@saturnflyer
saturnflyer / the_world_of_foos.rb
Last active Jul 16, 2019 — forked from zdennis/the_world_of_foos.rb
Given the below hierarchy how many ways can you think of to wrap the `Parent#foo` implementation so that `Grandchild1` and `Grandchild2` can have their own unique logic that executes after all of the mixin `foo`(s) but before the `Parent#foo` executes?
View the_world_of_foos.rb
module N
def foo
puts "N: foo"
super
end
end
module O
def foo
puts "O: foo"
@saturnflyer
saturnflyer / prepended.rb
Last active May 11, 2017 — forked from cmar/prepended.rb
example of prepended class methods
View prepended.rb
class Foo
def self.say
p "hello from Foo"
end
end
module Bar
def say
super
p "hello from Bar"
View gist:2ead89f0cb8b5b1f1d41
require 'resolv'
class EmailValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
if Resolv::DNS.new.getresources(value.split("@").last, Resolv::DNS::Resource::IN::MX).empty?
record.errors[attribute] << (options[:message] || "does not have a valid domain")
end
rescue Resolv::ResolvError, Resolv::ResolvTimeout
record.errors[attribute] << (options[:message] || "does not have a valid domain")
end