Sha256: 4a66fac631bafb0921beac249c56733ce570f84c41abdc65616d6b19444aee85
Contents?: true
Size: 1.34 KB
Versions: 3
Compression:
Stored size: 1.34 KB
Contents
module ToFactory module Finders class Model def call(exclusions=[]) instances = [] each_klass(exclusions) do |klass| if instance = get_active_record_instance(klass) instances << instance end end instances end private def each_klass(exclusions) models.each do |file| matching_lines(file) do |match| klass = rescuing_require(file, match) break if exclusions.include?(klass) || yield(klass) end end end def models Dir.glob("#{ToFactory.models}/**/*.rb") end def matching_lines(file) File.readlines(file).each do |l| if match = l.match(/class (.*) ?</) yield match end end end def rescuing_require(file, match) require file klass = eval(match[1]) klass rescue Exception => e warn "Failed to eval #{file}" warn e.message end def get_active_record_instance(klass) if klass && klass.ancestors.include?(ActiveRecord::Base) begin klass.first rescue klass.find(:first) end end rescue Exception => e warn "Failed to get record from #{klass} #{e.message}" end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
to_factory-2.0.0 | lib/to_factory/finders/model.rb |
to_factory-0.2.1 | lib/to_factory/finders/model.rb |
to_factory-0.2.0 | lib/to_factory/finders/model.rb |