OSDN Git Service

fix deploy
[pettanr/pettanr.git] / lib / manifest / manifest.rb
1 module Manifest
2   class Manifest
3     cattr_accessor :manifest
4     attr :system_resources, :magic_numbers,
5       :items, :controllers, :models, :module_names
6     # call me before load routes.rb
7     # routes.rb needs engine_resources manifest in system_resources
8     # ex. it's adding license_groups routes
9     def initialize global_json
10       @module_names = []
11       @global_json = global_json || {}
12       @system_resources = SystemResource.new(self, SystemResource.set_default(@global_json['system_resources']))
13       @magic_numbers = @global_json['magic_numbers']
14     end
15     
16     def init
17       # managers can't initialize before load  application.rb
18       return unless defined? ::Pettanr
19       @items = ManifestBase.load_type_name_args(self, @global_json, 'items', ItemFactory)
20       @controllers = Controller.load(self, @global_json, 'controllers')
21       @models = Model.load(self, @global_json, 'models')
22     end
23     
24     def init_after_load_manifest
25       @system_resources.init
26       # 
27       @items.each do |name, peta_manifest|
28         peta_manifest.init_after_load_manifest
29       end
30     end
31     
32     def load_models_manifest
33       @models.each do |model_name, model|
34         # skip extend model.
35         next unless @items[model.name]
36         model.classify.load_manifest
37       end
38     end
39     
40   end
41   
42   module ModuleMethods
43     def manifest
44       Manifest.manifest
45     end
46     
47     def load global_json
48       Manifest.manifest = Manifest.new global_json
49     end
50     
51     def item_name_to_model item_name
52       item_name.classify.constantize
53     end
54     
55     def singularize name
56       name.singularize
57     end
58     
59     def pluralize name
60       name.pluralize
61     end
62     
63   end
64
65   extend ModuleMethods
66 end
67