diff --git a/lib/tasks/geocoder.rake b/lib/tasks/geocoder.rake index f235e1b51b2cb047021042a5d4719f3e4233ab40..33ed4829e1ed76c624106d0fae5deefef82378f7 100644 --- a/lib/tasks/geocoder.rake +++ b/lib/tasks/geocoder.rake @@ -3,10 +3,23 @@ namespace :geocode do task :all => :environment do class_name = ENV['CLASS'] || ENV['class'] raise "Please specify a CLASS (model)" unless class_name - klass = Object.const_get(class_name) + klass = class_from_string(class_name) klass.not_geocoded.each do |obj| obj.geocode; obj.save end end end + +## +# Get a class object from the string given in the shell environment. +# Similar to ActiveSupport's +constantize+ method. +# +def class_from_string(class_name) + parts = class_name.split("::") + constant = Object + parts.each do |part| + constant = constant.const_get(part) + end + constant +end