Sha256: 0ce7dda953a77fee24272469b9c9a1de802b4f90f874ff6c33ea776576f77a09

Contents?: true

Size: 1.49 KB

Versions: 3

Compression:

Stored size: 1.49 KB

Contents

module Rolify
  module Configure
    @@dynamic_shortcuts = false
    @@orm = "active_record"
    @@remove_role_if_empty = true

    def configure(*role_cnames)
      return if !sanity_check(role_cnames)
      yield self if block_given?
    end

    def dynamic_shortcuts
      @@dynamic_shortcuts
    end

    def dynamic_shortcuts=(is_dynamic)
      @@dynamic_shortcuts = is_dynamic
    end

    def orm
      @@orm
    end

    def orm=(orm)
      @@orm = orm
    end

    def use_mongoid
      self.orm = "mongoid"
    end

    def use_dynamic_shortcuts
      self.dynamic_shortcuts = true
    end

    def use_defaults
      configure do |config|
        config.dynamic_shortcuts = false
        config.orm = "active_record"
      end
    end

    def remove_role_if_empty=(is_remove)
      @@remove_role_if_empty = is_remove
    end

    def remove_role_if_empty
      @@remove_role_if_empty
    end

    private

    def sanity_check(role_cnames)
      return true if "assets:precompile"==ARGV[0]

      role_cnames = [ "Role" ] if role_cnames.empty?
      role_cnames.each do |role_cname|
        role_class = role_cname.constantize
        if role_class.superclass.to_s == "ActiveRecord::Base" && role_table_missing?(role_class)
          warn "[WARN] table '#{role_cname}' doesn't exist. Did you run the migration ? Ignoring rolify config."
          return false
        end
      end
      true
    end

    def role_table_missing?(role_class)
      role_class.connected? && !role_class.table_exists?
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rolify-3.5.2 lib/rolify/configure.rb
rolify-3.5.1 lib/rolify/configure.rb
rolify-3.5.0 lib/rolify/configure.rb