class RuboCop::Cop::Chef::Modernize::ResourceNameFromInitialize
The resource name can now be specified using the ‘resource_name` helper instead of using the @resource_name variable in the resource provider initialize method. In general we recommend against writing HWRPs, but if HWRPs are necessary you should utilize as much of the resource DSL as possible.
@example
### incorrect def initialize(*args) super @resource_name = :foo end ### correct resource_name :create
Constants
- MSG
Public Instance Methods
Source
# File lib/rubocop/cop/chef/modernize/resource_name_initializer.rb, line 41 def on_def(node) return unless node.method?(:initialize) return if node.body.nil? # nil body is an empty initialize method node.body.each_node do |x| next unless x.assignment? && !x.node_parts.empty? && x.node_parts.first == :@resource_name add_offense(x, severity: :refactor) do |corrector| # insert the new resource_name call above the initialize method initialize_node = initialize_method(processed_source.ast).first corrector.insert_before(initialize_node.source_range, "resource_name #{x.descendants.first.source}\n\n") # remove the variable from the initialize method corrector.remove(range_with_surrounding_space(range: x.loc.expression, side: :left)) end end end