Sha256: a51c74a6b759de6a83583ab32f6cb18e3891ad085d19084289c821075ba67f61

Contents?: true

Size: 1.2 KB

Versions: 2

Compression:

Stored size: 1.2 KB

Contents

module Canard

  class << self
    # A string specifying the location that should be searched for ability
    # definitions. By default, Canard will attempt to load abilities from
    # Rails.root + /abilities/.
    attr_writer :abilities_path
    
    def abilities_path 
      @abilities_path ||= 'abilities'
    end
    
    def ability_definitions
      Abilities.definitions
    end
    
    def abilities_for(role, &block)
      ::ActiveSupport::Deprecation.warn("abilities_for is deprecated and will be removed from Canard 0.4.0. Use Canard::Abilities.for and move the definitions to app/abilities.")
      ability_definitions[role] = block
    end

  end

  def self.load_paths
    Abilities.definition_paths.map { |path| File.expand_path(path) }
  end

  # TODO remove at version 0.4.0
  def self.find_abilities #:nodoc:
    absolute_abilities_path = File.expand_path(abilities_path)

    if File.directory? absolute_abilities_path
      Dir[File.join(absolute_abilities_path, '**', '*.rb')].sort.each do |file|
        self.class_eval File.read(file)
      end
    end
    
    load_paths.each do |path|
      Dir[File.join(path, '**', '*.rb')].sort.each do |file|
        load file
      end
    end

  end
  
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
canard-0.3.7 lib/canard/find_abilities.rb
canard-0.3.6 lib/canard/find_abilities.rb