Module: EffectiveResources

Includes:
EffectiveGem
Defined in:
lib/effective_resources.rb,
lib/effective_resources/engine.rb,
lib/effective_resources/version.rb,
lib/generators/effective_resources/install_generator.rb

Defined Under Namespace

Modules: Generators Classes: Engine

Constant Summary collapse

VERSION =
'1.8.24'.freeze

Class Method Summary collapse

Class Method Details

.advance_date(date, business_days: 1, holidays: [:ca, :observed]) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/effective_resources.rb', line 49

def self.advance_date(date, business_days: 1, holidays: [:ca, :observed])
  raise('business_days must be an integer <= 365') unless business_days.kind_of?(Integer) && business_days <= 365

  business_days.times do
    loop do
      date = date + 1.day
      break if business_day?(date, holidays: holidays)
    end
  end

  date
end

.authorize!(controller, action, resource) ⇒ Object



26
27
28
# File 'lib/effective_resources.rb', line 26

def self.authorize!(controller, action, resource)
  raise Effective::AccessDenied.new('Access Denied', action, resource) unless authorized?(controller, action, resource)
end

.authorized?(controller, action, resource) ⇒ Boolean

Returns:

  • (Boolean)


13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/effective_resources.rb', line 13

def self.authorized?(controller, action, resource)
  @exceptions ||= [Effective::AccessDenied, (CanCan::AccessDenied if defined?(CanCan)), (Pundit::NotAuthorizedError if defined?(Pundit))].compact

  return !!authorization_method unless authorization_method.respond_to?(:call)
  controller = controller.controller if controller.respond_to?(:controller)

  begin
    !!(controller || self).instance_exec((controller || self), action, resource, &authorization_method)
  rescue *@exceptions
    false
  end
end

.business_day?(date, holidays: [:ca, :observed]) ⇒ Boolean

Returns:

  • (Boolean)


62
63
64
65
# File 'lib/effective_resources.rb', line 62

def self.business_day?(date, holidays: [:ca, :observed])
  require 'holidays' unless defined?(Holidays)
  date.wday != 0 && date.wday != 6 && Holidays.on(date, *holidays).blank?
end

.config_keysObject



7
8
9
# File 'lib/effective_resources.rb', line 7

def self.config_keys
  [:authorization_method, :default_submits]
end

.default_submitsObject



30
31
32
# File 'lib/effective_resources.rb', line 30

def self.default_submits
  (['Save', 'Continue', 'Add New'] & Array(config.default_submits)).inject({}) { |h, v| h[v] = true; h }
end

.deliver_methodObject



44
45
46
47
# File 'lib/effective_resources.rb', line 44

def self.deliver_method
  config = Rails.application.config
  (config.respond_to?(:active_job) && config.active_job.queue_adapter) ? :deliver_later : :deliver_now
end

.truthy?(value) ⇒ Boolean

Utilities

Returns:

  • (Boolean)


36
37
38
39
40
41
42
# File 'lib/effective_resources.rb', line 36

def self.truthy?(value)
  if defined?(::ActiveRecord::ConnectionAdapters::Column::TRUE_VALUES)  # Rails <5
    ::ActiveRecord::ConnectionAdapters::Column::TRUE_VALUES.include?(value)
  else
    ::ActiveRecord::Type::Boolean.new.cast(value)
  end
end