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` 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 ‘SystemExit` and continue on, unit testing that library code will result in specs exiting (potentially silently if `exit(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 `exit` in Rails applications.'
- RESTRICT_ON_SEND =
%i[exit exit!].freeze
- EXPLICIT_RECEIVERS =
%i[Kernel Process].freeze
Instance Method Summary collapse
Instance Method Details
#on_send(node) ⇒ Object
33 34 35 |
# File 'lib/rubocop/cop/rails/exit.rb', line 33 def on_send(node) add_offense(node.loc.selector) if offending_node?(node) end |