Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit e145024

Browse files
committedFeb 8, 2023
Fix rubocop offenses
1 parent 32b0327 commit e145024

14 files changed

+86
-64
lines changed
 

‎.rubocop.yml

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
AllCops:
2-
TargetRubyVersion: 2.3.0
2+
TargetRubyVersion: 2.7.0
33
Exclude:
44
- "tmp/**/*"
55
- "bin/*"
@@ -11,7 +11,7 @@ Bundler/OrderedGems:
1111
Gemspec/OrderedDependencies:
1212
Enabled: false
1313

14-
Layout/AlignParameters:
14+
Layout/ParameterAlignment:
1515
Enabled: true
1616
EnforcedStyle: with_fixed_indentation
1717
Layout/ConditionPosition:
@@ -20,7 +20,7 @@ Layout/DotPosition:
2020
EnforcedStyle: leading
2121
Layout/ExtraSpacing:
2222
Enabled: true
23-
Layout/IndentAssignment:
23+
Layout/AssignmentIndentation:
2424
Enabled: False
2525
Layout/MultilineOperationIndentation:
2626
Enabled: true
@@ -33,7 +33,7 @@ Lint/AmbiguousOperator:
3333
Enabled: true
3434
Lint/AmbiguousRegexpLiteral:
3535
Enabled: true
36-
Lint/DuplicatedKey:
36+
Lint/DuplicateHashKey:
3737
Enabled: true
3838

3939
Metrics/ClassLength:

‎lib/generators/scenic/materializable.rb

+13-12
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,21 @@ module Materializable
66

77
included do
88
class_option :materialized,
9-
type: :boolean,
10-
required: false,
11-
desc: "Makes the view materialized",
12-
default: false
9+
type: :boolean,
10+
required: false,
11+
desc: "Makes the view materialized",
12+
default: false
1313
class_option :no_data,
14-
type: :boolean,
15-
required: false,
16-
desc: "Adds WITH NO DATA when materialized view creates/updates",
17-
default: false
14+
type: :boolean,
15+
required: false,
16+
desc: "Adds WITH NO DATA when materialized view " \
17+
"creates/updates",
18+
default: false
1819
class_option :replace,
19-
type: :boolean,
20-
required: false,
21-
desc: "Uses replace_view instead of update_view",
22-
default: false
20+
type: :boolean,
21+
required: false,
22+
desc: "Uses replace_view instead of update_view",
23+
default: false
2324
end
2425

2526
private

‎lib/generators/scenic/model/model_generator.rb

+12-18
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,17 @@ class ModelGenerator < Rails::Generators::NamedBase
1212

1313
def invoke_rails_model_generator
1414
invoke "model",
15-
[file_path.singularize],
16-
options.merge(
17-
fixture_replacement: false,
18-
migration: false,
19-
)
15+
[file_path.singularize],
16+
options.merge(
17+
fixture_replacement: false,
18+
migration: false,
19+
)
2020
end
2121

2222
def inject_model_methods
2323
if materialized? && generating?
24-
inject_into_class "app/models/#{file_path.singularize}.rb", class_name do
24+
inject_into_class "app/models/#{file_path.singularize}.rb",
25+
class_name do
2526
evaluate_template("model.erb")
2627
end
2728
end
@@ -38,19 +39,12 @@ def evaluate_template(source)
3839
context = instance_eval("binding", __FILE__, __LINE__)
3940

4041
if ERB.instance_method(:initialize).parameters.assoc(:key) # Ruby 2.6+
41-
erb = ERB.new(
42-
::File.binread(source),
43-
trim_mode: "-",
44-
eoutvar: "@output_buffer",
45-
)
46-
else
47-
erb = ERB.new(
48-
::File.binread(source),
49-
nil,
50-
"-",
51-
"@output_buffer",
52-
)
5342
end
43+
erb = ERB.new(
44+
::File.binread(source),
45+
trim_mode: "-",
46+
eoutvar: "@output_buffer",
47+
)
5448

5549
erb.result(context)
5650
end

‎lib/scenic/adapters/postgres.rb

+6-3
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,10 @@ def views
6060
#
6161
# @return [void]
6262
def create_view(name, sql_definition, if_not_exists: false)
63-
if if_not_exists
64-
return if views.any? { |view| view.name == name }
63+
if if_not_exists && views.any? { |view| view.name == name }
64+
return
6565
end
66+
6667
execute "CREATE VIEW #{quote_table_name(name)} AS #{sql_definition};"
6768
end
6869

