diff --git a/app/models/rate.rb b/app/models/rate.rb index bb47a8d..160109c 100644 --- a/app/models/rate.rb +++ b/app/models/rate.rb @@ -1,3 +1,5 @@ +require 'lockfile' + class Rate < ActiveRecord::Base unloadable class InvalidParameterException < Exception; end @@ -67,6 +69,18 @@ class Rate < ActiveRecord::Base return nil if rate.nil? return rate.amount end + + def self.update_all_time_entires_with_missing_cost + Lockfile('update_cost_cache', :retries => 0) do + TimeEntry.all(:conditions => {:cost => nil}).each do |time_entry| + begin + time_entry.save_cached_cost + rescue Rate::InvalidParameterException => ex + puts "Error saving #{time_entry.id}: #{ex.message}" + end + end + end + end private def self.for_user_project_and_date(user, project, date) diff --git a/lib/tasks/cache.rake b/lib/tasks/cache.rake index de9c7ef..76365bd 100644 --- a/lib/tasks/cache.rake +++ b/lib/tasks/cache.rake @@ -1,20 +1,8 @@ -require 'lockfile' - namespace :rate_plugin do namespace :cache do desc "Update Time Entry cost caches" task :update_cost_cache => :environment do - Lockfile('update_cost_cache', :retries => 0) do - TimeEntry.all(:conditions => {:cost => nil}).each do |time_entry| - begin - time_entry.save_cached_cost - rescue Rate::InvalidParameterException => ex - puts "Error saving #{time_entry.id}: #{ex.message}" - end - - end - - end + Rate.update_all_time_entires_with_missing_cost end end end