OSDN Git Service

69ea996241fb631ebeb8e55c12fd46cb0e91804c
[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, :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       @controllers = Controller.load(self, @global_json, 'controllers')
20       @models = Model.load(self, @global_json, 'models')
21     end
22     
23     def system_resources_init
24       @system_resources.init
25     end
26     
27     def load_models_manifest
28       @models.each do |model_name, model|
29         model.classify.load_manifest
30       end
31     end
32     
33   end
34   
35   module ModuleMethods
36     def manifest
37       Manifest.manifest
38     end
39     
40     def load global_json
41       Manifest.manifest = Manifest.new global_json
42     end
43     
44     def item_name_to_model item_name
45       item_name.classify.constantize
46     end
47     
48     def singularize name
49       name.singularize
50     end
51     
52     def pluralize name
53       name.pluralize
54     end
55     
56   end
57
58   extend ModuleMethods
59 end
60