OSDN Git Service

separate manifest
[pettanr/pettanr.git] / lib / manifest / manifest.rb
1 module Manifest
2   class Manifest
3     cattr_accessor :manifest
4     attr :system_resources, :magic_numbers,
5       :controllers, :models
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       @global_json = global_json || {}
11       @system_resources = SystemResource.new(self, SystemResource.set_default(@global_json['system_resources']))
12       @magic_numbers = @global_json['magic_numbers']
13     end
14     
15     def init
16       # managers can't initialize before load  application.rb
17       return unless defined? ::Pettanr
18       @controllers = Controller.manager(self, @global_json['controllers'] || {})
19       @models = Model.manager(self, @global_json['models'] || {})
20     end
21     
22     def system_resources_init
23       @system_resources.init
24     end
25     
26     def load_models_manifest
27       @models.each do |model_name, model|
28         model.classify.load_manifest
29       end
30     end
31     
32   end
33   
34   module ModuleMethods
35     def manifest
36       Manifest.manifest
37     end
38     
39     def load global_json
40       Manifest.manifest = Manifest.new global_json
41     end
42     
43     def item_name_to_model item_name
44       item_name.classify.constantize
45     end
46     
47     def singularize name
48       name.singularize
49     end
50     
51     def pluralize name
52       name.pluralize
53     end
54     
55   end
56
57   extend ModuleMethods
58 end
59