standard-rails 0.0.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.standard.yml +1 -1
- data/CHANGELOG.md +10 -4
- data/Gemfile +1 -2
- data/Gemfile.lock +42 -20
- data/README.md +31 -3
- data/Rakefile +42 -1
- data/config/base.yml +483 -115
- data/lib/standard/rails/load_rubocop_rails_without_the_monkey_patch.rb +46 -0
- data/lib/standard/rails/plugin.rb +76 -0
- data/lib/standard/rails/version.rb +1 -1
- data/lib/standard/rails.rb +3 -7
- data/lib/standard-rails.rb +1 -0
- metadata +24 -6
@@ -0,0 +1,46 @@
|
|
1
|
+
# GENERATED FILE - DO NOT EDIT
|
2
|
+
#
|
3
|
+
# This file should look just like: https://github.com/rubocop/rubocop-rails/blob/master/lib/rubocop-rails.rb
|
4
|
+
# Except without the `Inject.defaults!` monkey patching.
|
5
|
+
#
|
6
|
+
# Because there are both necessary require statements and additional patching
|
7
|
+
# of RuboCop built-in cops in this file, we need to monitor it for changes
|
8
|
+
# in rubocop-rails and keep it up to date.
|
9
|
+
#
|
10
|
+
# Last updated from rubocop-rails v2.20.2
|
11
|
+
|
12
|
+
# frozen_string_literal: true
|
13
|
+
|
14
|
+
require "rubocop"
|
15
|
+
require "rack/utils"
|
16
|
+
require "active_support/inflector"
|
17
|
+
require "active_support/core_ext/object/blank"
|
18
|
+
|
19
|
+
require_path = Pathname.new(Gem.loaded_specs["rubocop-rails"].full_require_paths.first)
|
20
|
+
require require_path.join("rubocop/rails")
|
21
|
+
require require_path.join("rubocop/rails/version")
|
22
|
+
# require_relative 'rubocop/rails/inject'
|
23
|
+
require require_path.join("rubocop/rails/schema_loader")
|
24
|
+
require require_path.join("rubocop/rails/schema_loader/schema")
|
25
|
+
|
26
|
+
# RuboCop::Rails::Inject.defaults!
|
27
|
+
|
28
|
+
require require_path.join("rubocop/cop/rails_cops")
|
29
|
+
|
30
|
+
RuboCop::Cop::Style::HashExcept.minimum_target_ruby_version(2.0)
|
31
|
+
|
32
|
+
RuboCop::Cop::Style::MethodCallWithArgsParentheses.singleton_class.prepend(
|
33
|
+
Module.new do
|
34
|
+
def autocorrect_incompatible_with
|
35
|
+
super.push(RuboCop::Cop::Rails::EagerEvaluationLogMessage)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
)
|
39
|
+
|
40
|
+
RuboCop::Cop::Style::RedundantSelf.singleton_class.prepend(
|
41
|
+
Module.new do
|
42
|
+
def autocorrect_incompatible_with
|
43
|
+
super.push(RuboCop::Cop::Rails::SafeNavigation)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
)
|
@@ -0,0 +1,76 @@
|
|
1
|
+
require "yaml"
|
2
|
+
|
3
|
+
module Standard
|
4
|
+
module Rails
|
5
|
+
class Plugin < LintRoller::Plugin
|
6
|
+
def initialize(config)
|
7
|
+
@config = config
|
8
|
+
end
|
9
|
+
|
10
|
+
def about
|
11
|
+
LintRoller::About.new(
|
12
|
+
name: "standard-rails",
|
13
|
+
version: VERSION,
|
14
|
+
homepage: "https://github.com/testdouble/standard-rails",
|
15
|
+
description: "Configuration for rubocop-rails rules"
|
16
|
+
)
|
17
|
+
end
|
18
|
+
|
19
|
+
def supported?(context)
|
20
|
+
true
|
21
|
+
end
|
22
|
+
|
23
|
+
def rules(context)
|
24
|
+
trick_rubocop_into_thinking_we_required_rubocop_rails!
|
25
|
+
|
26
|
+
LintRoller::Rules.new(
|
27
|
+
type: :object,
|
28
|
+
config_format: :rubocop,
|
29
|
+
value: rules_with_config_applied
|
30
|
+
)
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def rules_with_config_applied
|
36
|
+
YAML.load_file(Pathname.new(__dir__).join("../../../config/base.yml")).tap do |rules|
|
37
|
+
if @config.key?("target_rails_version")
|
38
|
+
rules["AllCops"]["TargetRailsVersion"] = @config["target_rails_version"]
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
# This is not fantastic.
|
44
|
+
#
|
45
|
+
# When you `require "rubocop-rails"`, it will not only load the cops,
|
46
|
+
# but it will also monkey-patch RuboCop's default_configuration, which is
|
47
|
+
# something that can't be undone for the lifetime of the process.
|
48
|
+
#
|
49
|
+
# See: https://github.com/rubocop/rubocop-rails/blob/master/lib/rubocop-rails.rb#L14
|
50
|
+
#
|
51
|
+
# As an alternative, standard-rails loads the cops directly, and then
|
52
|
+
# simply tells the RuboCop config loader that it's been loaded. This is
|
53
|
+
# taking advantage of a private API of an `attr_reader` that probably wasn't
|
54
|
+
# meant to be mutated externally, but it's better than the `Inject` monkey
|
55
|
+
# patching that rubocop-rails does (and many other RuboCop plugins do)
|
56
|
+
def trick_rubocop_into_thinking_we_required_rubocop_rails!
|
57
|
+
without_warnings do
|
58
|
+
require_relative "load_rubocop_rails_without_the_monkey_patch"
|
59
|
+
end
|
60
|
+
RuboCop::ConfigLoader.default_configuration.loaded_features.add("rubocop-rails")
|
61
|
+
end
|
62
|
+
|
63
|
+
# This is also not fantastic, but because loading RuboCop before loading
|
64
|
+
# ActiveSupport will result in RuboCop redefining a number of ActiveSupport
|
65
|
+
# methods like String#blank?, we need to suppress the warnings that are
|
66
|
+
# emitted when we load the cops.
|
67
|
+
def without_warnings(&blk)
|
68
|
+
original_verbose = $VERBOSE
|
69
|
+
$VERBOSE = nil
|
70
|
+
yield
|
71
|
+
ensure
|
72
|
+
$VERBOSE = original_verbose
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
data/lib/standard/rails.rb
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
require_relative "standard/rails"
|
metadata
CHANGED
@@ -1,29 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: standard-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Searls
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-09-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: lint_roller
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: rubocop-rails
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
16
30
|
requirements:
|
17
31
|
- - "~>"
|
18
32
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.
|
33
|
+
version: 2.20.2
|
20
34
|
type: :runtime
|
21
35
|
prerelease: false
|
22
36
|
version_requirements: !ruby/object:Gem::Requirement
|
23
37
|
requirements:
|
24
38
|
- - "~>"
|
25
39
|
- !ruby/object:Gem::Version
|
26
|
-
version: 2.
|
40
|
+
version: 2.20.2
|
27
41
|
description:
|
28
42
|
email:
|
29
43
|
- searls@gmail.com
|
@@ -39,7 +53,10 @@ files:
|
|
39
53
|
- README.md
|
40
54
|
- Rakefile
|
41
55
|
- config/base.yml
|
56
|
+
- lib/standard-rails.rb
|
42
57
|
- lib/standard/rails.rb
|
58
|
+
- lib/standard/rails/load_rubocop_rails_without_the_monkey_patch.rb
|
59
|
+
- lib/standard/rails/plugin.rb
|
43
60
|
- lib/standard/rails/version.rb
|
44
61
|
homepage: https://github.com/testdouble/standard-rails
|
45
62
|
licenses:
|
@@ -49,6 +66,7 @@ metadata:
|
|
49
66
|
source_code_uri: https://github.com/testdouble/standard-rails
|
50
67
|
changelog_uri: https://github.com/testdouble/standard-rails/blob/main/CHANGELOG.md
|
51
68
|
rubygems_mfa_required: 'true'
|
69
|
+
default_lint_roller_plugin: Standard::Rails::Plugin
|
52
70
|
post_install_message:
|
53
71
|
rdoc_options: []
|
54
72
|
require_paths:
|
@@ -57,14 +75,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
57
75
|
requirements:
|
58
76
|
- - ">="
|
59
77
|
- !ruby/object:Gem::Version
|
60
|
-
version: 2.
|
78
|
+
version: 2.7.0
|
61
79
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
62
80
|
requirements:
|
63
81
|
- - ">="
|
64
82
|
- !ruby/object:Gem::Version
|
65
83
|
version: '0'
|
66
84
|
requirements: []
|
67
|
-
rubygems_version: 3.
|
85
|
+
rubygems_version: 3.2.15
|
68
86
|
signing_key:
|
69
87
|
specification_version: 4
|
70
88
|
summary: A Standard plugin that adds Rails-specific rules to Standard
|