Skip to content

Gemfiles that use :path broken between 1.7.13 and 1.7.15 #1965

@cprice404

Description

@cprice404

If you run this shell script:

#!/usr/bin/env bash

mkdir foo
cd foo

cat <<EOF > ./Gemfile
source ENV['GEM_SOURCE'] || "https://rubygems.org"

puts "foo gem, path/dirname: #{__FILE__} / #{File.dirname(__FILE__)}"
gem "foo", :path => File.dirname(__FILE__), :require => false
EOF

cat <<EOF > ./.gemspec
Gem::Specification.new do |s|
  s.name = "foo"
  version = "0.0.1"
  mdata = version.match(/(\d+\.\d+\.\d+)/)
  s.version = mdata ? mdata[1] : version
  s.authors = ["foo"]
  s.summary = "foo"
end
EOF

it will create a minimal directory structure that has a Gemfile and a .gemspec, where the Gemfile uses the :path attribute to reference the .gemspec in the local directory.

This works fine with bundler under jruby 1.7.13, but doesn't work under 1.7.15:

$ cd foo
$ rbenv shell jruby-1.7.15
$ bundle install --path ./bundle
foo gem, path/dirname: /opt/git/foo/foo/Gemfile / /opt/git/foo/foo
Fetching gem metadata from https://rubygems.org/...........
Resolving dependencies...

RuntimeError: no gemspec found
An error occurred while installing foo (0.0.1), and Bundler cannot continue.
Make sure that `gem install foo -v '0.0.1'` succeeds before bundling.
$ rbenv shell jruby-1.7.13
$ bundle install --path ./bundle
foo gem, path/dirname: /opt/git/foo/foo/Gemfile / /opt/git/foo/foo
Fetching gem metadata from https://rubygems.org/...........
Resolving dependencies...
Using foo 0.0.1 from source at /opt/git/jvm-puppet/puppet-server/ruby/foo/foo
Using bundler 1.7.2
Your bundle is complete!
It was installed into ./bundle

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions