OSDN Git Service

fix profiler extend system
[pettanr/pettanr.git] / lib / locmare / booster.rb
index cf2ed47..e86bf6d 100644 (file)
@@ -7,8 +7,10 @@ module Locmare
       @item = item
       # no check
       # return false unless self.resource.enable?
-      @item.extend self.engine_extend_module
-      @item.__send__ @manifest.setter_method_name, self.parsed_settings
+      if self.extendable?
+        @item.extend self.engine_extend_module
+        @item.__send__ @manifest.setter_method_name, self.parsed_settings
+      end
     end
     
     # get engine resource from system resource manifest
@@ -45,6 +47,10 @@ module Locmare
       Object.const_get self.class_name
     end
     
+    def extendable?
+      self.engine_module.constants.include? @manifest.extend_module_name.to_sym
+    end
+    
     # extend module in engine
     # ex) CircleSpeechBalloon::SpeechBalloonModule
     def engine_extend_module
@@ -57,13 +63,23 @@ module Locmare
       self.engine_module.const_get @manifest.extend_model_name
     end
     
+    def check_resource
+      @item.attributes[@manifest.foreign_key].blank? == false
+    end
+    
     # get system resource instance
     def resource
-      r = @item.__send__ @manifest.name
-      raise 'resource not found' unless r
+      raise 'blank foreign_key ' + @manifest.name unless self.check_resource
+      r = @item.__send__ @manifest.resource_name
+      raise 'resource not found' + @manifest.resource_name unless r
       r
     end
     
+    # get extend instance
+    def extend_item
+      @item.__send__ @manifest.getter_method_name
+    end
+    
     def parsed_settings
       if self.settings.blank?
         {}