Sha256: 081ce3a670121e8f0a031a590aed8b170744c66dd0da2937f498007e73740f28

Contents?: true

Size: 1.5 KB

Versions: 2

Compression:

Stored size: 1.5 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
      return if !sanity_check([])
      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 (ARGV[0] =~ /assets:/) == 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.table_exists?
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rolify-4.1.1 lib/rolify/configure.rb
rolify-4.1.0 lib/rolify/configure.rb