module EffectiveResources

Constants

VERSION

Public Class Methods

advance_date(date, business_days: 1, holidays: [:ca, :observed]) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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]) click to toggle source
# 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_keys() click to toggle source
# File lib/effective_resources.rb, line 7
def self.config_keys
  [:authorization_method, :default_submits]
end
default_submits() click to toggle source
# 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_method() click to toggle source
# 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) click to toggle source

Utilities

# 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