3 cattr_accessor :manifest
4 attr :system_resources, :magic_numbers,
5 :items, :controllers, :models, :module_names,
6 :inflectors, :singulars, :plurals
7 # call me before load routes.rb
8 # routes.rb needs engine_resources manifest in system_resources
9 # ex. it's adding license_groups routes
10 def initialize global_json
12 @global_json = global_json || {}
13 @system_resources = SystemResource.new(self, SystemResource.set_default(@global_json['system_resources']))
14 @magic_numbers = @global_json['magic_numbers']
18 # managers can't initialize before load application.rb
19 return unless defined? ::Pettanr
20 @inflectors = @global_json['inflectors']
23 @inflectors.each do |item_name, table_name|
24 @item_names[item_name] = table_name # monkey copy
25 @table_names[table_name] = item_name
27 @items = ManifestBase.load_type_name_args(self, @global_json, 'items', ItemFactory)
28 @controllers = Controller.load(self, @global_json, 'controllers')
29 @models = Model.load(self, @global_json, 'models')
32 def init_after_load_manifest
33 @system_resources.init
36 def load_models_manifest
37 @models.each do |model_name, model|
39 next unless @items[model.name]
40 model.classify.load_manifest
44 # table_name to item_name
45 def singularize table_name
46 @table_names[table_name]
49 # item_name to table_name
50 def pluralize item_name
51 @item_names[item_name]
62 Manifest.manifest = Manifest.new global_json
65 def item_name_to_model item_name
66 item_name.classify.constantize