@@ -142,7 +143,8 @@ def drop_view(name, if_exists: false)
142143
# in use does not support materialized views.
143144
#
144145
# @return [void]
145-
def create_materialized_view(name, sql_definition, no_data: false, if_not_exists: false)
146+
def create_materialized_view(name, sql_definition, no_data: false,
147+
if_not_exists: false)
146148
raise_unless_materialized_views_supported
147149

148150
definition_if_not_exists = if_not_exists ? "IF NOT EXISTS " : ""
@@ -239,6 +241,7 @@ def refresh_materialized_view(name, concurrently: false, cascade: false)
239241
private
240242

241243
attr_reader :connectable
244+
242245
delegate :execute, :quote_table_name, to: :connection
243246

244247
def connection

‎lib/scenic/adapters/postgres/index_reapplication.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ def with_savepoint(name)
5656
yield
5757
connection.execute("RELEASE SAVEPOINT #{name}")
5858
true
59-
rescue
59+
rescue StandardError
6060
connection.execute("ROLLBACK TO SAVEPOINT #{name}")
6161
false
6262
end

‎lib/scenic/adapters/postgres/indexes.rb

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ def on(name)
2020
private
2121

2222
attr_reader :connection
23+
2324
delegate :quote_table_name, to: :connection
2425

2526
def indexes_on(name)

‎lib/scenic/schema_dumper.rb

+5-2
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,18 @@ def dumpable_views_in_database
2727
end
2828
end
2929

30-
unless ActiveRecord::SchemaDumper.private_instance_methods(false).include?(:ignored?)
30+
unless ActiveRecord::SchemaDumper.private_instance_methods(false)
31+
.include?(:ignored?)
3132
# This method will be present in Rails 4.2.0 and can be removed then.
3233
def ignored?(table_name)
3334
["schema_migrations", ignore_tables].flatten.any? do |ignored|
3435
case ignored
3536
when String then remove_prefix_and_suffix(table_name) == ignored
3637
when Regexp then remove_prefix_and_suffix(table_name) =~ ignored
3738
else
38-
raise StandardError, "ActiveRecord::SchemaDumper.ignore_tables accepts an array of String and / or Regexp values."
39+
raise StandardError,
40+
"ActiveRecord::SchemaDumper.ignore_tables accepts an array " \
41+
"of String and / or Regexp values."
3942
end
4043
end
4144
end

‎lib/scenic/statements.rb

