Let gem build load the gemspec - #27
Merged
Merged
Conversation
gem build failed with "undefined local variable or method 'gem_files' for class Gem::Specification". Rubygems evals the gemspec inside Gem::Specification, so the top-level def became an instance method, and the Gem::Specification.new block could not call it. Bundler evals the gemspec at the top level, so bundle install and rspec did not show it. gem_files and homepage are now locals, which work in both places. The new spec loads the gemspec with Gem::Specification.load in a fresh ruby without Bundler. It fails with the same error on the old gemspec. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
rake buildandrake releasefail onmaster. Both rungem build -V, and Rubygems cannot load the gemspec:Rubygems evals the gemspec inside
Gem::Specification. So the top-leveldef gem_files(from c130217) became an instance method onGem::Specification, and theGem::Specification.newblock could not call it. TheHOMEPAGEconstant also went ontoGem::Specification.Bundler evals the gemspec at the top level, so
bundle installandrspecdid not show the error.Changes
gem_filesandhomepageare now local variables. Locals work with both loaders. The file list logic does not change.spec/gemspec_spec.rb. It loads the gemspec withGem::Specification.loadin a new Ruby process without Bundler, and callsvalidate. It must use a new process, because Bundler already loaded the gemspec in the rspec process.VERSIONstays1.3.0.Evidence
gem_fileserror, and passes with this change.gem build -V active_remote-cached.gemspecsucceeds.Gem::Specification.loadandBundler.load_gemspecgive the same name, version, and file list.🤖 Generated with Claude Code