Sha256: 22377d3e7a9aca29a4095d9bb4d948510f5862b488fb9f4f80cce639c2e31dfa
Contents?: true
Size: 1.65 KB
Versions: 4
Compression:
Stored size: 1.65 KB
Contents
module CmpaAuth # Constrói uma lista de modelos que já existem na aplicação. implemented_klasses = Authentication::CLASS_NAMES.select do |klass| File.exists? File.join(Rails.root, 'app', 'models', klass.underscore + '.rb') end # Este bloco será executado de duas formas distintas: # * Em desenvolvimento será executado cada vez que a aplicação for recarregada (a cada novo request) # * Em produção será chamado somente uma vez para cada um dos modelos (assim que a aplicação for inicializada) ::ActionController::Dispatcher.to_prepare do Authentication::CLASS_NAMES.each do |klass| # Módulo correspondente a classe em questão. e.g.: classe Pessoa, módulo CmpaAuth::Models::Pessoa. module_const = "CmpaAuth::Models::#{klass}".constantize if implemented_klasses.include? klass klass.constantize.send(:include, module_const) # O modelo não foi definido na aplicação, então deve-se criá-lo dinamicamente. else # Descobre qual a superclasse do modelo. Funcionário e Estagiário tem como superclasse a classe Pessoa. superclass = %w[Estagiario Funcionario].include?(klass) ? ::Pessoa : ActiveRecord::Base klass_const = Class.new(superclass) # Para se evitar warnings no console no ambiente de desenvolvimento, remove-se o "nome" # da classe antes de setá-la novamente. Object.send(:remove_const, klass) if Object.const_defined?(klass) Object.const_set(klass, klass_const).send(:include, module_const) end end end end ::ActionController::Base.send(:include, CmpaAuth::RailsHelpers)
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
cmpa_auth-1.0.6 | lib/cmpa_auth/extensions.rb |
cmpa_auth-1.0.5 | lib/cmpa_auth/extensions.rb |
cmpa_auth-1.0.4 | lib/cmpa_auth/extensions.rb |
cmpa_auth-1.0.3 | lib/cmpa_auth/extensions.rb |