From f27e0d90c865a19d42c222a82e13ee4c40352bf7 Mon Sep 17 00:00:00 2001 From: Yusuke Endoh Date: Sun, 24 May 2020 03:58:59 +0900 Subject: [PATCH] ext/fiddle/fiddle.gemspec: avoid require lib/fiddle/version.rb It loads `ext/fiddle/lib/fiddle/version.rb`, which causes constant redefinition warning: http://rubyci.s3.amazonaws.com/ubuntu2004/ruby-master/log/20200523T153003Z.log.html.gz ``` [ 6317/20193] TestDefaultGems#test_validate_gemspec/home/chkbuild/chkbuild/tmp/build/20200523T153003Z/ruby/ext/fiddle/lib/fiddle/version.rb:2: warning: already initialized constant Fiddle::VERSION /home/chkbuild/chkbuild/tmp/build/20200523T153003Z/ruby/.ext/common/fiddle/version.rb:2: warning: previous definition of VERSION was here = 0.16 s ``` This changeset read the version by manual parsing hack which is also used in stringio and zlib. --- ext/fiddle/fiddle.gemspec | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/ext/fiddle/fiddle.gemspec b/ext/fiddle/fiddle.gemspec index 0229d3e166..befa7aeff5 100644 --- a/ext/fiddle/fiddle.gemspec +++ b/ext/fiddle/fiddle.gemspec @@ -1,15 +1,18 @@ # frozen_string_literal: true -begin - require_relative "lib/fiddle/version" -rescue LoadError - # for Ruby core repository - require_relative "version" +source_version = ["", "ext/fiddle/"].find do |dir| + begin + break File.open(File.join(__dir__, "#{dir}lib/fiddle/version.rb")) {|f| + f.gets("\n VERSION = ") + f.gets[/\s*"(.+)"/, 1] + } + rescue Errno::ENOENT + end end Gem::Specification.new do |spec| spec.name = "fiddle" - spec.version = Fiddle::VERSION + spec.version = source_version spec.authors = ["Aaron Patterson", "SHIBATA Hiroshi"] spec.email = ["aaron@tenderlovemaking.com", "hsbt@ruby-lang.org"]