module ErpBaseErpSvcs
gives the ability to execute code before and after instance method, the methods on which to attach code can be passed declaritive using this marco class Foo
acts_as_aspector_on :bar def bar puts "bar" end before :bar do |foo| #foo is the object invoking bar puts "before bar" end after :bar do |foo, result| # result is the return from foo.bar puts "after bar" end
end
Public Class Methods
engine_loaded?(engine_name)
click to toggle source
engine_name should be module/class name (i.e. ErpSearch)
# File lib/erp_base_erp_svcs.rb, line 17 def engine_loaded?(engine_name) installed_engines.map { |compass_ae_engine| compass_ae_engine.railtie_name.camelize }.include?(engine_name) end
installed_engines()
click to toggle source
# File lib/erp_base_erp_svcs.rb, line 12 def installed_engines ErpBaseErpSvcs::Config.compass_ae_engines end
load_compass_ae_engine(engine)
click to toggle source
# File lib/erp_base_erp_svcs.rb, line 42 def load_compass_ae_engine(engine) installed_engines << engine unless installed_engines.include?(engine) load_compass_ae_extensions(engine) end
load_compass_ae_extensions(engine)
click to toggle source
forces rails to reload model extensions and framework extensions
# File lib/erp_base_erp_svcs.rb, line 48 def load_compass_ae_extensions(engine) load_compass_ae_model_extensions(engine) load_compass_ae_framework_extensions(engine) end
load_compass_ae_framework_extensions(engine)
click to toggle source
# File lib/erp_base_erp_svcs.rb, line 107 def load_compass_ae_framework_extensions(engine) if File.directory? File.join(engine.root,"lib",engine.railtie_name,"extensions/compass_ae") Dir.glob(File.join(engine.root,"lib",engine.railtie_name,"extensions/compass_ae/**/*.rb")).each do |file| load file end end end
load_compass_ae_model_extensions(engine)
click to toggle source
# File lib/erp_base_erp_svcs.rb, line 53 def load_compass_ae_model_extensions(engine) root_models_path = "#{Rails.root}/app/models/" engine_path = engine.root.to_s engine_models_path = "#{engine_path}/app/models/" engine_extensions_path = "#{engine_models_path}extensions/" begin #get all files from this engines app/model directory model_extension_files = Dir.entries(engine_extensions_path).map{|directory| directory} #remove any .svn or .data files model_extension_files.delete_if{|name| name =~ /^\./} #Must use eval to run each extension so rails picks up the extension model_extension_files.each do |filename| #check if table exists content = File.open(engine_extensions_path + filename) { |f| f.read } class_name = filename[0..-4] #if tables.include?(class_name.tableize) eval(IO.read(engine_extensions_path + filename), binding, engine_extensions_path + filename) #end end end if File.directory? engine_extensions_path begin #get all files from this engines app/model directory model_files = Dir.entries(engine_models_path).map{|directory| directory} #remove any .svn or .data files model_files.delete_if{|name| name =~ /^\./} #exclude the extension directory model_files.delete_if{|name| name == "extensions"} model_files.each do |filename| class_name = filename[0..-4] klass = class_name.camelize #if there is a model in {rails_root}/app/models, it's not going to load our engine models. #load the engine model here and change it to a class_eval if File.exists?(root_models_path + filename) content = File.open(engine_models_path + filename) { |f| f.read } #make sure this class extends ActiveRecord::Base #we only want to do this for ActiveRecord models if content.include? '< ActiveRecord::Base' #if tables.include?(class_name.tableize) content.gsub!("class #{klass} < ActiveRecord::Base", "#{klass}.class_eval do") eval(content, binding) #end end end end end if File.directory? engine_models_path end
load_root_compass_ae_framework_extensions()
click to toggle source
# File lib/erp_base_erp_svcs.rb, line 115 def load_root_compass_ae_framework_extensions Dir.glob(File.join(Rails.root,"lib/extensions/compass_ae/**/*.rb")).sort.each do |file| load file end end
mount_compass_ae_engines(routes)
click to toggle source
# File lib/erp_base_erp_svcs.rb, line 30 def mount_compass_ae_engines(routes) installed_engines.each do |engine| routes.mount engine => "/#{engine.name.split("::").first.underscore}" end end
register_as_compass_ae_engine(config, engine)
click to toggle source
# File lib/erp_base_erp_svcs.rb, line 36 def register_as_compass_ae_engine(config, engine) setup_compass_ae_callback(config, engine) do |engine| ErpBaseErpSvcs.load_compass_ae_engine(engine) end end
setup_compass_ae_callback(config, engine, &block)
click to toggle source
# File lib/erp_base_erp_svcs.rb, line 21 def setup_compass_ae_callback(config, engine, &block) config.before_initialize do callback = (Rails.application.config.cache_classes ? 'after_initialize' : 'to_prepare') config.send(callback) do block.call(engine) end end end
version()
click to toggle source
# File lib/erp_base_erp_svcs/version.rb, line 10 def self.version ErpBaseErpSvcs::VERSION::STRING end