Module: Backup::Config::Helpers

Included in:
Backup::Compressor::Base, Database::Base, Encryptor::Base, Notifier::Base, Storage::Base, Syncer::Base
Defined in:
lib/backup/config/helpers.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args) ⇒ Object (private)

Check missing methods for deprecated attribute accessors.

If a value is set on an accessor that has been deprecated using #attr_deprecate, a warning will be issued and any :action (Proc) specified will be called with a reference to the class instance and the value set on the deprecated accessor. See #attr_deprecate and #log_deprecation_warning

Note that OpenStruct (used for setting defaults) does not allow multiple arguments when assigning values for members. So, we won’t allow it here either, even though an attr_accessor will accept and convert them into an Array. Therefore, setting an option value using multiple values, whether as a default or directly on the class’ accessor, should not be supported. i.e. if an option will accept being set as an Array, then it should be explicitly set as such. e.g. option = [val1, val2]



108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# File 'lib/backup/config/helpers.rb', line 108

def method_missing(name, *args)
  deprecation = nil
  if method = name.to_s.chomp!('=')
    if (len = args.count) != 1
      raise ArgumentError,
        "wrong number of arguments (#{ len } for 1)", caller(1)
    end
    deprecation = self.class.deprecations[method.to_sym]
  end

  if deprecation
    self.class.log_deprecation_warning(method, deprecation)
    deprecation[:action].call(self, args[0]) if deprecation[:action]
  else
    super
  end
end

Class Method Details

.included(klass) ⇒ Object



8
9
10
# File 'lib/backup/config/helpers.rb', line 8

def self.included(klass)
  klass.extend ClassMethods
end