lib/fusuma/plugin/base.rb in fusuma-3.0.0 vs lib/fusuma/plugin/base.rb in fusuma-3.1.0

- old
+ new

@@ -29,34 +29,40 @@ # @return [Hash] def config_param_types raise NotImplementedError, "override #{self.class.name}##{__method__}" end + # @param key [Symbol] + # @param base [Config::Index] # @return [Object] - def config_params(key = nil, base: config_index) - params = Config.search(base) || {} + def config_params(key = nil) + @config_params ||= {} + if @config_params["#{config_index.cache_key},#{key}"] + return @config_params["#{config_index.cache_key},#{key}"] + end + params = Config.instance.fetch_config_params(key, config_index) + return params unless key - @config_params ||= {} - @config_params["#{base.cache_key},#{key}"] ||= + @config_params["#{config_index.cache_key},#{key}"] = params.fetch(key, nil).tap do |val| next if val.nil? # NOTE: Type checking for config.yml param_types = Array(config_param_types.fetch(key)) next if param_types.any? { |klass| val.is_a?(klass) } MultiLogger.error("Please fix config.yml.") - MultiLogger.error(":#{base.keys.map(&:symbol) + MultiLogger.error(":#{config_index.keys.map(&:symbol) .join(" => :")} => :#{key} should be #{param_types.join(" OR ")}.") exit 1 end end def config_index - Config::Index.new(self.class.name.gsub("Fusuma::", "").underscore.split("/")) + @config_index ||= Config::Index.new(self.class.name.gsub("Fusuma::", "").underscore.split("/")) end end end end