Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 23c46f3

Browse files
Fix crash when running bundle outdated in debug mode
Previously it would crash like this: ```` $ /Users/deivid/.asdf/installs/ruby/3.1.2/bin/ruby -I/Users/deivid/Code/rubygems/rubygems/bundler/spec -r/Users/deivid/Code/rubygems/rubygems/bundler/spec/support/artifice/fail.rb -r/Users/deivid/Code/rubygems/rubygems/bundler/spec/support/hax.rb /Users/deivid/Code/rubygems/rubygems/bundler/tmp/1/gems/system/bin/bundle outdated --patch --strict --filter-patch Running `bundle outdated --filter-patch --patch --strict` with bundler 2.4.0.dev Found changes from the lockfile, re-resolving dependencies because bundler is unlocking Using a local server, bundler won't use the CompactIndex API Fetching source index from file:///Users/deivid/Code/rubygems/rubygems/bundler/tmp/1/gems/remote4/ Resolving dependencies... --- ERROR REPORT TEMPLATE ------------------------------------------------------- ``` RuntimeError: LazySpecification has not been materialized yet (calling :loaded_from []) /Users/deivid/Code/rubygems/rubygems/bundler/tmp/1/gems/system/gems/bundler-2.4.0.dev/lib/bundler/lazy_specification.rb:147:in `method_missing' /Users/deivid/Code/rubygems/rubygems/bundler/tmp/1/gems/system/gems/bundler-2.4.0.dev/lib/bundler/cli/outdated.rb:214:in `gem_column_for' /Users/deivid/Code/rubygems/rubygems/bundler/tmp/1/gems/system/gems/bundler-2.4.0.dev/lib/bundler/cli/outdated.rb:174:in `block in print_gems_table' /Users/deivid/Code/rubygems/rubygems/bundler/tmp/1/gems/system/gems/bundler-2.4.0.dev/lib/bundler/cli/outdated.rb:173:in `map' /Users/deivid/Code/rubygems/rubygems/bundler/tmp/1/gems/system/gems/bundler-2.4.0.dev/lib/bundler/cli/outdated.rb:173:in `print_gems_table' /Users/deivid/Code/rubygems/rubygems/bundler/tmp/1/gems/system/gems/bundler-2.4.0.dev/lib/bundler/cli/outdated.rb:123:in `run' /Users/deivid/Code/rubygems/rubygems/bundler/tmp/1/gems/system/gems/bundler-2.4.0.dev/lib/bundler/cli.rb:420:in `outdated' /Users/deivid/Code/rubygems/rubygems/bundler/tmp/1/gems/system/gems/bundler-2.4.0.dev/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run' /Users/deivid/Code/rubygems/rubygems/bundler/tmp/1/gems/system/gems/bundler-2.4.0.dev/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command' /Users/deivid/Code/rubygems/rubygems/bundler/tmp/1/gems/system/gems/bundler-2.4.0.dev/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch' /Users/deivid/Code/rubygems/rubygems/bundler/tmp/1/gems/system/gems/bundler-2.4.0.dev/lib/bundler/cli.rb:31:in `dispatch' /Users/deivid/Code/rubygems/rubygems/bundler/tmp/1/gems/system/gems/bundler-2.4.0.dev/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start' /Users/deivid/Code/rubygems/rubygems/bundler/tmp/1/gems/system/gems/bundler-2.4.0.dev/lib/bundler/cli.rb:25:in `start' /Users/deivid/Code/rubygems/rubygems/bundler/tmp/1/gems/system/gems/bundler-2.4.0.dev/exe/bundle:48:in `block in <top (required)>' /Users/deivid/Code/rubygems/rubygems/bundler/tmp/1/gems/system/gems/bundler-2.4.0.dev/lib/bundler/friendly_errors.rb:120:in `with_friendly_errors' /Users/deivid/Code/rubygems/rubygems/bundler/tmp/1/gems/system/gems/bundler-2.4.0.dev/exe/bundle:36:in `<top (required)>' /Users/deivid/Code/rubygems/rubygems/bundler/tmp/1/gems/system/bin/bundle:25:in `load' /Users/deivid/Code/rubygems/rubygems/bundler/tmp/1/gems/system/bin/bundle:25:in `<main>' ``` ````
1 parent 9be5eae commit 23c46f3

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

bundler/lib/bundler/cli/outdated.rb

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,12 @@ def run
129129

130130
private
131131

132+
def loaded_from_for(spec)
133+
return unless spec.respond_to?(:loaded_from)
134+
135+
spec.loaded_from
136+
end
137+
132138
def groups_text(group_text, groups)
133139
"#{group_text}#{groups.split(",").size > 1 ? "s" : ""} \"#{groups}\""
134140
end
@@ -184,7 +190,10 @@ def print_gems_table(gems_list)
184190

185191
def print_gem(current_spec, active_spec, dependency, groups)
186192
spec_version = "#{active_spec.version}#{active_spec.git_version}"
187-
spec_version += " (from #{active_spec.loaded_from})" if Bundler.ui.debug? && active_spec.loaded_from
193+
if Bundler.ui.debug?
194+
loaded_from = loaded_from_for(active_spec)
195+
spec_version += " (from #{loaded_from})" if loaded_from
196+
end
188197
current_version = "#{current_spec.version}#{current_spec.git_version}"
189198

190199
if dependency && dependency.specific?
@@ -211,7 +220,7 @@ def gem_column_for(current_spec, active_spec, dependency, groups)
211220
dependency = dependency.requirement if dependency
212221

213222
ret_val = [active_spec.name, current_version, spec_version, dependency.to_s, groups.to_s]
214-
ret_val << active_spec.loaded_from.to_s if Bundler.ui.debug?
223+
ret_val << loaded_from_for(active_spec).to_s if Bundler.ui.debug?
215224
ret_val
216225
end
217226

bundler/spec/commands/outdated_spec.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1207,6 +1207,18 @@ def test_group_option(group)
12071207

12081208
expect(out).to end_with(expected_output)
12091209
end
1210+
1211+
it "shows gems with --strict updating to patch and filtering to patch, in debug mode" do
1212+
bundle "outdated --patch --strict --filter-patch", :raise_on_error => false, :env => { "DEBUG" => "1" }
1213+
1214+
expected_output = <<~TABLE.strip
1215+
Gem Current Latest Requested Groups Path
1216+
bar 2.0.3 2.0.5
1217+
foo 1.4.3 1.4.4 >= 0 default
1218+
TABLE
1219+
1220+
expect(out).to end_with(expected_output)
1221+
end
12101222
end
12111223
end
12121224

0 commit comments

Comments
 (0)