Module: ErpBaseErpSvcs

Defined in:
lib/erp_base_erp_svcs/extensions/core/acts_as_aspector_on.rb,
lib/erp_base_erp_svcs.rb,
lib/erp_base_erp_svcs/config.rb,
lib/erp_base_erp_svcs/engine.rb,
lib/erp_base_erp_svcs/version.rb,
lib/erp_base_erp_svcs/time_zone_helper.rb,
lib/erp_base_erp_svcs/extensions/core/numbers.rb,
app/helpers/erp_base_erp_svcs/application_helper.rb,
lib/erp_base_erp_svcs/extensions/active_record/has_notes.rb,
lib/erp_base_erp_svcs/extensions/active_record/has_contacts.rb,
lib/erp_base_erp_svcs/extensions/active_record/is_tenantable.rb,
lib/erp_base_erp_svcs/extensions/active_record/is_describable.rb,
lib/erp_base_erp_svcs/extensions/active_record/has_party_roles.rb,
lib/erp_base_erp_svcs/extensions/active_record/acts_as_category.rb,
lib/erp_base_erp_svcs/extensions/active_record/acts_as_erp_type.rb,
lib/erp_base_erp_svcs/extensions/active_record/acts_as_facility.rb,
lib/erp_base_erp_svcs/extensions/active_record/can_be_generated.rb,
lib/erp_base_erp_svcs/extensions/active_record/acts_as_note_type.rb,
lib/erp_base_erp_svcs/extensions/active_record/sti_instantiation.rb,
lib/erp_base_erp_svcs/extensions/active_record/has_tracked_status.rb,
lib/erp_base_erp_svcs/extensions/active_record/acts_as_fixed_asset.rb,
lib/erp_base_erp_svcs/extensions/active_record/is_contact_mechanism.rb,
app/controllers/erp_base_erp_svcs/shared/units_of_measurement_controller.rb,
lib/erp_base_erp_svcs/extensions/active_record/tracks_created_by_updated_by.rb

Overview

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

Defined Under Namespace

Modules: ApplicationHelper, Config, Extensions, Helpers, Shared, VERSION Classes: Engine

Constant Summary collapse

@@root_engine_loaded =
false

Class Method Summary collapse

Class Method Details

.engine_loaded?(engine_name) ⇒ Boolean

engine_name should be module/class name (i.e. ErpSearch)

Returns:

  • (Boolean)


17
18
19
# 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_enginesObject



12
13
14
# File 'lib/erp_base_erp_svcs.rb', line 12

def installed_engines
  ErpBaseErpSvcs::Config.compass_ae_engines
end

.load_compass_ae_engine(engine) ⇒ Object



42
43
44
45
# 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) ⇒ Object

forces rails to reload model extensions and framework extensions



48
49
50
51
# 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) ⇒ Object



107
108
109
110
111
112
113
# 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) ⇒ Object



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# 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_extensionsObject



115
116
117
118
119
# 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) ⇒ Object



30
31
32
33
34
# 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) ⇒ Object



36
37
38
39
40
# 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) ⇒ Object



21
22
23
24
25
26
27
28
# 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

.versionObject



10
11
12
# File 'lib/erp_base_erp_svcs/version.rb', line 10

def self.version
  ErpBaseErpSvcs::VERSION::STRING
end