next_rails 1.2.1 → 1.2.2
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/.github/ISSUE_TEMPLATE/bug_report.md +21 -35
- data/.github/ISSUE_TEMPLATE/feature_request.md +10 -27
- data/CHANGELOG.md +8 -1
- data/README.md +11 -2
- data/exe/bundle_report +6 -1
- data/lib/deprecation_tracker.rb +6 -2
- data/lib/next_rails/bundle_report.rb +53 -14
- data/lib/next_rails/gem_info.rb +1 -1
- data/lib/next_rails/version.rb +3 -1
- data/pull_request_template.md +11 -5
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ceb25dba1847fdd6aa7b71ea2dacac03a90e16cf855e59d6a92cb6855c9124f6
|
|
4
|
+
data.tar.gz: 48c1a8bc8a02a2d717bb0da75c5145881ec96c0da6953309867238299d8f76b6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: afe58b7bc957ceed1c2c1ead4fe64059e4657dcbab249ecd35138f90d3e335987ea6759590679009dee64b9eb8178a28ee030ad13a744ae082348e19f82cc0ff
|
|
7
|
+
data.tar.gz: 00c6a32d28b7cb6836ee99246d6a92829d6a450753ad379ecf493015d809888790204e85ba55ac9c0c22c6ce30531422bbf646f7b5bea695c4193e47544c9c07
|
|
@@ -6,46 +6,32 @@ labels: bug
|
|
|
6
6
|
assignees: ""
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
<!--- Before creating a bug report, please, answer the following questions -->
|
|
10
|
+
<!--- Did you check the documentation for answers? -->
|
|
11
|
+
<!--- Did you make sure that this bug has not already been reported? -->
|
|
10
12
|
|
|
11
|
-
|
|
13
|
+
## Expected Behavior
|
|
14
|
+
<!--- Tell us what should happen -->
|
|
15
|
+
<!--- For example: When I [do X], it should [produce Y] -->
|
|
12
16
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
17
|
+
## Actual Behavior
|
|
18
|
+
<!--- Tell us what happens instead -->
|
|
19
|
+
<!--- For example: When I [did X], it [produced Y] -->
|
|
16
20
|
|
|
17
|
-
|
|
21
|
+
## Possible Fix
|
|
22
|
+
<!--- Optionally suggest a fix or work around -->
|
|
18
23
|
|
|
19
|
-
|
|
24
|
+
## To Reproduce
|
|
25
|
+
<!--- Optionally provide a link to a live example -->
|
|
20
26
|
|
|
21
|
-
|
|
27
|
+
<!--- Otherwise, please provide a set of reproduction steps -->
|
|
28
|
+
1.
|
|
29
|
+
2.
|
|
30
|
+
3.
|
|
31
|
+
4.
|
|
22
32
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
Please include a detailed description of the actual behavior of the application.
|
|
28
|
-
|
|
29
|
-
**Steps to reproduce:**
|
|
30
|
-
|
|
31
|
-
How do I achieve this behavior? Use the following format to provide a step-by-step guide:
|
|
32
|
-
|
|
33
|
-
1. Step 1: ...
|
|
34
|
-
2. Step 2: ...
|
|
35
|
-
|
|
36
|
-
**Context and environment:**
|
|
37
|
-
|
|
38
|
-
Provide any relevant information about your setup (Customize the list accordingly based on what info is relevant to this project)
|
|
39
|
-
|
|
40
|
-
1. Version of the software the issue is being opened for.
|
|
41
|
-
2. Operating System
|
|
42
|
-
3. Operating System version
|
|
43
|
-
4. Ruby version
|
|
44
|
-
|
|
45
|
-
_Delete any information that is not relevant._
|
|
46
|
-
|
|
47
|
-
**Logs**
|
|
48
|
-
|
|
49
|
-
Include relevant log snippets or files here.
|
|
33
|
+
## Additional Information
|
|
34
|
+
<!--- Include any relevant details about your environment (branch, browser, OS) -->
|
|
35
|
+
<!--- and the bug (screenshots, logs, etc) -->
|
|
50
36
|
|
|
51
37
|
**I will abide by the [code of conduct](https://github.com/fastruby/next_rails/blob/main/CODE_OF_CONDUCT.md)**
|
|
@@ -6,35 +6,18 @@ labels: enhancement
|
|
|
6
6
|
assignees: ""
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
<!--- Before creating a feature request, please, answer the following questions -->
|
|
10
|
+
<!--- Did you check the documentation for this feature? -->
|
|
11
|
+
<!--- Did you make sure that this feature has not already been requested? -->
|
|
10
12
|
|
|
11
|
-
|
|
13
|
+
## Description
|
|
14
|
+
<!--- Provide a description of the change or addition you are proposing -->
|
|
12
15
|
|
|
13
|
-
|
|
14
|
-
|
|
16
|
+
## Possible Implementation
|
|
17
|
+
<!--- Optionally suggest an idea to implement or a workaround to fix the issue -->
|
|
15
18
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
**Describe the feature:**
|
|
21
|
-
|
|
22
|
-
Please include a detailed description of the feature you are requesting and any detail on it’s expected behavior.
|
|
23
|
-
|
|
24
|
-
> **As a \<role name\>** > **I do \<something\>** > **And then I do \<another action\>** > **And I see \<some result\>**
|
|
25
|
-
|
|
26
|
-
**Problem:**
|
|
27
|
-
|
|
28
|
-
Please include a detailed description of the problem this feature would solve.
|
|
29
|
-
|
|
30
|
-
> **As a \<role name\>** > **I want to \<do something\>** > **So that I can achieve a \<goal\>**
|
|
31
|
-
|
|
32
|
-
**Mockups:**
|
|
33
|
-
|
|
34
|
-
Include any mockup idea related to the requested feature if it applies.
|
|
35
|
-
|
|
36
|
-
**Resources:**
|
|
37
|
-
|
|
38
|
-
If you have resources related to the implementation or research for this feature, add them here.
|
|
19
|
+
## Resources:
|
|
20
|
+
<!--- If you have resources related to the implementation or research for this feature, add them here. -->
|
|
21
|
+
<!--- If possible, include any mockup ideas related to the requested feature. -->
|
|
39
22
|
|
|
40
23
|
**I will abide by the [code of conduct](https://github.com/fastruby/next_rails/blob/main/CODE_OF_CONDUCT.md)**
|
data/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
# main [(unreleased)](https://github.com/fastruby/next_rails/compare/v1.2.
|
|
1
|
+
# main [(unreleased)](https://github.com/fastruby/next_rails/compare/v1.2.2...main)
|
|
2
|
+
* Your changes/patches go here.
|
|
3
|
+
# v1.2.2 / 2023-03-03 [(commits)](https://github.com/fastruby/next_rails/compare/v1.2.1...v1.2.2)
|
|
4
|
+
* [BUGFIX: Fixed `KernelWarnTracker#warn signature to match `Kernel#warn` for ruby 2.5+](https://github.com/fastruby/next_rails/pull/82)
|
|
5
|
+
* [CHORE: Added updated templates for bug fixes, feature requests and pull requests](https://github.com/fastruby/next_rails/pull/64) as per [this RFC](https://github.com/fastruby/RFCs/blob/main/2021-10-13-github-templates.md)
|
|
6
|
+
* [FEATURE: Turn BundleReport into a module](https://github.com/fastruby/next_rails/pull/63)
|
|
2
7
|
|
|
3
8
|
# v1.2.1 / 2022-09-26 [(commits)](https://github.com/fastruby/next_rails/compare/v1.2.0...v1.2.1)
|
|
4
9
|
|
|
@@ -8,6 +13,8 @@
|
|
|
8
13
|
|
|
9
14
|
- [BUGFIX: bundle_report outdated was giving an exception due to missing method latest_version](https://github.com/fastruby/next_rails/pull/62)
|
|
10
15
|
|
|
16
|
+
- [FEATURE: `bundle_report outdated` outputs in JSON format when passed optional argument](https://github.com/fastruby/next_rails/pull/61)
|
|
17
|
+
|
|
11
18
|
# v1.2.0 / 2022-08-12 [(commits)](https://github.com/fastruby/next_rails/compare/v1.1.0...v1.2.0)
|
|
12
19
|
|
|
13
20
|
- [FEATURE: Support Ruby versions as old as Ruby 2.0](https://github.com/fastruby/next_rails/pull/54)
|
data/README.md
CHANGED
|
@@ -29,10 +29,17 @@ Learn about your Gemfile and see what needs updating.
|
|
|
29
29
|
```bash
|
|
30
30
|
# Show all out-of-date gems
|
|
31
31
|
bundle_report outdated
|
|
32
|
+
|
|
32
33
|
# Show five oldest, out-of-date gems
|
|
33
34
|
bundle_report outdated | head -n 5
|
|
35
|
+
|
|
36
|
+
# Show all out-of-date gems in machine readable JSON format
|
|
37
|
+
bundle_report outdated --json
|
|
38
|
+
|
|
34
39
|
# Show gems that don't work with Rails 5.2.0
|
|
35
40
|
bundle_report compatibility --rails-version=5.2.0
|
|
41
|
+
|
|
42
|
+
# Show the usual help message
|
|
36
43
|
bundle_report --help
|
|
37
44
|
# Find minimum compatible ruby version with Rails 7.0.0
|
|
38
45
|
bundle_report ruby_check --rails-version=7.0.0
|
|
@@ -91,7 +98,7 @@ deprecations run
|
|
|
91
98
|
deprecations --help # For more options and examples
|
|
92
99
|
```
|
|
93
100
|
|
|
94
|
-
Right now, the path to the shitlist is hardcoded so make sure you store yours at `spec/support/
|
|
101
|
+
Right now, the path to the shitlist is hardcoded so make sure you store yours at `spec/support/deprecation_warning.shitlist.json`.
|
|
95
102
|
|
|
96
103
|
#### `next_rails` command
|
|
97
104
|
|
|
@@ -115,7 +122,9 @@ next rails s # Start server using Gemfile.next
|
|
|
115
122
|
|
|
116
123
|
## Installation
|
|
117
124
|
|
|
118
|
-
Add this line to your application's Gemfile
|
|
125
|
+
Add this line to your application's Gemfile
|
|
126
|
+
|
|
127
|
+
> NOTE: If you add this gem to a group, make sure it is the test env group
|
|
119
128
|
|
|
120
129
|
```ruby
|
|
121
130
|
gem 'next_rails'
|
data/exe/bundle_report
CHANGED
|
@@ -17,6 +17,7 @@ at_exit do
|
|
|
17
17
|
Examples:
|
|
18
18
|
#{$0} compatibility --rails-version 5.0
|
|
19
19
|
#{$0} outdated
|
|
20
|
+
#{$0} outdated --json
|
|
20
21
|
|
|
21
22
|
ruby_check To find a compatible ruby version for the target rails version
|
|
22
23
|
|
|
@@ -36,6 +37,10 @@ at_exit do
|
|
|
36
37
|
options[:include_rails_gems] = true
|
|
37
38
|
end
|
|
38
39
|
|
|
40
|
+
opts.on("--json", "Output JSON in outdated report (defaults to false)") do
|
|
41
|
+
options[:format] = 'json'
|
|
42
|
+
end
|
|
43
|
+
|
|
39
44
|
opts.on_tail("-h", "--help", "Show this message") do
|
|
40
45
|
puts opts
|
|
41
46
|
exit
|
|
@@ -54,7 +59,7 @@ at_exit do
|
|
|
54
59
|
|
|
55
60
|
case report_type
|
|
56
61
|
when "ruby_check" then NextRails::BundleReport.compatible_ruby_version(rails_version: options.fetch(:rails_version))
|
|
57
|
-
when "outdated" then NextRails::BundleReport.outdated
|
|
62
|
+
when "outdated" then NextRails::BundleReport.outdated(options.fetch(:format, nil))
|
|
58
63
|
else
|
|
59
64
|
NextRails::BundleReport.compatibility(rails_version: options.fetch(:rails_version, "5.0"), include_rails_gems: options.fetch(:include_rails_gems, false))
|
|
60
65
|
end
|
data/lib/deprecation_tracker.rb
CHANGED
|
@@ -18,12 +18,16 @@ class DeprecationTracker
|
|
|
18
18
|
@callbacks ||= []
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
-
def warn(*messages)
|
|
21
|
+
def warn(*messages, uplevel: nil)
|
|
22
22
|
KernelWarnTracker.callbacks.each do |callback|
|
|
23
23
|
messages.each { |message| callback.(message) }
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
if Gem::Version.new(RUBY_VERSION) < Gem::Version.new("2.5.0")
|
|
27
|
+
super *messages
|
|
28
|
+
else
|
|
29
|
+
super
|
|
30
|
+
end
|
|
27
31
|
end
|
|
28
32
|
end
|
|
29
33
|
|
|
@@ -5,8 +5,10 @@ require "json"
|
|
|
5
5
|
require "net/http"
|
|
6
6
|
|
|
7
7
|
module NextRails
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
module BundleReport
|
|
9
|
+
extend self
|
|
10
|
+
|
|
11
|
+
def compatibility(rails_version: nil, include_rails_gems: nil)
|
|
10
12
|
incompatible_gems = NextRails::GemInfo.all.reject do |gem|
|
|
11
13
|
gem.compatible_with_rails?(rails_version: rails_version) || (!include_rails_gems && gem.from_rails?)
|
|
12
14
|
end.sort_by { |gem| gem.name }
|
|
@@ -50,13 +52,13 @@ module NextRails
|
|
|
50
52
|
puts ERB.new(template, nil, "-").result(binding)
|
|
51
53
|
end
|
|
52
54
|
|
|
53
|
-
def
|
|
55
|
+
def gem_header(_gem)
|
|
54
56
|
header = "#{_gem.name} #{_gem.version}".bold
|
|
55
57
|
header << " (loaded from git)".magenta if _gem.sourced_from_git?
|
|
56
58
|
header
|
|
57
59
|
end
|
|
58
60
|
|
|
59
|
-
def
|
|
61
|
+
def compatible_ruby_version(rails_version)
|
|
60
62
|
# find all the versions of rails gem
|
|
61
63
|
uri = URI('https://rubygems.org/api/v1/versions/rails.json')
|
|
62
64
|
res = Net::HTTP.get_response(uri)
|
|
@@ -95,25 +97,62 @@ module NextRails
|
|
|
95
97
|
end
|
|
96
98
|
end
|
|
97
99
|
|
|
98
|
-
def
|
|
100
|
+
def outdated(format = nil)
|
|
99
101
|
gems = NextRails::GemInfo.all
|
|
100
102
|
out_of_date_gems = gems.reject(&:up_to_date?).sort_by(&:created_at)
|
|
101
|
-
percentage_out_of_date = ((out_of_date_gems.count / gems.count.to_f) * 100).round
|
|
102
103
|
sourced_from_git = gems.select(&:sourced_from_git?)
|
|
103
104
|
|
|
104
|
-
|
|
105
|
-
|
|
105
|
+
if format == 'json'
|
|
106
|
+
output_to_json(out_of_date_gems, gems.count, sourced_from_git.count)
|
|
107
|
+
else
|
|
108
|
+
output_to_stdout(out_of_date_gems, gems.count, sourced_from_git.count)
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def output_to_json(out_of_date_gems, total_gem_count, sourced_from_git_count)
|
|
113
|
+
obj = build_json(out_of_date_gems, total_gem_count, sourced_from_git_count)
|
|
114
|
+
puts JSON.pretty_generate(obj)
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def build_json(out_of_date_gems, total_gem_count, sourced_from_git_count)
|
|
118
|
+
output = Hash.new { [] }
|
|
119
|
+
out_of_date_gems.each do |gem|
|
|
120
|
+
output[:outdated_gems] += [
|
|
121
|
+
{
|
|
122
|
+
name: gem.name,
|
|
123
|
+
installed_version: gem.version,
|
|
124
|
+
installed_age: gem.age,
|
|
125
|
+
latest_version: gem.latest_version.version,
|
|
126
|
+
latest_age: gem.latest_version.age
|
|
127
|
+
}
|
|
128
|
+
]
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
output.merge(
|
|
132
|
+
{
|
|
133
|
+
sourced_from_git_count: sourced_from_git_count,
|
|
134
|
+
total_gem_count: total_gem_count
|
|
135
|
+
}
|
|
136
|
+
)
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
def output_to_stdout(out_of_date_gems, total_gem_count, sourced_from_git_count)
|
|
140
|
+
out_of_date_gems.each do |gem|
|
|
141
|
+
header = "#{gem.name} #{gem.version}"
|
|
106
142
|
|
|
107
143
|
puts <<-MESSAGE
|
|
108
|
-
#{header.bold.white}: released #{
|
|
144
|
+
#{header.bold.white}: released #{gem.age} (latest version, #{gem.latest_version.version}, released #{gem.latest_version.age})
|
|
109
145
|
MESSAGE
|
|
110
146
|
end
|
|
111
147
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
#{
|
|
115
|
-
#{
|
|
148
|
+
percentage_out_of_date = ((out_of_date_gems.count / total_gem_count.to_f) * 100).round
|
|
149
|
+
footer = <<-MESSAGE
|
|
150
|
+
#{sourced_from_git_count.to_s.yellow} gems are sourced from git
|
|
151
|
+
#{out_of_date_gems.count.to_s.red} of the #{total_gem_count} gems are out-of-date (#{percentage_out_of_date}%)
|
|
116
152
|
MESSAGE
|
|
153
|
+
|
|
154
|
+
puts ''
|
|
155
|
+
puts footer
|
|
117
156
|
end
|
|
118
157
|
end
|
|
119
|
-
end
|
|
158
|
+
end
|
data/lib/next_rails/gem_info.rb
CHANGED
|
@@ -79,7 +79,7 @@ module NextRails
|
|
|
79
79
|
def state(rails_version)
|
|
80
80
|
if compatible_with_rails?(rails_version: rails_version)
|
|
81
81
|
:compatible
|
|
82
|
-
elsif latest_compatible_version.version == "NOT FOUND"
|
|
82
|
+
elsif latest_compatible_version && latest_compatible_version.version == "NOT FOUND"
|
|
83
83
|
:no_new_version
|
|
84
84
|
elsif latest_compatible_version
|
|
85
85
|
:found_compatible
|
data/lib/next_rails/version.rb
CHANGED
data/pull_request_template.md
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
|
-
|
|
1
|
+
## Description
|
|
2
|
+
<!--- Describe your changes in detail -->
|
|
2
3
|
|
|
3
|
-
|
|
4
|
+
## Motivation and Context
|
|
5
|
+
<!--- Why is this change required? What problem does it solve? -->
|
|
6
|
+
<!--- If it fixes an open issue, please link to the issue here. -->
|
|
4
7
|
|
|
5
|
-
|
|
8
|
+
## How Has This Been Tested?
|
|
9
|
+
<!--- Include any relevant details about your testing environment and the steps you followed -->
|
|
10
|
+
<!--- For example: I am using [Safari|Firefox|Chrome] then I visit [the users path] -->
|
|
6
11
|
|
|
7
|
-
|
|
12
|
+
## Screenshots:
|
|
13
|
+
<!-- Add screenshots (applicable to any UI changes) -->
|
|
8
14
|
|
|
9
|
-
I will abide by the [code of conduct](https://github.com/fastruby/next_rails/blob/main/CODE_OF_CONDUCT.md)
|
|
15
|
+
**I will abide by the [code of conduct](https://github.com/fastruby/next_rails/blob/main/CODE_OF_CONDUCT.md)**
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: next_rails
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.2.
|
|
4
|
+
version: 1.2.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ernesto Tagwerker
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: exe
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
12
|
+
date: 2023-03-20 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: colorize
|
|
@@ -194,7 +194,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
194
194
|
- !ruby/object:Gem::Version
|
|
195
195
|
version: '0'
|
|
196
196
|
requirements: []
|
|
197
|
-
rubygems_version: 3.
|
|
197
|
+
rubygems_version: 3.0.9
|
|
198
198
|
signing_key:
|
|
199
199
|
specification_version: 4
|
|
200
200
|
summary: A toolkit to upgrade your next Rails application
|