class RuboCop::Cop::Chef::Modernize::DefaultActionFromInitialize

The default actions can now be specified using the `default_action` helper instead of using the @action 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
   @action = :create
 end

 #### incorrect
 def initialize(*args)
   super
   @default_action = :create
 end

#### correct
default_action :create

Constants

MSG

Public Instance Methods

on_ivasgn(node) click to toggle source
# File lib/rubocop/cop/chef/modernize/default_action_initializer.rb, line 55
def on_ivasgn(node)
  action_variable_assignment?(node) do
    return unless initialize_method(node.parent.parent)
    add_offense(node, message: MSG, severity: :refactor) do |corrector|
      # insert the new default_action call above the initialize method, but not if one already exists (this is sadly common)
      unless default_action_method?(processed_source.ast)
        initialize_node = initialize_method(processed_source.ast).first
        corrector.insert_before(initialize_node.source_range, "default_action #{node.descendants.first.source}\n\n")
      end

      # remove the variable from the initialize method
      corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
    end
  end
end