From a1a721841db4b1e9de9ba228320398c7b87732a5 Mon Sep 17 00:00:00 2001 From: Danny Hawkins Date: Thu, 7 Jan 2010 20:53:48 +0000 Subject: [PATCH] Changed find_models method to support sub directories --- lib/sitemap_generator/generator.rb | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/sitemap_generator/generator.rb b/lib/sitemap_generator/generator.rb index a7591aa..1e3773b 100644 --- a/lib/sitemap_generator/generator.rb +++ b/lib/sitemap_generator/generator.rb @@ -19,12 +19,13 @@ def initialize(filename = "#{RAILS_ROOT}/public/sitemap.xml") def find_models models = [] - - files = Dir.glob(File.join(RAILS_ROOT, 'app', 'models', '*.rb')).delete_if {|c| c =~ /observer\.rb/ } #{|c| c < ActiveRecord::Base== false} - - files.each do |file| + model_path = File.join(RAILS_ROOT, 'app', 'models') + files = Find.find(model_path) do |file| + next unless file[-3..-1] == '.rb' + next if file =~ /observer.rb/ + file.gsub!(model_path,'') # Get the class from the filename - model = file.split('/').last[0..-4].classify.constantize + model = file.split('/').map{|f| f.gsub('.rb','').classify unless f.empty?}.compact.join('::').constantize # Skip classes that don't have any sitemap options next if !model.methods.include?('sitemap_options') || model.sitemap_options == nil