Class: RuboCop::Cop::Rails::Exit
- Inherits:
-
Base
- Object
- Base
- RuboCop::Cop::Rails::Exit
- Includes:
- ConfigurableEnforcedStyle
- Defined in:
- lib/rubocop/cop/rails/exit.rb
Overview
Enforces that exit and abort calls are not used within a rails app.
Valid options are instead to raise an error, break, return, or some
other form of stopping execution of current request.
There are two obvious cases where exit is particularly harmful:
- Usage in library code for your application. Even though Rails will
rescue from a
SystemExitand continue on, unit testing that library code will result in specs exiting (potentially silently ifexit(0)is used.) - Usage in application code outside of the web process could result in the program exiting, which could result in the code failing to run and do its job.
Constant Summary collapse
- MSG =
'Do not use `%<current>s` in Rails applications.'- RESTRICT_ON_SEND =
%i[exit exit! abort].freeze
- EXPLICIT_RECEIVERS =
%i[Kernel Process].freeze
Instance Method Summary collapse
Instance Method Details
#on_send(node) ⇒ Object
33 34 35 36 37 38 |
# File 'lib/rubocop/cop/rails/exit.rb', line 33 def on_send(node) return unless offending_node?(node) = format(MSG, current: node.method_name) add_offense(node.loc.selector, message: ) end |