Skip to content
This repository has been archived by the owner on Apr 14, 2021. It is now read-only.

Add bundle pristine command #4509

Closed
coilysiren opened this issue May 3, 2016 · 12 comments
Closed

Add bundle pristine command #4509

coilysiren opened this issue May 3, 2016 · 12 comments

Comments

@coilysiren
Copy link
Contributor

From: rubygems/bundler-features#5

@allenzhao
Copy link
Contributor

I'm trying to implement this feature, and after reading discussion @ rubygems/bundler-features#5, and this feature can be implemented by adding support for git gems, and it supports other types of gems by just invoking bundle exec gem pristine right? @indirect @segiddins @RochesterinNYC

@RochesterinNYC
Copy link
Contributor

@allenzhao that is correct, though gems that are specified via path will need to be handled as well.

@indirect
Copy link
Member

On an installed gem, we can re-install from the .gem file, and on a git repo we can checkout --force, but for a path we don't have any original files to restore—I think calling pristine on a path gem should print an error and exit.

@RochesterinNYC
Copy link
Contributor

RochesterinNYC commented May 30, 2016

Hm, so say for a Gemfile with 100 regular and git gems and 1 path specified gem, how will the user use bundle pristine on that Gemfile? I think we should somehow support this kind of use case without requiring the user to temporarily remove or comment out the path gem and run bundle pristine.

@RochesterinNYC
Copy link
Contributor

Actually, any reason we wouldn't just print a warning (ex. "path-gem" gem specified by path "../../path-gem" could not be restored as path gems cannot be restored) rather than erroring out?

@indirect
Copy link
Member

indirect commented May 30, 2016

Oh yeah! If you're pristineing more than one gem, just a warning seems fine. I was thinking of a single gem. :) (e.g. bundle pristine my_path_gem)

@RochesterinNYC
Copy link
Contributor

Oh, gotcha. Yup, agree on the erroring out for the case of single path gem pristineing.

@allenzhao
Copy link
Contributor

I was going over gem pristine's code and command options and wondering if we need everything similar or just a few?
Any thoughts/comments?

@RochesterinNYC
Copy link
Contributor

Don't think we need -​-all as invoking bundle pristine without a gem name passed will basically be invoking on all the gems in the bundle.
Not sure how the --version indicator would apply as the Gemfile.lock would already indicate the locked version to restore.
I see the value in the others.

@RochesterinNYC
Copy link
Contributor

@segiddins @indirect input on this would be helpful as I'm not as familiar with Rubygems as y'all.

@coilysiren
Copy link
Contributor Author

ping @segiddins @indirect

I was going over gem pristine's code and command options and wondering if we need everything similar or just a few? Any thoughts/comments?

(also I think its safe to assume @allenzhao might not have time to continue working on this)

bundlerbot added a commit that referenced this issue Apr 11, 2017
Implementation of `bundle pristine`

Initial implementation of bundle pristine

Addressing:
#4509
rubygems/bundler-features#5
@segiddins
Copy link
Member

Implemented in #5503

philipefarias added a commit to dleemoo/rc-images that referenced this issue Jun 12, 2017
Changes since last version used (1.14.6):

== 1.15.1 (2017-06-02)

