Sha256: b04eca04a94f4760502f3c06d6bfec26e89de1c03c6b5e115beb47a8a525fe8a
Contents?: true
Size: 1008 Bytes
Versions: 1
Compression:
Stored size: 1008 Bytes
Contents
module NotOnlyButAlso module ClassMethods def not_only_but_also(*contexts, &block) @_not_only_but_also_contexts ||= {} if block_given? context = contexts.first || NotOnlyButAlso::Helpers.context_name_from_file(caller.first) @_not_only_but_also_contexts[context] = block else contexts.each do |context| NotOnlyButAlso::Helpers.require_context_file(name, context) class_eval &@_not_only_but_also_contexts[context] end end end alias also_has not_only_but_also end module Helpers def self.require_context_file(class_name, context) require_dependency "#{class_name.underscore}/#{context}" rescue MissingSourceFile => ex raise ex, "NotOnlyButAlso could not find a file for #{class_name} using context #{context}" end def self.context_name_from_file(filename) filename.split('/').last.split('.').first.to_sym end end end Class.send :include, NotOnlyButAlso::ClassMethods
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
not_only_but_also-1.1.0 | lib/not_only_but_also.rb |