Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

pry-debundle

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pry-debundle

  • 0.8
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

pry-debundle allows you to require gems that are not in your Gemfile when inspecting programs that are run with Bundler.

Usage

Use the pry command, or binding.pry as normal. Watch how you can require any gem, even if it's not in your Gemfile and celebrate! Avoid getting confused by that fact when trying to debug 'require' statements.

Installation

Add pry and pry-debundle to the Gemfile. These are both required, and have few (if any) ill effects for developers who don't wish to use them.

group :development do
  gem 'pry'
  gem 'pry-debundle'
  # other development gems everyone needs go here.
end

If you need to install these gems without buy-in from the rest of your team (sad panda) there are instructions under Personal Installation.

Long-winded Explanation

Bundler is an awesome gem that gives you a good degree of confidence that "if it works in development, it works in production". It can do this by being vicious about gem dependencies: if it's not in the Gemfile, it's not getting required. It also ensures that everyone's development environment is identical, no more does "it works on my machine" cut it as an excuse.

There are circumstances when this dogmatic dedication to duty can get in the way. In particular all good developers have set up their development environment very personally. Obviously, it's not important that my local tools work in production, and it's positively bad for productivity if everyone is forced to have an identicial development setup.

So how do you reconcile these two points of view: "it should work the same everywhere", and "it should be ideal for me"?

The obvious answer is to compromise; mostly "it should work the same everywhere", but when I'm actively working on it (i.e. I have my Pry open) "it should be ideal for me".

To this end, pry-debundle will do nothing (I mean absolutely nothing) until you start pry. At that point, the chains locking you into the Bundler jail are hacked asunder, and immediately your precious pry plugins load, and all of those random gems you've collected will be available to require as normal.

Before you rush off to try this, a word of warning: you will waste debugging time because of this. Why? Because running a require 'ampex' inside Pry works, but running a require 'ampex' outside Pry doesn't. "XOMGWTF? Ohhhh! GAH!!" I hear your future self cry as you forget this warning, and then painfully recall it.

As the adage goes: "No gain, without pain".

Personal Installation

So let's say everyone on your team wants to use pry, but some of them are too scared to use pry-debundle. This is pretty easy to support. Just add Pry to the Gemfile as before, and then copy the implementation of the gem into your ~/.pryrc

group :development do
  gem 'pry'
  # other development gems everyone needs go here.
end
curl https://raw.github.com/ConradIrwin/pry-debundle/master/lib/pry-debundle.rb >> ~/.pryrc

If you can't even persuade people to allow you to add Pry to the Gemfile, then you can write a little wrapper script to run your app to make sure Pry is loaded before Bundler, and install pry-debundle into your ~/.pryrc as above.

Meta-fu

Licensed under the MIT license (see LICENSE.MIT). Bug reports and pull requests are welcome.

It's possible that Bundler will solve this issue themselves, in which case I expect to deprecate this gem. See https://github.com/carlhuda/bundler/issues/183 for some discussion.

FAQs

Package last updated on 13 Jan 2014

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc