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.
@@ -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
@@ -1,5 +1,5 @@
1
1
  module Standard
2
2
  module Rails
3
- VERSION = "0.0.1"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
@@ -1,8 +1,4 @@
1
- require_relative "rails/version"
1
+ require "lint_roller"
2
2
 
3
- module Standard
4
- module Rails
5
- class Error < StandardError; end
6
- # Your code goes here...
7
- end
8
- end
3
+ require_relative "rails/version"
4
+ require_relative "rails/plugin"
@@ -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.1
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-03-26 00:00:00.000000000 Z
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.18.0
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.18.0
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.6.0
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.4.8
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