Heisen-loading of 2.0.12
If I install 2.0.12, it breaks https://github.com/flavio/jump; 2.0.8 works fine, though. Here's an illustration of the problem (note that it's undefined method, not wrong number of arguments:
$ gem list psych
*** LOCAL GEMS ***
psych (2.0.12, 2.0.8)
$ ruby -r yaml -e 'puts Psych.methods.include?(:load_file)'
true
$ pry -r yaml
[1] pry(main)> Psych.load_file
NoMethodError: undefined method `load_file' for Psych:Module
from (pry):1:in `__pry__'
[2] pry(main)> Psych::load_file
NoMethodError: undefined method `load_file' for Psych:Module
from (pry):2:in `__pry__'
[3] pry(main)>
See https://gist.github.com/cdlm/4f90f67ce0fadd40f946
I don't see this anymore with ruby 2.1.2 and psych 2.0.13.
Wait… yes I do… :confused:
What version of pry are you using?
*** LOCAL GEMS ***
pry (0.10.1)
But the main way I see the problem is when http://github.com/flavio/jump tries to load its config file… I just used pry to investigate the problem.
The repro you're showing above doesn't have jump involved though, right?
[aaron@TC ~]$ gem list jump pry psych
*** LOCAL GEMS ***
jump (0.4.0)
*** LOCAL GEMS ***
pry (0.10.1)
*** LOCAL GEMS ***
psych (2.0.13, 2.0.12, 2.0.10, 2.0.8)
[aaron@TC ~]$ pry -r yaml
[1] pry(main)> Psych.load_file
ArgumentError: wrong number of arguments (0 for 1)
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/2.3.0/psych.rb:463:in `load_file'
[2] pry(main)>
Indeed. But if you have a look at the incriminated line in jump, you'll see it does a nice sweep-that-exception-under-the-rug move…
/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/jump-0.4.0/lib/bookmarks.rb:35:in `rescue in initialize': Can't load configuration file (RuntimeError)
from /Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/jump-0.4.0/lib/bookmarks.rb:30:in `initialize'
from /Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/jump-0.4.0/bin/jump-bin:78:in `new'
from /Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/jump-0.4.0/bin/jump-bin:78:in `<top (required)>'
from /Users/damien/.rbenv/versions/2.2.1/bin/jump-bin:23:in `load'
from /Users/damien/.rbenv/versions/2.2.1/bin/jump-bin:23:in `<main>'
I suspect a possibility is that one of rbenv's plugin is to blame, but how to know?
Can you try RUBYOPT=-d pry -rpsych? It will probably spew a bunch of output, but you'll be able to see any exceptions that were caught. Maybe that will give us a clue?
So I killed and reinstalled rbenv…
$ rbenv versions
system
* 2.2.1 (set by /Users/damien/.rbenv/version)
$ gem list jump pry psych
*** LOCAL GEMS ***
jump (0.4.0)
*** LOCAL GEMS ***
pry (0.10.1)
*** LOCAL GEMS ***
psych (2.0.13, 2.0.8)
$ ruby -ryaml -de 'Psych.load_file'
Exception `LoadError' at /Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/rubygems.rb:1222 - cannot load such file -- rubygems/defaults/operating_system
Exception `LoadError' at /Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/rubygems.rb:1231 - cannot load such file -- rubygems/defaults/ruby
Exception `NameError' at /Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/psych-2.0.13/lib/psych/class_loader.rb:67 - uninitialized constant BigDecimal
Exception `NameError' at /Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/psych-2.0.13/lib/psych/class_loader.rb:67 - uninitialized constant Date
Exception `NameError' at /Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/psych-2.0.13/lib/psych/class_loader.rb:67 - uninitialized constant DateTime
Exception `NameError' at /Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/psych-2.0.13/lib/psych/core_ext.rb:16 - method `to_yaml' not defined in Object
Exception `NameError' at /Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/psych-2.0.13/lib/psych/core_ext.rb:29 - method `yaml_as' not defined in Module
Exception `NameError' at /Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/psych-2.0.13/lib/psych/deprecated.rb:81 - undefined method `to_yaml_properties' for class `Object'
Exception `ArgumentError' at -e:1 - wrong number of arguments (0 for 1)
/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/psych-2.0.13/lib/psych.rb:463:in `load_file': wrong number of arguments (0 for 1) (ArgumentError)
from -e:1:in `<main>'
$ RUBYOPT=-d pry -rpsych
Exception `LoadError' at /Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/rubygems.rb:1222 - cannot load such file -- rubygems/defaults/operating_system
Exception `LoadError' at /Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/rubygems.rb:1231 - cannot load such file -- rubygems/defaults/ruby
Exception `LoadError' at /Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54 - cannot load such file -- active_support/inflector
Exception `NoMethodError' at /Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/rubygems/specification.rb:1984 - undefined method `to_ary' for #<Gem::Specification:0x007fd3c1899c88>
Exception `NoMethodError' at /Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/rubygems/specification.rb:1984 - undefined method `to_ary' for #<Gem::Specification:0x007fd3c1a43ef8>
Exception `NoMethodError' at /Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/rubygems/specification.rb:1984 - undefined method `to_ary' for #<Gem::Specification:0x007fd3c1a095a0>
Exception `NoMethodError' at /Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/rubygems/specification.rb:1984 - undefined method `to_ary' for #<Gem::Specification:0x007fd3c1a102d8>
[SNIP A BUNCH OF SIMILAR ONES]
Exception `NoMethodError' at /Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/rubygems/specification.rb:1984 - undefined method `to_ary' for #<Gem::Specification:0x007fd3c1a102d8>
/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/history.rb:86: warning: File.exists? is a deprecated name, use File.exist? instead
Exception `NameError' at /Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/method.rb:81 - undefined method `__pry__' for class `Object'
Exception `RuntimeError' at /Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/method/disowned.rb:48 - Cannot call 'source_location' on an undef'd method.
Exception `RuntimeError' at /Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/method/disowned.rb:48 - Cannot call 'source_location' on an undef'd method.
/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/method.rb:383: warning: instance variable @method not initialized
Exception `EOFError' at /Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/repl.rb:198 - end of file reached
[1] pry(main)> Psych.load_file
Exception `NoMethodError' at /Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/rubygems/specification.rb:1984 - undefined method `to_ary' for #<Gem::Specification:0x007fd3c1899c88>
[SNIP A BUNCH OF SIMILAR ONES]
Exception `NoMethodError' at /Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/rubygems/specification.rb:1984 - undefined method `to_ary' for #<Gem::Specification:0x007fd3c1a095a0>
Exception `NoMethodError' at /Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/rubygems/specification.rb[1] pry(main)> Psych.load_filery' for #<Gem::Specification:0x007fd3c1a102d8>
Exception `NoMethodError' at (pry):1 - undefined method `load_file' for Psych:Module
Exception `NoMethodError' at /Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:355 - undefined method `load_file' for Psych:Module
NoMethodError: undefined method `load_file' for Psych:Module
from (pry):1:in `__pry__'
[2] pry(main)>
The funniest is that jump does work now…
hmmmmm. OK, can you open pry, and show $LOADED_FEATURES? It seems like the so file is getting loaded, but not the .rb file somehow. Also, are those the only gems you have for that version of Ruby? One more question: if you load pry, then from pry do require 'psych', is the method available?
Hmm. I'm thinking. One thing that is not so standard is that I use the case-sensitive filesystem (on OS X Yosemite). But if loading the native lib depended on case, then why would pry behave differently from ruby?
$ gem list
*** LOCAL GEMS ***
activesupport (4.2.0)
addressable (2.3.7)
adsf (1.2.0)
bigdecimal (1.2.7, 1.2.6)
binding_of_caller (0.7.2)
builder (3.2.2)
bundler (1.8.4)
celluloid (0.16.0)
chronic (0.10.2)
coderay (1.1.0)
colored (1.2)
columnize (0.9.0)
cri (2.6.1)
daemons (1.1.9)
debug_inspector (0.0.2)
debugger-linecache (1.2.0)
descendants_tracker (0.0.4)
eventmachine (1.0.7)
faraday (0.9.1)
ffi (1.9.6)
formatador (0.2.5)
git (1.2.9.1)
github_api (0.12.3)
guard (2.12.4)
guard-nanoc (1.0.3)
haml (4.0.6)
hashie (3.4.0)
highline (1.7.1)
hitimes (1.2.2)
i18n (0.7.0)
io-console (0.4.3)
jeweler (2.0.1)
json (1.8.2, 1.8.1)
jump (0.4.0)
jwt (1.3.0)
kramdown (1.6.0)
listen (2.8.5)
lolcat (42.1.0)
lumberjack (1.0.9)
method_source (0.8.2)
mini_portile (0.6.2)
minitest (5.5.1, 5.4.3)
multi_json (1.11.0)
multi_xml (0.5.5)
multipart-post (2.0.0)
nanoc (3.7.5)
nenv (0.2.0)
nokogiri (1.6.6.2)
notiffany (0.0.6)
oauth2 (1.0.0)
paint (0.9.0, 0.8.7)
power_assert (0.2.3, 0.2.2)
pry (0.10.1)
psych (2.0.13, 2.0.8)
rack (1.6.0)
rake (10.4.2)
rb-fsevent (0.9.4)
rb-inotify (0.9.5)
rdoc (4.2.0)
rubypants (0.2.0)
sass (3.4.13)
shellany (0.0.1)
slop (4.0.0, 3.6.0)
systemu (2.6.4)
terminal-table (1.4.5)
test-unit (3.0.9, 3.0.8)
thin (1.6.3)
thor (0.19.1)
thread_safe (0.3.4)
tilt (2.0.1)
timers (4.0.1)
trollop (2.1.1, 1.16.2)
tzinfo (1.2.2)
w3c_validators (1.2)
$ pry
[1] pry(main)> $LOADED_FEATURES
=> ["enumerator.so",
"rational.so",
"complex.so",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/x86_64-darwin14/enc/encdb.bundle",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/x86_64-darwin14/enc/trans/transdb.bundle",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/unicode_normalize.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/x86_64-darwin14/rbconfig.rb",
"thread.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/x86_64-darwin14/thread.bundle",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/rubygems/compatibility.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/rubygems/defaults.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/rubygems/deprecate.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/rubygems/errors.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/rubygems/version.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/rubygems/requirement.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/rubygems/platform.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/rubygems/basic_specification.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/rubygems/stub_specification.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/rubygems/util/stringio.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/rubygems/specification.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/rubygems/exceptions.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/rubygems/core_ext/kernel_gem.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/monitor.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/rubygems.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/rubygems/dependency.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/rubygems/path_support.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/prettyprint.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/pp.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/input_lock.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/exceptions.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/helpers/base_helpers.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/hooks.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/forwardable.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/method_source-0.8.2/lib/method_source/version.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/method_source-0.8.2/lib/method_source/source_location.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/method_source-0.8.2/lib/method_source/code_helpers.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/method_source-0.8.2/lib/method_source.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/shellwords.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/x86_64-darwin14/stringio.bundle",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/coderay-1.1.0/lib/coderay/version.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/coderay-1.1.0/lib/coderay.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/slop-3.6.0/lib/slop/option.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/slop-3.6.0/lib/slop/commands.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/slop-3.6.0/lib/slop.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/delegate.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/x86_64-darwin14/etc.bundle",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/fileutils.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/tmpdir.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/tempfile.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/x86_64-darwin14/pathname.bundle",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/pathname.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/version.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/repl.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/rbx_path.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/code/loc.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/code/code_range.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/code/code_file.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/code.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/history_array.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/helpers/options_helpers.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/helpers/command_helpers.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/helpers/text.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/helpers/table.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/helpers.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/code_object.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/helpers/documentation_helpers.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/method/weird_method_locator.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/method/disowned.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/method/patcher.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/method.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/module_candidate.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/wrapped_module.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/history.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/command.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/command_set.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/amend_line.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/bang.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/bang_pry.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/cat/abstract_formatter.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/cat/input_expression_formatter.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/cat/exception_formatter.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/cat/file_formatter.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/cat.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/cd.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/change_inspector.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/change_prompt.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/code_collector.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/disable_pry.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/disabled_commands.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/easter_eggs.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/edit/exception_patcher.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/edit/file_and_line_locator.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/edit.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/exit.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/exit_all.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/exit_program.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/find_method.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/fix_indent.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/gem_cd.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/gem_install.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/gem_list.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/gem_open.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/gist.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/help.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/hist.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/import_set.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/install_command.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/jump_to.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/list_inspectors.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/list_prompts.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/ls/grep.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/ls/formatter.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/ls/globals.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/ls/interrogatable.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/ls/constants.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/ls/jruby_hacks.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/ls/methods_helper.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/ls/methods.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/ls/self_methods.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/ls/instance_vars.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/ls/local_names.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/ls/local_vars.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/ls/ls_entity.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/ls.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/nesting.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/play.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/pry_backtrace.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/pry_version.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/raise_up.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/reload_code.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/reset.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/ri.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/save_file.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/shell_command.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/shell_mode.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/show_info.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/show_doc.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/show_input.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/show_source.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/simple_prompt.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/stat.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/switch_to.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/toggle_color.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/watch_expression/expression.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/watch_expression.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/whereami.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands/wtf.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/commands.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/plugins.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/core_extensions.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/config/behavior.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/config/default.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/config/convenience.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/config.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_class.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/cli.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/coderay-1.1.0/lib/coderay/helpers/plugin.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/coderay-1.1.0/lib/coderay/encoder.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/coderay-1.1.0/lib/coderay/encoders/_map.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/coderay-1.1.0/lib/coderay/encoders/terminal.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/color_printer.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/terminal.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pager.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/editor.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/rubygem.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/indent.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/last_exception.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/prompt.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/inspector.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/object_path.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/output.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/thread_safe-0.3.4/lib/thread_safe/version.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/thread_safe-0.3.4/lib/thread_safe/synchronized_delegator.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/thread_safe-0.3.4/lib/thread_safe.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/activesupport-4.2.0/lib/active_support/core_ext/array/prepend_and_append.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/activesupport-4.2.0/lib/active_support/core_ext/hash/deep_merge.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/activesupport-4.2.0/lib/active_support/core_ext/hash/except.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/activesupport-4.2.0/lib/active_support/core_ext/hash/slice.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/i18n-0.7.0/lib/i18n/version.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/cgi/core.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/cgi/util.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/cgi/cookie.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/cgi.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/i18n-0.7.0/lib/i18n/exceptions.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/i18n-0.7.0/lib/i18n/interpolate/ruby.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/i18n-0.7.0/lib/i18n.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/activesupport-4.2.0/lib/active_support/lazy_load_hooks.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/set.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/i18n-0.7.0/lib/i18n/config.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/activesupport-4.2.0/lib/active_support/i18n.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/thread_safe-0.3.4/lib/thread_safe/non_concurrent_cache_backend.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/thread_safe-0.3.4/lib/thread_safe/mri_cache_backend.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/thread_safe-0.3.4/lib/thread_safe/cache.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/activesupport-4.2.0/lib/active_support/inflector/inflections.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/activesupport-4.2.0/lib/active_support/multibyte.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/activesupport-4.2.0/lib/active_support/core_ext/string/multibyte.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/activesupport-4.2.0/lib/active_support/inflector/transliterate.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/activesupport-4.2.0/lib/active_support/inflections.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/activesupport-4.2.0/lib/active_support/inflector/methods.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/activesupport-4.2.0/lib/active_support/core_ext/string/inflections.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/activesupport-4.2.0/lib/active_support/inflector.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/x86_64-darwin14/readline.bundle",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/coderay-1.1.0/lib/coderay/tokens_proxy.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/x86_64-darwin14/strscan.bundle",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/coderay-1.1.0/lib/coderay/scanner.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/coderay-1.1.0/lib/coderay/scanners/_map.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/coderay-1.1.0/lib/coderay/scanners/ruby.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/coderay-1.1.0/lib/coderay/tokens.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/coderay-1.1.0/lib/coderay/scanners/ruby/string_state.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/coderay-1.1.0/lib/coderay/helpers/word_list.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/coderay-1.1.0/lib/coderay/scanners/ruby/patterns.rb",
"/Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/x86_64-darwin14/io/console.bundle"]
[2] pry(main)> require 'psych'
=> true
[3] pry(main)> Psych.load_file
NoMethodError: undefined method `load_file' for Psych:Module
from (pry):3:in `__pry__'
Impact of loading Psych:
$ diff -uN <(echo 'puts $LOADED_FEATURES' | pry) <(echo 'require "psych"; puts $LOADED_FEATURES' | pry)
--- /dev/fd/11 2015-03-07 22:55:34.000000000 +0100
+++ /dev/fd/12 2015-03-07 22:55:34.000000000 +0100
@@ -1,4 +1,4 @@
-[1] pry(main)> puts $LOADED_FEATURES
+[1] pry(main)> require "psych"; puts $LOADED_FEATURES
enumerator.so
rational.so
complex.so
@@ -213,4 +213,7 @@
/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/coderay-1.1.0/lib/coderay/scanners/ruby/string_state.rb
/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/coderay-1.1.0/lib/coderay/helpers/word_list.rb
/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/coderay-1.1.0/lib/coderay/scanners/ruby/patterns.rb
+/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/psych-2.0.13/lib/psych/exception.rb
+/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/psych-2.0.13/lib/psych/syntax_error.rb
+/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-14/2.2.0-static/psych-2.0.13/psych.bundle
[2] pry(main)> => nil
Indeed, psych.rb doesn't appear…
Looks like require 'psych' is ambiguous; psych.rb does require 'psych.so' which I suppose is mapped to psych.bundle on OSX. In pry, if I require 'psych.rb' explicitly, then much more is loaded and the Psych.load_file is there.
That's really weird. Doing require 'psych' should load the rb file (Ruby's require prioritizes .rb files over .so or .bundle files), then it explicitly loads the extension (that's what the .so load does).
+/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/psych-2.0.13/lib/psych/exception.rb
+/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/psych-2.0.13/lib/psych/syntax_error.rb
+/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-14/2.2.0-static/psych-2.0.13/psych.bundle
These lines are strange. Why do you have the .bundle file in an "extensions" directory? Or, how did it get there?
I wonder if this is a RubyGems bug. What is the output of gem -v?
$ gem -v
2.4.5
No time right now but I should probably try de/reinstalling the gem and checking its file layout.
Ok, so this works: ruby -ryaml -de 'Psych.load_file', but loading from pry does not.
Can you try this?
- Take note of the permissions on
/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-14/2.2.0-static/psych-2.0.13/psych.bundle - chmod 000 /Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-14/2.2.0-static/psych-2.0.13/psych.bundle
- Try to load psych from pry (as usual with require "psych")
- Hopefully you'll get an exception. Post the stack trace here.
- Change the permissions for '/Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-14/2.2.0-static/psych-2.0.13/psych.bundle' back
$ ll ~/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-14/2.2.0-static/psych-2.0.13/psych.bundle
---------- 1 damien staff 147K Mar 6 23:58 /Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-14/2.2.0-static/psych-2.0.13/psych.bundle
$ pry
[1] pry(main)> require 'psych'
LoadError: cannot load such file -- /Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-14/2.2.0-static/psych-2.0.13/psych.bundle
from /Users/damien/.rbenv/versions/2.2.1/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:69:in `require'
[2] pry(main)>
:up: I'm still getting that with 2.0.13 on ruby 2.2.2 (in fact on 2.2.2, neither the default psych or the latest seem to work…)
Did you have an intuition about what the problem could be ?
Hi, sorry I haven't looked at this in a while. The thing I'm really confused about it where /Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-14/2.2.0-static/psych-2.0.13/psych.bundle is coming from. When you install a new Ruby (without installing psych) does that file exist?
Do you happen to have any .gemrc files or something in your home dir that could impact how the gem is getting installed?
After you install the gem, does /Users/damien/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/psych-2.0.13/lib/psych.bundle exist?
Ok so I removed 2.2.2, then reinstalled it clean:
$ ll .rbenv/versions
total 4.0K
lrwxr-xr-x 1 damien staff 10 Mar 13 00:55 1.9.3 -> 1.9.3-p551/
drwxr-xr-x 6 damien staff 204 Mar 13 00:55 1.9.3-p551/
$ rbenv install 2.2.2
Downloading ruby-2.2.2.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/5ffc0f317e429e6b29d4a98ac521c3ce65481bfd22a8cf845fa02a7b113d9b44
Installing ruby-2.2.2...
Installed ruby-2.2.2 to /Users/damien/.rbenv/versions/2.2.2
$ rbenv global 2.2.2
$ rbenv rehash
$ gem list
*** LOCAL GEMS ***
bigdecimal (1.2.6)
io-console (0.4.3)
json (1.8.1)
minitest (5.4.3)
power_assert (0.2.2)
psych (2.0.8)
rake (10.4.2)
rdoc (4.2.0)
test-unit (3.0.8)
$ ls .rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/extensions
So psych 2.0.8 comes with the ruby install, but does not have a .bundle. Installing the gem now gives:
$ gem install psych
Fetching: psych-2.0.13.gem (100%)
Building native extensions. This could take a while...
Successfully installed psych-2.0.13
1 gem installed
$ ls .rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-14/2.2.0-static/psych-2.0.13/
gem.build_complete gem_make.out mkmf.log psych.bundle*
I have a .gemrc file with not much relevant in it. I have removed all rbenv extensions except for rbenv-aliases.
…and now jump works and the pry example from my initial report says ArgumentError: wrong number of arguments (0 for 1) (instead of NoMethodError) in both cases… :monkey_face:
OK, I think I finally managed to get something that looks like a clue.
Fresh install works, the problem appears after I gem update or I bundle install in some project. So I went through that project dependencies, and narrowed it to having two versions of rack available at the same time (1.6.0 and 1.6.1 precisely, but I'd bet it does not matter that much). With only one rack version (either one) installed, jump works; as soon as I install both, the bug appears (jump is the tool that exhibits the problem in my day-to-day use). I can't remove rack completely because jump depends on in through jump→jeweler→github_api→oauth2→rack.
Interesting. If you're able to reproduce this all the way from a fresh install, can you give me the full set of steps (including the test repo that you're bundle installing against)?
I seem to have bumped into this issue as well (https://github.com/troessner/reek/issues/653). Some details:
- I'm running Linux with CRuby 2.2.2p95 under rbenv.
- This happens when the
psychgem is installed in addition to the one that comes with Ruby; Removing the gem fixes the problem. - I'm unable to reproduce this when running under Bundler, even when I include
psychin theGemfile. - It only happens if
yaml(orpsych) is required from inside a file that is itself part of a gem.
This should be reproducible with just the following steps:
rbenv install 2.2.3 # Or some other version that wasn't installed before
rbenv shell 2.2.3
gem update psych
gem install reek
gem install unparser --version "0.2.3"
ruby -e 'require "reek"; puts YAML.methods(false).count'
The last line will output 1 instead of the expected 30. Removing unparser 0.2.3 restores the correct behavior.
More details: Instead of unparser, installing any gem with an older version that satisfies reek's current direct or indirect dependencies will trigger the behavior. For example, installing thread_safe 0.3.4 will also trigger it.
I've been able to create a minimal test case. See https://github.com/mvz/psych-heisen-loading-demo.
The bug occurs when psych is installed as a gem, and another installed gem:
- Loads psych using
require 'yaml'. - Depends on another gem that has two eligible versions installed.
Upgrading rubygems fixes this. This problem was probably fixed in https://github.com/rubygems/rubygems/pull/1137. Thanks, @kou, for providing the crucial hint in https://github.com/ruby-gnome2/ruby-gnome2/issues/584#issuecomment-162175271.
Cool! Will confirm as soon as I get the update.
Edit: indeed, bug → gem update --system from 2.4.5.1 to 2.5.1 → no bug :)