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