Bugfixes:

  - `bundle lock --update GEM` will fail gracefully when the gem is not in the lockfile (rubygems/bundler#5693, @segiddins)
  - `bundle init --gemspec` will fail gracefully when the gemspec is invalid (@colby-swandale)
  - `bundle install --force` works when the gemfile contains git gems (rubygems/bundler#5678, @segiddins)
  - `bundle env` will print well-formed markdown when there are no settings (rubygems/bundler#5677, @segiddins)

== 1.15.0 (2017-05-19)

This space intentionally left blank.

== 1.15.0.pre.4 (2017-05-10)

Bugfixes:

  - avoid conflicts when `Gem.finish_resolve` is called after the bundle has been set up (@segiddins)
  - ensure that `Gem::Specification.find_by_name` always returns an object that can have `#to_spec` called on it (rubygems/bundler#5592, @jules2689)

== 1.15.0.pre.3 (2017-04-30)

Bugfixes:

  - avoid redundant blank lines in the readme generated by `bundle gem` (@koic)
  - ensure that `open-uri` is not loaded after `bundle exec` (@segiddins)
  - print a helpful error message when an activated default gem conflicts with
    a gem in the gemfile (@segiddins)
  - only shorten `ref` option for git gems when it is a SHA (rubygems/bundler#5620, @segiddins)

== 1.15.0.pre.2 (2017-04-23)

Bugfixes:

  - ensure pre-existing fit caches are updated from remote sources (rubygems/bundler#5423, @alextaylor000)
  - avoid duplicating specs in the lockfile after updating with the gem uninstalled (rubygems/bundler#5599, @segiddins)
  - ensure git gems have their extensions available at runtime (rubygems/bundler#5594, @jules2689, @segiddins)

== 1.15.0.pre.1 (2017-04-16)

Features:

  - print a notification when a newer version of bundler is available (rubygems/bundler#4683, @segiddins)
  - add man pages for all bundler commands (rubygems/bundler#4988, @feministy)
  - add the `bundle info` command (@fredrb, @colby-swandale)
  - all files created with `bundle gem` comply with the bundler style guide (@zachahn)
  - if installing a gem fails, print out the reason the gem needed to be installed (rubygems/bundler#5078, @segiddins)
  - allow setting `gem.push_key` to set the key used when running `rake release` (@DTrierweiler)
  - print gem versions that are regressing during `bundle update` in yellow (rubygems/bundler#5506, @brchristian)
  - avoid printing extraneous dependencies when the resolver encounters a conflict (@segiddins)
  - add the `bundle issue` command that prints instructions for reporting issues (rubygems/bundler#4871, @jonathanpike)
  - add `--source` and `--group` options to the `bundle inject` command (rubygems/bundler#5452, @Shekharrajak)
  - add the `bundle add` command to add a gem to the gemfile (@denniss)
  - add the `bundle pristine` command to re-install gems from cached `.gem` files (rubygems/bundler#4509, @denniss)
  - add a `--parseable` option for `bundle config` (@JuanitoFatas, @colby-swandale)

Performance:

  - speed up gemfile initialization by storing locked dependencies as a hash (@jules2689)
  - speed up gemfile initialization by making locked dependency comparison lazy, avoiding object allocation (@jules2689)
  - only validate git gems when they are downloaded, instead of every time `Bundler.setup` is run (@segiddins)
  - avoid regenerating the lockfile when nothing has changed (@segiddins)
  - avoid diffing large arrays when no sources in the gemfile have changed (@segiddins)
  - avoid evaluating full gemspecs when running with RubyGems 2.5+ (@segiddins)

Bugfixes:

  - fix cases where `bundle update` would print a resolver conflict instead of updating the selected gems (rubygems/bundler#5031, rubygems/bundler#5095, @segiddins)
  - print out a stack trace after an interrupt when running in debug mode (@segiddins)
  - print out when bundler starts fetching a gem from a remote server (@segiddins)
  - fix `bundle gem` failing when `git` is unavailable (rubygems/bundler#5458, @Shekharrajak, @colby-swandale)
  - suggest the appropriate command to unfreeze a bundle (rubygems/bundler#5009, @denniss)
  - ensure nested calls to `bundle exec` resolve default gems correctly (rubygems/bundler#5500, @segiddins)
  - ensure that a plugin failing to install doesn't uninstall other plugins (@kerrizor, @roseaboveit)
  - ensure `socket` is required before being referenced (rubygems/bundler#5533, @rafaelfranca)
  - allow running `bundle outdated` when gems aren't installed locally (rubygems/bundler#5553, @segiddins)
  - print a helpful error when `bundle exec`ing to a gem that isn't included in the bundle (rubygems/bundler#5487, @segiddins)
  - print an error message when a non-git gem is given a `branch` option (rubygems/bundler#5530, @colby-swandale)
  - allow interrupts to exit the process after gems have been installed (@segiddins)
  - print the underlying error when downloading gem metadata fails (rubygems/bundler#5579, @segiddins)
  - avoid deadlocking when installing with a lockfile that is missing dependencies (rubygems/bundler#5378, rubygems/bundler#5480, rubygems/bundler#5519, rubygems/bundler#5526, rubygems/bundler#5529, rubygems/bundler#5549, rubygems/bundler#5572, @segiddins)
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

5 participants