Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Print warning when specified gem not found #1367

Merged
merged 1 commit into from
Aug 14, 2023
Merged

Conversation

ksss
Copy link
Collaborator

@ksss ksss commented Jul 10, 2023

Problem

When I do collection install on a project I haven't started in a while, I get the following error.
The cause is that the gem is incorrectly specified, but even if the destination, such as prime, is changed, its name is not displayed and the user does not know what to do.

$ bundle exec rbs collection install
bundler: failed to load command: rbs (/Users/yuki.kurihara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/bin/rbs)
/Users/yuki.kurihara/src/github.com/ksss/rbs/lib/rbs/collection/config/lockfile_generator.rb:136:in `assign_gem': undefined method `dependencies' for nil:NilClass (NoMethodError)

          gem_hash[name].dependencies.each do |dep|
                        ^^^^^^^^^^^^^
	from /Users/yuki.kurihara/src/github.com/ksss/rbs/lib/rbs/collection/config/lockfile_generator.rb:69:in `block in generate'
	from /Users/yuki.kurihara/src/github.com/ksss/rbs/lib/rbs/collection/config/lockfile_generator.rb:63:in `each'
	from /Users/yuki.kurihara/src/github.com/ksss/rbs/lib/rbs/collection/config/lockfile_generator.rb:63:in `generate'
	from /Users/yuki.kurihara/src/github.com/ksss/rbs/lib/rbs/collection/config/lockfile_generator.rb:27:in `generate'
	from /Users/yuki.kurihara/src/github.com/ksss/rbs/lib/rbs/collection/config.rb:36:in `generate_lockfile'
	from /Users/yuki.kurihara/src/github.com/ksss/rbs/lib/rbs/cli.rb:1103:in `run_collection'
	from /Users/yuki.kurihara/src/github.com/ksss/rbs/lib/rbs/cli.rb:137:in `run'
	from /Users/yuki.kurihara/src/github.com/ksss/rbs/exe/rbs:7:in `<top (required)>'
	from /Users/yuki.kurihara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/bin/rbs:25:in `load'
	from /Users/yuki.kurihara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/bin/rbs:25:in `<top (required)>'
	from /Users/yuki.kurihara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.9/lib/bundler/cli/exec.rb:58:in `load'
	from /Users/yuki.kurihara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.9/lib/bundler/cli/exec.rb:58:in `kernel_load'
	from /Users/yuki.kurihara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.9/lib/bundler/cli/exec.rb:23:in `run'
	from /Users/yuki.kurihara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.9/lib/bundler/cli.rb:483:in `exec'
	from /Users/yuki.kurihara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.9/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
	from /Users/yuki.kurihara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.9/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
	from /Users/yuki.kurihara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.9/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
	from /Users/yuki.kurihara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.9/lib/bundler/cli.rb:31:in `dispatch'
	from /Users/yuki.kurihara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.9/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
	from /Users/yuki.kurihara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.9/lib/bundler/cli.rb:25:in `start'
	from /Users/yuki.kurihara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.9/exe/bundle:48:in `block in <top (required)>'
	from /Users/yuki.kurihara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.9/lib/bundler/friendly_errors.rb:103:in `with_friendly_errors'
	from /Users/yuki.kurihara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.9/exe/bundle:36:in `<top (required)>'
	from /Users/yuki.kurihara/.rbenv/versions/3.2.2/bin/bundle:25:in `load'
	from /Users/yuki.kurihara/.rbenv/versions/3.2.2/bin/bundle:25:in `<main>'

Similarly, if a gem is removed from the Gemfile.lock even though it is specified in rbs_collection.yaml, it is similarly difficult to determine the cause.

$ bundle exec rbs collection install
bundler: failed to load command: rbs (/Users/yuki.kurihara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/bin/rbs)
/Users/yuki.kurihara/src/github.com/ksss/rbs/lib/rbs/collection/sources/stdlib.rb:30:in `manifest_of': unhandled exception
	from /Users/yuki.kurihara/src/github.com/ksss/rbs/lib/rbs/collection/sources/base.rb:8:in `dependencies_of'
	from /Users/yuki.kurihara/src/github.com/ksss/rbs/lib/rbs/collection/config/lockfile_generator.rb:130:in `assign_gem'
	from /Users/yuki.kurihara/src/github.com/ksss/rbs/lib/rbs/collection/config/lockfile_generator.rb:69:in `block in generate'
	from /Users/yuki.kurihara/src/github.com/ksss/rbs/lib/rbs/collection/config/lockfile_generator.rb:63:in `each'
	from /Users/yuki.kurihara/src/github.com/ksss/rbs/lib/rbs/collection/config/lockfile_generator.rb:63:in `generate'
	from /Users/yuki.kurihara/src/github.com/ksss/rbs/lib/rbs/collection/config/lockfile_generator.rb:27:in `generate'
	from /Users/yuki.kurihara/src/github.com/ksss/rbs/lib/rbs/collection/config.rb:36:in `generate_lockfile'
	from /Users/yuki.kurihara/src/github.com/ksss/rbs/lib/rbs/cli.rb:1103:in `run_collection'
	from /Users/yuki.kurihara/src/github.com/ksss/rbs/lib/rbs/cli.rb:137:in `run'
	from /Users/yuki.kurihara/src/github.com/ksss/rbs/exe/rbs:7:in `<top (required)>'
	from /Users/yuki.kurihara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/bin/rbs:25:in `load'
	from /Users/yuki.kurihara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/bin/rbs:25:in `<top (required)>'
	from /Users/yuki.kurihara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.9/lib/bundler/cli/exec.rb:58:in `load'
	from /Users/yuki.kurihara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.9/lib/bundler/cli/exec.rb:58:in `kernel_load'
	from /Users/yuki.kurihara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.9/lib/bundler/cli/exec.rb:23:in `run'
	from /Users/yuki.kurihara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.9/lib/bundler/cli.rb:483:in `exec'
	from /Users/yuki.kurihara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.9/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
	from /Users/yuki.kurihara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.9/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
	from /Users/yuki.kurihara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.9/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
	from /Users/yuki.kurihara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.9/lib/bundler/cli.rb:31:in `dispatch'
	from /Users/yuki.kurihara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.9/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
	from /Users/yuki.kurihara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.9/lib/bundler/cli.rb:25:in `start'
	from /Users/yuki.kurihara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.9/exe/bundle:48:in `block in <top (required)>'
	from /Users/yuki.kurihara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.9/lib/bundler/friendly_errors.rb:103:in `with_friendly_errors'
	from /Users/yuki.kurihara/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.9/exe/bundle:36:in `<top (required)>'
	from /Users/yuki.kurihara/.rbenv/versions/3.2.2/bin/bundle:25:in `load'
	from /Users/yuki.kurihara/.rbenv/versions/3.2.2/bin/bundle:25:in `<main>'

Proposal

I propose to prompt the user to correct the problem by displaying a warning about the cause.

$ bundle exec rbs collection install
W, [2023-07-10T13:52:32.391591 #12012]  WARN -- rbs: `prime` is specified in rbs_collection.lock.yaml. But it is not found in /Users/yuki.kurihara/src/github.com/ksss/rbs/stdlib
W, [2023-07-10T13:52:32.391602 #12012]  WARN -- rbs: `prime` is specified in rbs_collection.yaml. But, it was not found in Gemfile.lock

@soutaro soutaro added this to the RBS 3.2 milestone Jul 13, 2023
@soutaro
Copy link
Member

soutaro commented Aug 14, 2023

Removed the change in lockfile_generator.rb because it's duplicated with #1378.

@soutaro soutaro enabled auto-merge August 14, 2023 06:57
@soutaro soutaro added this pull request to the merge queue Aug 14, 2023
Merged via the queue into ruby:master with commit 09ca613 Aug 14, 2023
23 checks passed
@ksss ksss deleted the missing branch August 14, 2023 07:08
@soutaro soutaro added the Released PRs already included in the released version label Aug 18, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Released PRs already included in the released version
Development

Successfully merging this pull request may close these issues.

2 participants