Sha256: 0b5c345d5ad5725ce8fe8365c7c16224f3d785c4cccc754c3d7a217e56dc71be

Contents?: true

Size: 1.03 KB

Versions: 6

Compression:

Stored size: 1.03 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_accessor :abilities_path
    
    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.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
    
    Abilities.definition_paths.each do |path|
      Dir[File.join(Rails.root, path, '**', '*.rb')].sort.each do |file|
        load file
      end
    end

  end
  
  
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
canard-0.2.7 lib/canard/find_abilities.rb
canard-0.2.5 lib/canard/find_abilities.rb
canard-0.2.4 lib/canard/find_abilities.rb
canard-0.2.3 lib/canard/find_abilities.rb
canard-0.2.2 lib/canard/find_abilities.rb
canard-0.2.1 lib/canard/find_abilities.rb