Skip to content

Require order appears to impact JRuby extensions [9k] #2521

@headius

Description

@headius

It appears something in our load logic is causing extensions to have some sort of load-order dependency.

Gem install the PageRankr gem, and you can have this sort of fun too:

~/projects/jruby $ jruby -e "require 'page_rankr'"
NameError: uninitialized constant Nokogiri::XERCES_VERSION
  const_missing at org/jruby/RubyModule.java:2935
        to_hash at /Users/headius/projects/jruby/lib/ruby/gems/shared/gems/nokogiri-1.6.6.2-java/lib/nokogiri/version.rb:73
         (root) at /Users/headius/projects/jruby/lib/ruby/gems/shared/gems/nokogiri-1.6.6.2-java/lib/nokogiri/version.rb:99
         (root) at /Users/headius/projects/jruby/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:1
        require at org/jruby/RubyKernel.java:954
        require at /Users/headius/projects/jruby/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:69
         (root) at /Users/headius/projects/jruby/lib/ruby/gems/shared/gems/nokogiri-1.6.6.2-java/lib/nokogiri.rb:31
        require at org/jruby/RubyKernel.java:954
         (root) at /Users/headius/projects/jruby/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:1
        require at /Users/headius/projects/jruby/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:121
        require at org/jruby/RubyKernel.java:954
         (root) at /Users/headius/projects/jruby/lib/ruby/gems/shared/gems/PageRankr-4.4.0/lib/page_rankr/tracker.rb:1
         (root) at /Users/headius/projects/jruby/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:1
        require at org/jruby/RubyKernel.java:954
        require at /Users/headius/projects/jruby/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:121
         (root) at /Users/headius/projects/jruby/lib/ruby/gems/shared/gems/PageRankr-4.4.0/lib/page_rankr/backlink.rb:1
        require at org/jruby/RubyKernel.java:954
         (root) at /Users/headius/projects/jruby/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:1
        require at /Users/headius/projects/jruby/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:121
        require at org/jruby/RubyKernel.java:954
         (root) at /Users/headius/projects/jruby/lib/ruby/gems/shared/gems/PageRankr-4.4.0/lib/page_rankr/backlinks/alexa.rb:1
         (root) at /Users/headius/projects/jruby/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:1
        require at org/jruby/RubyKernel.java:954
        require at /Users/headius/projects/jruby/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:121
         (root) at /Users/headius/projects/jruby/lib/ruby/gems/shared/gems/PageRankr-4.4.0/lib/page_rankr/backlinks.rb:2

However, if you require nokogiri before page_rankr, it succeeds.

It could be related to load path/loaded features/extension service changes (e.g. dependency loading in RubyGems might be causing the Nokogiri ext to not load).

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions