@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
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
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?
{}