Created
January 25, 2011 13:33
-
-
Save skojin/794915 to your computer and use it in GitHub Desktop.
workaround to load irb specific gem (loaded in .irbrc) in bundler environment, like rails3 console
This file contains 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
# Add all gems in the global gemset to the $LOAD_PATH so they can be used in rails3 console with bundler | |
if defined?(::Bundler) | |
$LOAD_PATH.concat Dir.glob("#{ENV['rvm_path']}/gems/#{ENV['rvm_ruby_string']}@global/gems/*/lib") | |
end |
Nice, i'll give it a try :)
oh c'mon.
module Bundler
# Activate a gem from outside the Gemfile. Could be considered harmful.
# Might be useful for .irbrc and friends. It's a slow activation, but
# after activation, files from the activated gems will be available for
# normal require.
def self.activate_outside(*gems)
# Bundler doesn't cripple this:
Gem.source_index.refresh!
# Or this:
Gem.activate(*gems)
ensure
# Re-enable the bundler lockdown via bundlers #initialize hack
Gem.send(:class_variable_set, :@@source_index, nil)
end
end
Your solution looks wonderful. Thank you for sharing. I'll update my irbrc.
Here's an alternative that's working for me, just stick this in your .irbrc :
# Add all gems in the global gemset to the $LOAD_PATH so they can be used even
# in places like 'rails console'.
if defined?(::Bundler)
global_gemset = ENV['GEM_PATH'].split(':').grep(/ruby.*@global/).first
if global_gemset
all_global_gem_paths = Dir.glob("#{global_gemset}/gems/*")
all_global_gem_paths.each do |p|
gem_path = "#{p}/lib"
$LOAD_PATH << gem_path
end
end
end
@mschulkind your solution is better, but I'm not found GEM_PATH, in my ENV, but found ENV['rvm_ruby_global_gems_path'].
I'm updated gist with new version
@skojin I tried your solution but it didn't work for me. ENV['rvm_ruby_string']
is empty.
@mschulkind's alternative worked fine for me.
@mschulkind Thanks for posting that snippet. I've shortened it a bit, to make it a bit easier to grok:
# Add all gems in the global gemset to the $LOAD_PATH so they can be used even
# in places like 'rails console'.
if defined?(::Bundler)
global_gemset = ENV['GEM_PATH'].split(':').grep(/ruby.*@global/).first
$LOAD_PATH.concat(Dir.glob("#{global_gemset}/gems/*/lib")) if global_gemset
end
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
use as require_without_bundler 'awesome_print', 'hirb', 'interactive_editor'