X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=lib%2Flocmare%2Fbooster.rb;h=a8201d4aa9271e2f6e330435d7be62632dcf499a;hb=5d4a84528ce84792699f6987262d3b8ac5453b52;hp=c4bf673d3119bfdd37975c50eb2e562ebccdbfb6;hpb=273f96483fd997dd3be15f926be0d88db9e9c308;p=pettanr%2Fpettanr.git diff --git a/lib/locmare/booster.rb b/lib/locmare/booster.rb index c4bf673d..a8201d4a 100644 --- a/lib/locmare/booster.rb +++ b/lib/locmare/booster.rb @@ -7,25 +7,31 @@ 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 - @boosted = true + if self.extendable? + @item.extend self.engine_extend_module + @item.__send__ @manifest.setter_method_name, self.parsed_settings + end end - def boosted? - @boosted + def engine_resource_name + @manifest.engine_resource_name || self.resource.table_name end # get engine resource from system resource manifest def my_engine_resource - Manifest.manifest.system_resources.engine_resources[@item.table_name] + Manifest.manifest.system_resources.engine_resources[self.engine_resource_name] + end + + def engine_classname + return self.resource.classname unless @manifest.engine_resource_extend_column_name + self.resource.attributes[@manifest.engine_resource_extend_column_name] end # get snake_case engine name # ex) circle_speech_balloon # use to url, model_name generating def engine_name - self.my_engine_resource.resource_items[@item.classname] + self.my_engine_resource.resource_items[self.engine_classname] end def model_name @@ -33,7 +39,7 @@ module Locmare end def enable? - self.my_engine_resource.resource_items.include? @item.classname + self.my_engine_resource.resource_items.include? self.class_name end # get engine's module name @@ -50,6 +56,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 @@ -62,13 +72,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? {}