Skip to content

Commit d370a2a

Browse files
authored
Fix several RuboCop TODO items (#3478)
Handle the simple and straightforward fixes: - Lint/AmbiguousBlockAssociation - Lint/AssignmentInCondition - Lint/DuplicateMethods - Lint/RequireParentheses - Naming/HeredocDelimiterNaming
1 parent f92bdc5 commit d370a2a

23 files changed

+76
-106
lines changed

.rubocop_todo.yml

-48
Original file line numberDiff line numberDiff line change
@@ -6,48 +6,12 @@
66
# Note that changes in the inspected code, or installation of new
77
# versions of RuboCop, may require this file to be generated again.
88

9-
# Offense count: 1
10-
# Configuration parameters: IgnoredMethods.
11-
Lint/AmbiguousBlockAssociation:
12-
Exclude:
13-
- "spec/rails_admin/install_generator_spec.rb"
14-
15-
# Offense count: 18
16-
# Configuration parameters: AllowSafeAssignment.
17-
Lint/AssignmentInCondition:
18-
Exclude:
19-
- "app/controllers/rails_admin/main_controller.rb"
20-
- "app/helpers/rails_admin/application_helper.rb"
21-
- "lib/rails_admin/abstract_model.rb"
22-
- "lib/rails_admin/adapters/active_record.rb"
23-
- "lib/rails_admin/config/actions/export.rb"
24-
- "lib/rails_admin/config/actions/index.rb"
25-
- "lib/rails_admin/config/actions/new.rb"
26-
- "lib/rails_admin/config/fields/factories/active_storage.rb"
27-
- "lib/rails_admin/config/fields/factories/association.rb"
28-
- "lib/rails_admin/config/fields/factories/carrierwave.rb"
29-
- "lib/rails_admin/config/fields/factories/devise.rb"
30-
- "lib/rails_admin/config/fields/factories/dragonfly.rb"
31-
- "lib/rails_admin/config/fields/factories/paperclip.rb"
32-
- "lib/rails_admin/config/fields/types/datetime.rb"
33-
- "spec/dummy_app/db/seeds.rb"
34-
359
# Offense count: 51
3610
# Configuration parameters: AllowedMethods.
3711
# AllowedMethods: enums
3812
Lint/ConstantDefinitionInBlock:
3913
Enabled: false
4014

41-
# Offense count: 1
42-
Lint/DuplicateMethods:
43-
Exclude:
44-
- "lib/rails_admin/config.rb"
45-
46-
# Offense count: 1
47-
Lint/RequireParentheses:
48-
Exclude:
49-
- "spec/spec_helper.rb"
50-
5115
# Offense count: 1
5216
Lint/ReturnInVoidContext:
5317
Exclude:
@@ -71,18 +35,6 @@ Naming/AccessorMethodName:
7135
- "app/controllers/rails_admin/main_controller.rb"
7236
- "lib/rails_admin/abstract_model.rb"
7337

74-
# Offense count: 6
75-
# Configuration parameters: ForbiddenDelimiters.
76-
# ForbiddenDelimiters: (?-mix:(^|\s)(EO[A-Z]{1}|END)(\s|$))
77-
Naming/HeredocDelimiterNaming:
78-
Exclude:
79-
- "app/controllers/rails_admin/main_controller.rb"
80-
- "lib/rails_admin/adapters/mongoid.rb"
81-
- "lib/rails_admin/config/fields/base.rb"
82-
- "lib/rails_admin/engine.rb"
83-
- "lib/rails_admin/extensions/paper_trail/auditing_adapter.rb"
84-
- "spec/factories.rb"
85-
8638
# Offense count: 2
8739
# Configuration parameters: EnforcedStyleForLeadingUnderscores.
8840
# SupportedStylesForLeadingUnderscores: disallowed, required, optional

app/controllers/rails_admin/main_controller.rb

+2-3
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,8 @@ def bulk_action
1313

1414
def list_entries(model_config = @model_config, auth_scope_key = :index, additional_scope = get_association_scope_from_params, pagination = !(params[:associated_collection] || params[:all] || params[:bulk_ids]))
1515
scope = model_config.scope
16-
if auth_scope = @authorization_adapter&.query(auth_scope_key, model_config.abstract_model)
17-
scope = scope.merge(auth_scope)
18-
end
16+
auth_scope = @authorization_adapter&.query(auth_scope_key, model_config.abstract_model)
17+
scope = scope.merge(auth_scope) if auth_scope
1918
scope = scope.instance_eval(&additional_scope) if additional_scope
2019
get_collection(model_config, scope, pagination)
2120
end

lib/rails_admin/abstract_model.rb

+2-3
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,8 @@ def each_associated_children(object)
8686
associations.each do |association|
8787
case association.type
8888
when :has_one
89-
if child = object.send(association.name)
90-
yield(association, [child])
91-
end
89+
child = object.send(association.name)
90+
yield(association, [child]) if child
9291
when :has_many
9392
children = object.send(association.name)
9493
yield(association, Array.new(children))

lib/rails_admin/adapters/active_record.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ def new(params = {})
1313
end
1414

1515
def get(id, scope = scoped)
16-
return unless object = scope.where(primary_key => id).first
16+
object = scope.where(primary_key => id).first
17+
return unless object
1718

1819
object.extend(ObjectExtension)
1920
end

lib/rails_admin/adapters/mongoid.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,10 @@ def all(options = {}, scope = nil)
5252
scope
5353
rescue NoMethodError => e
5454
if /page/.match?(e.message)
55-
e = e.exception <<-EOM.gsub(/^\s{12}/, '')
55+
e = e.exception <<-ERROR.gsub(/^\s{12}/, '')
5656
#{e.message}
5757
If you don't have kaminari-mongoid installed, add `gem 'kaminari-mongoid'` to your Gemfile.
58-
EOM
58+
ERROR
5959
end
6060
raise e
6161
end

lib/rails_admin/config.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ class << self
3939
attr_accessor :included_models
4040

4141
# Fields to be hidden in show, create and update views
42-
attr_accessor :default_hidden_fields
42+
attr_reader :default_hidden_fields
4343

4444
# Default items per page value used if a model level option has not
4545
# been configured

lib/rails_admin/config/actions/export.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ class Export < RailsAdmin::Config::Actions::Base
1414

1515
register_instance_option :controller do
1616
proc do
17-
if format = params[:json] && :json || params[:csv] && :csv || params[:xml] && :xml
17+
format = params[:json] && :json || params[:csv] && :csv || params[:xml] && :xml
18+
if format
1819
request.format = format
1920
@schema = HashHelper.symbolize(params[:schema].slice(:except, :include, :methods, :only).permit!.to_h) if params[:schema] # to_json and to_xml expect symbols for keys AND values.
2021
@objects = list_entries(@model_config, :export)

lib/rails_admin/config/actions/index.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ class Index < RailsAdmin::Config::Actions::Base
2020

2121
register_instance_option :breadcrumb_parent do
2222
parent_model = bindings[:abstract_model].try(:config).try(:parent)
23-
if am = parent_model && RailsAdmin.config(parent_model).try(:abstract_model)
23+
am = parent_model && RailsAdmin.config(parent_model).try(:abstract_model)
24+
if am
2425
[:index, am]
2526
else
2627
[:dashboard]

lib/rails_admin/config/actions/new.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ class New < RailsAdmin::Config::Actions::Base
2121
@authorization_adapter&.attributes_for(:new, @abstract_model)&.each do |name, value|
2222
@object.send("#{name}=", value)
2323
end
24-
if object_params = params[@abstract_model.param_key]
24+
object_params = params[@abstract_model.param_key]
25+
if object_params
2526
sanitize_params_for!(request.xhr? ? :modal : :create)
2627
@object.assign_attributes(@object.attributes.merge(object_params.to_h))
2728
end

lib/rails_admin/config/fields/base.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -301,14 +301,14 @@ def type
301301
def value
302302
bindings[:object].safe_send(name)
303303
rescue NoMethodError => e
304-
raise e.exception <<-EOM.gsub(/^\s{10}/, '')
304+
raise e.exception <<-ERROR.gsub(/^\s{10}/, '')
305305
#{e.message}
306306
If you want to use a RailsAdmin virtual field(= a field without corresponding instance method),
307307
you should declare 'formatted_value' in the field definition.
308308
field :#{name} do
309309
formatted_value{ bindings[:object].call_some_method }
310310
end
311-
EOM
311+
ERROR
312312
end
313313

314314
# Reader for nested attributes

lib/rails_admin/config/fields/factories/active_storage.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@
1616
["#{name}_attachment".to_sym, "#{name}_blob".to_sym]
1717
end
1818
children_fields = associations.map do |child_name|
19-
next unless child_association = parent.abstract_model.associations.detect { |p| p.name.to_sym == child_name }
19+
child_association = parent.abstract_model.associations.detect { |p| p.name.to_sym == child_name }
20+
next unless child_association
2021

2122
child_field = fields.detect { |f| f.name == child_name } || RailsAdmin::Config::Fields.default_factory.call(parent, child_association, fields)
2223
child_field.hide unless field == child_field

lib/rails_admin/config/fields/factories/association.rb

+4-4
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
require 'rails_admin/config/fields/types/belongs_to_association'
44

55
RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
6-
if association = parent.abstract_model.associations.detect { |a| a.foreign_key == properties.name && %i[belongs_to has_and_belongs_to_many].include?(a.type) }
6+
association = parent.abstract_model.associations.detect { |a| a.foreign_key == properties.name && %i[belongs_to has_and_belongs_to_many].include?(a.type) }
7+
if association
78
field = RailsAdmin::Config::Fields::Types.load("#{association.polymorphic? ? :polymorphic : association.type}_association").new(parent, association.name, association)
89
fields << field
910

@@ -15,9 +16,8 @@
1516
end.collect { |k| association.send(k) }.compact
1617

1718
parent.abstract_model.properties.select { |p| possible_field_names.include? p.name }.each do |column|
18-
unless child_field = fields.detect { |f| f.name.to_s == column.name.to_s }
19-
child_field = RailsAdmin::Config::Fields.default_factory.call(parent, column, fields)
20-
end
19+
child_field = fields.detect { |f| f.name.to_s == column.name.to_s }
20+
child_field ||= RailsAdmin::Config::Fields.default_factory.call(parent, column, fields)
2121
child_columns << child_field
2222
end
2323

lib/rails_admin/config/fields/factories/carrierwave.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
fields << field
1313
children_fields = []
1414
columns.each do |children_column_name|
15-
next unless child_properties = parent.abstract_model.properties.detect { |p| p.name.to_s == children_column_name.to_s }
15+
child_properties = parent.abstract_model.properties.detect { |p| p.name.to_s == children_column_name.to_s }
16+
next unless child_properties
1617

1718
children_field = fields.detect { |f| f.name == children_column_name } || RailsAdmin::Config::Fields.default_factory.call(parent, child_properties, fields)
1819
children_field.hide unless field == children_field

lib/rails_admin/config/fields/factories/devise.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
properties = parent.abstract_model.properties.detect { |p| ext == p.name }
1313
next unless properties
1414

15-
unless field = fields.detect { |f| f.name == ext }
15+
field = fields.detect { |f| f.name == ext }
16+
unless field
1617
RailsAdmin::Config::Fields.default_factory.call(parent, properties, fields)
1718
field = fields.last
1819
end

lib/rails_admin/config/fields/factories/dragonfly.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
children_fields = []
1010
extensions.each do |ext|
1111
children_column_name = "#{attachment_name}_#{ext}".to_sym
12-
next unless child_properties = parent.abstract_model.properties.detect { |p| p.name.to_s == children_column_name.to_s }
12+
child_properties = parent.abstract_model.properties.detect { |p| p.name.to_s == children_column_name.to_s }
13+
next unless child_properties
1314

1415
children_field = fields.detect { |f| f.name == children_column_name } || RailsAdmin::Config::Fields.default_factory.call(parent, child_properties, fields)
1516
children_field.hide

lib/rails_admin/config/fields/factories/paperclip.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
children_fields = []
1111
extensions.each do |ext|
1212
children_column_name = "#{attachment_name}_#{ext}".to_sym
13-
next unless child_properties = parent.abstract_model.properties.detect { |p| p.name.to_s == children_column_name.to_s }
13+
child_properties = parent.abstract_model.properties.detect { |p| p.name.to_s == children_column_name.to_s }
14+
next unless child_properties
1415

1516
children_field = fields.detect { |f| f.name == children_column_name } || RailsAdmin::Config::Fields.default_factory.call(parent, child_properties, fields)
1617
children_field.hide

lib/rails_admin/config/fields/types/datetime.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ def parse_input(params)
5858
end
5959

6060
register_instance_option :formatted_value do
61-
if time = (value || default_value)
61+
time = (value || default_value)
62+
if time
6263
::I18n.l(time, format: strftime_format)
6364
else
6465
''.html_safe

lib/rails_admin/engine.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -59,14 +59,14 @@ class Engine < Rails::Engine
5959
unless missing.empty? && has_session_store
6060
configs = missing.map { |m| "config.middleware.use #{m}" }
6161
configs << "config.middleware.use #{app.config.session_store.try(:name) || 'ActionDispatch::Session::CookieStore'}, #{app.config.session_options}" unless has_session_store
62-
raise <<~EOM
62+
raise <<~ERROR
6363
Required middlewares for RailsAdmin are not added
6464
To fix this, add
6565
6666
#{configs.join("\n ")}
6767
6868
to config/application.rb.
69-
EOM
69+
ERROR
7070
end
7171

7272
RailsAdmin::Config.initialize!

lib/rails_admin/extensions/paper_trail/auditing_adapter.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ class AuditingAdapter
4949
created_at: :created_at,
5050
message: :event,
5151
}.freeze
52-
E_VERSION_MODEL_NOT_SET = <<-EOS.strip_heredoc.freeze
52+
E_VERSION_MODEL_NOT_SET = <<-ERROR.strip_heredoc.freeze
5353
Please set up PaperTrail's version model explicitly.
5454
5555
config.audit_with :paper_trail, 'User', 'PaperTrail::Version'
@@ -58,7 +58,7 @@ class AuditingAdapter
5858
(https://github.com/paper-trail-gem/paper_trail#6a-custom-version-classes)
5959
that configuration will take precedence over what you specify in
6060
`audit_with`.
61-
EOS
61+
ERROR
6262

6363
def self.setup
6464
raise 'PaperTrail not found' unless defined?(::PaperTrail)

spec/dummy_app/db/seeds.rb

+6-3
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,18 @@
1616
results = connection.get('/sferik/mlb/e5b9384fc388f34ec5baca291343864135dcb0fe/cache/teams.json').body
1717

1818
MLB::Team.send(:results_to_team, results).each do |mlb_team|
19-
unless league = league_model.where(name: mlb_team.league).first
19+
league = league_model.where(name: mlb_team.league).first
20+
unless league
2021
league = league_model.model.new(name: mlb_team.league)
2122
league.save!
2223
end
23-
unless division = division_model.where(name: mlb_team.division).first
24+
division = division_model.where(name: mlb_team.division).first
25+
unless division
2426
division = division_model.model.new(name: mlb_team.division, league: league)
2527
division.save!
2628
end
27-
unless team = team_model.where(name: mlb_team.name).first
29+
team = team_model.where(name: mlb_team.name).first
30+
unless team
2831
team = team_model.model.new(name: mlb_team.name, logo_url: mlb_team.logo_url, manager: mlb_team.manager || 'None', ballpark: mlb_team.ballpark, mascot: mlb_team.mascot, founded: mlb_team.founded, wins: mlb_team.wins, losses: mlb_team.losses, win_percentage: format('%.3f', (mlb_team.wins.to_f / (mlb_team.wins + mlb_team.losses))).to_f, division: division)
2932
team.save!
3033
end

spec/factories.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,14 @@
5656

5757
factory :comment do
5858
sequence(:content) do |n|
59-
<<-EOF
59+
<<-LOREM_IPSUM
6060
Lorém --#{n}-- ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
6161
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
6262
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
6363
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
6464
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
6565
proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
66-
EOF
66+
LOREM_IPSUM
6767
end
6868

6969
factory :comment_confirmed, class: Comment::Confirmed do

spec/rails_admin/install_generator_spec.rb

+25-23
Original file line numberDiff line numberDiff line change
@@ -25,32 +25,34 @@
2525
Dir.chdir(destination_root) do
2626
run_generator
2727
end
28-
expect(destination_root).to have_structure {
29-
directory 'config' do
30-
directory 'initializers' do
31-
file 'rails_admin.rb' do
32-
contains 'RailsAdmin.config'
33-
contains 'asset_source ='
28+
expect(destination_root).to(
29+
have_structure do
30+
directory 'config' do
31+
directory 'initializers' do
32+
file 'rails_admin.rb' do
33+
contains 'RailsAdmin.config'
34+
contains 'asset_source ='
35+
end
36+
end
37+
file 'routes.rb' do
38+
contains "mount RailsAdmin::Engine => '/admin', as: 'rails_admin'"
3439
end
3540
end
36-
file 'routes.rb' do
37-
contains "mount RailsAdmin::Engine => '/admin', as: 'rails_admin'"
38-
end
39-
end
40-
case CI_ASSET
41-
when :webpacker
42-
file 'app/javascript/packs/rails_admin.js' do
43-
contains 'import "rails_admin/src/rails_admin/base"'
44-
end
45-
file 'app/javascript/stylesheets/rails_admin.scss' do
46-
contains '@import "~rails_admin/src/rails_admin/styles/base"'
47-
end
48-
when :sprockets
49-
file 'Gemfile' do
50-
contains 'sassc-rails'
41+
case CI_ASSET
42+
when :webpacker
43+
file 'app/javascript/packs/rails_admin.js' do
44+
contains 'import "rails_admin/src/rails_admin/base"'
45+
end
46+
file 'app/javascript/stylesheets/rails_admin.scss' do
47+
contains '@import "~rails_admin/src/rails_admin/styles/base"'
48+
end
49+
when :sprockets
50+
file 'Gemfile' do
51+
contains 'sassc-rails'
52+
end
5153
end
52-
end
53-
}
54+
end,
55+
)
5456
end
5557

5658
it 'inserts asset_source option to RailsAdmin Initializer' do

spec/spec_helper.rb

+6-1
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,12 @@ def password_digest(password)
101101
end
102102

103103
config.before do |example|
104-
DatabaseCleaner.strategy = CI_ORM == :mongoid || example.metadata[:js] ? :deletion : :transaction
104+
DatabaseCleaner.strategy =
105+
if CI_ORM == :mongoid || example.metadata[:js]
106+
:deletion
107+
else
108+
:transaction
109+
end
105110

106111
DatabaseCleaner.start
107112
RailsAdmin::Config.reset

0 commit comments

Comments
 (0)