use setup block to config which classes to extend

This commit is contained in:
Adam Meehan 2010-08-01 23:27:25 +10:00
parent 6acf61aa88
commit d5124f32b2
3 changed files with 29 additions and 19 deletions

View File

@ -14,6 +14,10 @@ require 'active_support/core_ext/date_time/zones'
module ValidatesTimeliness module ValidatesTimeliness
# Add validation helpers to these classes
mattr_accessor :extend_classes
@@extend_classes = []
# Set the dummy date part for a time type values. # Set the dummy date part for a time type values.
mattr_accessor :dummy_date_for_time_type mattr_accessor :dummy_date_for_time_type
@@dummy_date_for_time_type = [ 2000, 1, 1 ] @@dummy_date_for_time_type = [ 2000, 1, 1 ]
@ -21,6 +25,12 @@ module ValidatesTimeliness
# Ignore errors when restriction options are evaluated # Ignore errors when restriction options are evaluated
mattr_accessor :ignore_restriction_errors mattr_accessor :ignore_restriction_errors
@@ignore_restriction_errors = false @@ignore_restriction_errors = false
# Setup method for plugin configuration
def self.setup
yield self
extend_classes.each {|klass| klass.send(:include, ValidatesTimeliness::HelperMethods) }
end
end end
require 'validates_timeliness/conversion' require 'validates_timeliness/conversion'

View File

@ -1,5 +1,8 @@
module ValidatesTimeliness module ValidatesTimeliness
module HelperMethods module HelperMethods
extend ActiveSupport::Concern
module ClassMethods
def validates_date(*attr_names) def validates_date(*attr_names)
validates_with Validator, _merge_attributes(attr_names).merge(:type => :date) validates_with Validator, _merge_attributes(attr_names).merge(:type => :date)
end end
@ -12,8 +15,5 @@ module ValidatesTimeliness
validates_with Validator, _merge_attributes(attr_names).merge(:type => :datetime) validates_with Validator, _merge_attributes(attr_names).merge(:type => :datetime)
end end
end end
end end
module ActiveModel::Validations::HelperMethods
include ValidatesTimeliness::HelperMethods
end end

View File

@ -6,17 +6,15 @@ require 'rspec/autorun'
require 'active_model' require 'active_model'
require 'active_model/validations' require 'active_model/validations'
# require 'active_record' require 'active_record'
# require 'action_controller'
# require 'action_view'
# require 'action_mailer'
# require 'rspec/rails'
require 'timecop' require 'timecop'
require 'model_helpers'
require 'validates_timeliness' require 'validates_timeliness'
ValidatesTimeliness.setup do |c|
c.extend_classes = [ ActiveModel::Validations, ActiveRecord::Base ]
end
Time.zone = 'Australia/Melbourne' Time.zone = 'Australia/Melbourne'
LOCALE_PATH = File.expand_path(File.dirname(__FILE__) + '/../lib/validates_timeliness/locale/en.yml') LOCALE_PATH = File.expand_path(File.dirname(__FILE__) + '/../lib/validates_timeliness/locale/en.yml')
@ -35,6 +33,8 @@ class Person
end end
end end
require 'model_helpers'
Rspec.configure do |c| Rspec.configure do |c|
c.mock_with :rspec c.mock_with :rspec
c.before do c.before do