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