+10-5
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ module Statements
2424
# SELECT * FROM users WHERE users.active = 't'
2525
# SQL
2626
#
27-
def create_view(name, version: nil, sql_definition: nil, materialized: false, if_not_exists: false)
27+
def create_view(name, version: nil, sql_definition: nil,
28+
materialized: false, if_not_exists: false)
2829
if version.present? && sql_definition.present?
2930
raise(
3031
ArgumentError,
@@ -46,7 +47,8 @@ def create_view(name, version: nil, sql_definition: nil, materialized: false, if
4647
if_not_exists: if_not_exists,
4748
)
4849
else
49-
Scenic.database.create_view(name, sql_definition, if_not_exists: if_not_exists)
50+
Scenic.database.create_view(name, sql_definition,
51+
if_not_exists: if_not_exists)
5052
end
5153
end
5254

@@ -65,7 +67,8 @@ def create_view(name, version: nil, sql_definition: nil, materialized: false, if
6567
# @example Drop a view, rolling back to version 3 on rollback
6668
# drop_view(:users_who_recently_logged_in, revert_to_version: 3)
6769
#
68-
def drop_view(name, revert_to_version: nil, materialized: false, if_exists: false)
70+
def drop_view(name, revert_to_version: nil, materialized: false,
71+
if_exists: false)
6972
if materialized
7073
Scenic.database.drop_materialized_view(name, if_exists: if_exists)
7174
else
@@ -93,7 +96,8 @@ def drop_view(name, revert_to_version: nil, materialized: false, if_exists: fals
9396
# @example
9497
# update_view :engagement_reports, version: 3, revert_to_version: 2
9598
#
96-
def update_view(name, version: nil, sql_definition: nil, revert_to_version: nil, materialized: false)
99+
def update_view(name, version: nil, sql_definition: nil,
100+
revert_to_version: nil, materialized: false)
97101
if version.blank? && sql_definition.blank?
98102
raise(
99103
ArgumentError,
@@ -137,7 +141,8 @@ def update_view(name, version: nil, sql_definition: nil, revert_to_version: nil,
137141
# @example
138142
# replace_view :engagement_reports, version: 3, revert_to_version: 2
139143
#
140-
def replace_view(name, version: nil, revert_to_version: nil, materialized: false)
144+
def replace_view(name, version: nil, revert_to_version: nil,
145+
materialized: false)
141146
if version.blank?
142147
raise ArgumentError, "version is required"
143148
end

‎spec/integration/revert_spec.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ def migration_class
6161
end
6262

6363
def run_migration(migration, directions)
64-
silence_stream(STDOUT) do
64+
silence_stream($stdout) do
6565
Array.wrap(directions).each do |direction|
6666
migration.migrate(direction)
6767
end

‎spec/scenic/adapters/postgres_spec.rb

+13-4
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ module Adapters
1515
it "successfully creates a view with :if_not_exists if view does not exist" do
1616
adapter = Postgres.new
1717

18-
adapter.create_view("greetings", "SELECT text 'hi' AS greeting", if_not_exists: true)
18+
adapter.create_view("greetings", "SELECT text 'hi' AS greeting",
19+
if_not_exists: true)
1920

2021
expect(adapter.views.map(&:name)).to include("greetings")
2122
end
@@ -24,7 +25,10 @@ module Adapters
2425
adapter = Postgres.new
2526

2627
adapter.create_view("greetings", "SELECT text 'hi' AS greeting")
27-
expect { adapter.create_view("greetings", "SELECT text 'hi' AS greeting", if_not_exists: true) }
28+
expect {
29+
adapter.create_view("greetings", "SELECT text 'hi' AS greeting",
30+
if_not_exists: true)
31+
}
2832
.not_to raise_error
2933
end
3034
end
@@ -106,7 +110,9 @@ module Adapters
106110
it "does not raise error with :if_exists if view does not exist" do
107111
adapter = Postgres.new
108112

109-
expect { adapter.drop_view("greetings", if_exists: true) }.not_to raise_error
113+
expect {
114+
adapter.drop_view("greetings", if_exists: true)
115+
}.not_to raise_error
110116
end
111117
end
112118

@@ -138,7 +144,10 @@ module Adapters
138144
it "does not raise error with :if_exists if view does not exist" do
139145
adapter = Postgres.new
140146

141-
expect { adapter.drop_materialized_view("greetings", if_exists: true) }.not_to raise_error
147+
expect {
148+
adapter.drop_materialized_view("greetings",
149+
if_exists: true)
150+
}.not_to raise_error
142151
end
143152

144153
it "raises an exception if the version of PostgreSQL is too old" do

‎spec/scenic/command_recorder_spec.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
recorder.revert { recorder.create_view :greetings, materialized: true }
2525

2626
expect(recorder.commands).to eq [
27-
[:drop_view, [:greetings, materialized: true]],
27+
[:drop_view, [:greetings, { materialized: true }]],
2828
]
2929
end
3030
end

‎spec/scenic/schema_dumper_spec.rb

+13-9
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class SearchInAHaystack < ActiveRecord::Base
2121

2222
Search.connection.drop_view :searches
2323

24-
silence_stream(STDOUT) { eval(output) }
24+
silence_stream($stdout) { eval(output) }
2525

2626
expect(Search.first.haystack).to eq "needle"
2727
end
@@ -37,14 +37,15 @@ class SearchInAHaystack < ActiveRecord::Base
3737
expect(output).to include "~ '\\\\d+'::text"
3838

3939
Search.connection.drop_view :searches
40-
silence_stream(STDOUT) { eval(output) }
40+
silence_stream($stdout) { eval(output) }
4141

4242
expect(Search.first.haystack).to eq "needle"
4343
end
4444

4545
it "dumps a create_view for a materialized view in the database" do
4646
view_definition = "SELECT 'needle'::text AS haystack"
47-
Search.connection.create_view :searches, materialized: true, sql_definition: view_definition
47+
Search.connection.create_view :searches, materialized: true,
48+
sql_definition: view_definition
4849
stream = StringIO.new
4950

5051
ActiveRecord::SchemaDumper.dump(Search.connection, stream)
@@ -59,7 +60,8 @@ class SearchInAHaystack < ActiveRecord::Base
5960
it "dumps a create_view including namespace for a view in the database" do
6061
view_definition = "SELECT 'needle'::text AS haystack"
6162
Search.connection.execute "CREATE SCHEMA scenic; SET search_path TO scenic, public"
62-
Search.connection.create_view :"scenic.searches", sql_definition: view_definition
63+
Search.connection.create_view :"scenic.searches",
64+
sql_definition: view_definition
6365
stream = StringIO.new
6466

6567
ActiveRecord::SchemaDumper.dump(Search.connection, stream)
@@ -74,7 +76,8 @@ class SearchInAHaystack < ActiveRecord::Base
7476
it "handles active record table name prefixes and suffixes" do
7577
with_affixed_tables(prefix: "a_", suffix: "_z") do
7678
view_definition = "SELECT 'needle'::text AS haystack"
77-
Search.connection.create_view :a_searches_z, sql_definition: view_definition
79+
Search.connection.create_view :a_searches_z,
80+
sql_definition: view_definition
7881
stream = StringIO.new
7982

8083
ActiveRecord::SchemaDumper.dump(Search.connection, stream)
@@ -102,7 +105,8 @@ class SearchInAHaystack < ActiveRecord::Base
102105
context "with views using unexpected characters in name" do
103106
it "dumps a create_view for a view in the database" do
104107
view_definition = "SELECT 'needle'::text AS haystack"
105-
Search.connection.create_view '"search in a haystack"', sql_definition: view_definition
108+
Search.connection.create_view '"search in a haystack"',
109+
sql_definition: view_definition
106110
stream = StringIO.new
107111

108112
ActiveRecord::SchemaDumper.dump(Search.connection, stream)
@@ -113,7 +117,7 @@ class SearchInAHaystack < ActiveRecord::Base
113117

114118
Search.connection.drop_view :'"search in a haystack"'
115119

116-
silence_stream(STDOUT) { eval(output) }
120+
silence_stream($stdout) { eval(output) }
117121

118122
expect(SearchInAHaystack.take.haystack).to eq "needle"
119123
end
@@ -126,7 +130,7 @@ class SearchInAHaystack < ActiveRecord::Base
126130
"CREATE SCHEMA scenic; SET search_path TO scenic, public",
127131
)
128132
Search.connection.create_view 'scenic."search in a haystack"',
129-
sql_definition: view_definition
133+
sql_definition: view_definition
130134
stream = StringIO.new
131135

132136
ActiveRecord::SchemaDumper.dump(Search.connection, stream)
@@ -137,7 +141,7 @@ class SearchInAHaystack < ActiveRecord::Base
137141

138142
Search.connection.drop_view :'scenic."search in a haystack"'
139143

140-
silence_stream(STDOUT) { eval(output) }
144+
silence_stream($stdout) { eval(output) }
141145

142146
expect(SearchInAHaystack.take.haystack).to eq "needle"
143147
end

‎spec/scenic/statements_spec.rb

+4-2
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,8 @@ module Scenic
8383
definition = instance_double("Scenic::Definition", to_sql: "definition")
8484
allow(Definition).to receive(:new).and_return(definition)
8585

86-
connection.create_view(:views, version: 1, materialized: true, if_not_exists: true)
86+
connection.create_view(:views, version: 1, materialized: true,
87+
if_not_exists: true)
8788

8889
expect(Scenic.database).to have_received(:create_materialized_view)
8990
.with(:views, definition.to_sql, no_data: false, if_not_exists: true)
@@ -94,7 +95,8 @@ module Scenic
9495
it "removes a view from the database" do
9596
connection.drop_view :name
9697

97-
expect(Scenic.database).to have_received(:drop_view).with(:name, if_exists: false)
98+
expect(Scenic.database)
99+
.to have_received(:drop_view).with(:name, if_exists: false)
98100
end
99101

100102
it "removes a view from the database if it exists" do

‎spec/support/generator_spec_setup.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
require "rspec/rails"
2-
require "ammeter/rspec/generator/example.rb"
3-
require "ammeter/rspec/generator/matchers.rb"
2+
require "ammeter/rspec/generator/example"
3+
require "ammeter/rspec/generator/matchers"
44
require "ammeter/init"
55

66
RSpec.configure do |config|

0 commit comments

Comments
 (0)
Please sign in to comment.