Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

No such file to load -- bundler/setup (with bundler 1.3.4) #144

Closed
BrandonMathis opened this issue Mar 20, 2013 · 23 comments
Closed

No such file to load -- bundler/setup (with bundler 1.3.4) #144

BrandonMathis opened this issue Mar 20, 2013 · 23 comments

Comments

@BrandonMathis
Copy link

We've had this issue before 75 and 27. Tomcat is giving me a org.jruby.rack.RackInitializationException: no such file to load -- bundler/setup error when I try to load the app

Downgrading to bundler v 1.2.4 fixed this for me.

I thought I would post this issue with hopes someone can duplicate it and perhaps together we can ascertain a fix.

@marcusgpeterson
Copy link

+1

I haven't had a chance yet to delve deeply into this problem, but I was able to demonstrate that for bundler versions 1.3.0 and newer, warbler improperly packages the bundler gem. More specifically, the directory structure of the packaged bundler gem is incorrect in the war file.

As was the case for Brandon, downgrading to bundler 1.2.4 gets our app to load.

We're running jruby 1.7.3, warbler 1.3.6, jruby-rack 1.1.13.1, and rails 3.2.13.

@jkutner
Copy link
Member

jkutner commented Apr 6, 2013

Do you have a sample app that can reproduce this?

@doxavore
Copy link

I believe I'm experiencing the same issue, though it's failing to load a different file. bundler/setup seems to load, but none of its included files do. (i've seen both bundler/resolver and bundler/index fail.)

I've created a sample app (with README) here: https://github.com/doxavore/warbler144 but I'm afraid I haven't had any luck tracking down the underlying cause.

@jkutner
Copy link
Member

jkutner commented Apr 21, 2013

I ran your sample app and could not reproduce the error. Here's what I'm using:

  • jruby 1.7.2 (1.9.3p327) 2013-01-04 302c706 on Java HotSpot(TM) 64-Bit Server VM 1.7.0_09-b05 [darwin-x86_64]
  • Bundler 1.3.5
  • Warbler 1.3.6

Could you add your Gemfile.lock so I can see if there any other differences?

@doxavore
Copy link

I've tried it with JRuby 1.7.2 on both Oracle Java and OpenJDK, and both result in the same error. I am running on Ubuntu 12.10, however.

  • jruby 1.7.2 (1.9.3p327) 2013-01-04 302c706 on Java HotSpot(TM) 64-Bit Server VM 1.7.0_21-b11 [linux-amd64]
  • jruby 1.7.2 (1.9.3p327) 2013-01-04 302c706 on OpenJDK 64-Bit Server VM 1.7.0_15-b20 [linux-amd64]

I've pushed the Gemfile.lock I'm using, as well as the generated myapp.jar. I've tried adding Bundler and specifying jruby-jars to 1.7.2, then using bundle exec warble to use 1.7.2 specifically, but that just changes the error message to a LoadError for bundler/index.

If you can run myapp.jar then I suppose it must be something different about my execution environment. Otherwise, perhaps you can spot a difference between my generated JAR and then one you generate? If you want to post the JAR you generate that works on your machine, I could create another repo of my exploded JAR and diff them.

@jkutner
Copy link
Member

jkutner commented Apr 21, 2013

I've pushed my jar here: https://github.com/jkutner/warbler144 But the jar in your repo works for me, as well as the one I created myself. All my gems are the same :( sorry. Here's more info on my system:

$ uname -a Darwin largo.local 11.4.2 Darwin Kernel Version 11.4.2: Thu Aug 23 16:25:48 PDT 2012; root:xnu-1699.32.7~1/RELEASE_X86_64 x86_64 $ java -version java version "1.7.0_09" Java(TM) SE Runtime Environment (build 1.7.0_09-b05) Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode) $ jruby -v jruby 1.7.2 (1.9.3p327) 2013-01-04 302c706 on Java HotSpot(TM) 64-Bit Server VM 1.7.0_09-b05 [darwin-x86_64] $ bundle version Bundler version 1.3.5

@doxavore
Copy link

@BrandonMathis or @marcusgpeterson - perhaps you could give my test repo a try and at least determine if we're having the same issue?

As expected, the jar from @jkutner fails with the same error on my machine.

I tried putting some debugging before it fails out, and with !/gems/bundler-1.3.5/lib in the load path, I see no reason why require "bundler/index" would fail, although Bundler uses autoload for the files I see it fail on.

GEM_HOME: file:/home/doug/projects/warbler144/myapp.jar!
GEM_HOME: file:/home/doug/projects/warbler144/myapp.jar!
Gem.dir: file:/home/doug/projects/warbler144/myapp.jar!
Gem.paths:
file:/home/doug/projects/warbler144/myapp.jar!
/home/doug/.gem/jruby/1.9
file:/tmp/jruby2561069773941094418extract/jruby-stdlib-1.7.2.jar!/META-INF/jruby.home/lib/ruby/gems/shared
Bundler.bundle_path: file:/home/doug/projects/warbler144/myapp.jar!
Bundler.root: file:/home/doug/projects/warbler144/myapp.jar!/warbler144
Load paths:
file:/home/doug/projects/warbler144/myapp.jar!/warbler144/lib
# I even see the file in here!
file:/home/doug/projects/warbler144/myapp.jar!/gems/bundler-1.3.5/lib
file:/tmp/jruby2561069773941094418extract/jruby-stdlib-1.7.2.jar!/META-INF/jruby.home/lib/ruby/1.9/site_ruby
file:/tmp/jruby2561069773941094418extract/jruby-stdlib-1.7.2.jar!/META-INF/jruby.home/lib/ruby/shared
file:/tmp/jruby2561069773941094418extract/jruby-stdlib-1.7.2.jar!/META-INF/jruby.home/lib/ruby/1.9
Gemfile: file:/home/doug/projects/warbler144/myapp.jar!/warbler144/Gemfile

@doxavore
Copy link

Sorry for all the posts, but I've found a workaround that allows my sample app to run: doxavore/warbler144@ddc0806

It seems all of the things that Bundler sets up as an autoload don't actually autoload in my environment. I just kept running it and requiring each load error until the app ran through.

I'm inclined to believe this may be a totally different issue than originally reported here. Unless anyone has any pointers, I'll continue to attempt to debug this on my own and ping around in #jruby

@marcusgpeterson
Copy link

Just to close the loop on your issue, @doxavore - I'm able to run your test repo without any trouble.

I've been pretty busy of late, but hopefully I'll have a chance to reproduce my issue in a sample app soon and report my findings here.

@marcusgpeterson
Copy link

Another data point: the problem seems to be limited to bundles that have been installed in "--deployment" mode.

@marcusgpeterson
Copy link

I've been able to demonstrate the problem using a forked version of @doxavore's repo: https://github.com/marcusgpeterson/warbler144

My modified README describes the steps required to reproduce.

@jkutner
Copy link
Member

jkutner commented Apr 23, 2013

Thanks for setting this up. I can clearly see the problem now. I've got some specs that reproduce it, but it'll take some time to figure out how to fix them.

jkutner added a commit that referenced this issue Apr 23, 2013
@BrandonMathis
Copy link
Author

@marcusgpeterson thanks for putting that together 👍 this helps me better understand what the error I've been wrestling with for the past few months now

@jkutner
Copy link
Member

jkutner commented Apr 24, 2013

is bundling with --deployment a must have? It seems odd because warbler will package the gems into the Jar anyways. I'm curious what purpose you're using it for.

@marcusgpeterson
Copy link

Bundling with --deployment is critical to our deployment process in that it allows us to install gems to an area (namely, vendor/bundle) to which we have write access. This is important, because in certain cases, we don't have permissions to install systemwide gems on our deployment servers.

While not being able to install system gems sometimes feels like an unreasonable restriction, the --deployment option is a fantastic workaround; it allows us to circumvent the need for system gem installation entirely.

Does this make sense?

@marcusgpeterson
Copy link

@BrandonMathis you bet! :)

@BrandonMathis
Copy link
Author

bundle with --deployment is pretty standard practice for deploying rails apps because it installs your gems to vendor/bundle. Capistrano uses this flag by default.

@jkutner
Copy link
Member

jkutner commented Apr 25, 2013

Can you confirm that what's in master fixes this issue? I tested on @marcusgpeterson repo and it seems to work, but I'd like to know that it works in the real world too before closing this issue.

@marcusgpeterson
Copy link

@jkutner I've verified that your changes fix the problem in both my test repo and in my real-world web application. Thanks a ton for getting this working. Fantastic job!

@jkutner
Copy link
Member

jkutner commented Apr 26, 2013

I"m going to close this even though I haven't heard from @BrandonMathis. We can reopen it if there is still a problem. Thanks for the help in nailing this down!

@jkutner jkutner closed this as completed Apr 26, 2013
@BrandonMathis
Copy link
Author

Yep, the issue is fixed for me on master.

@petergillardmoss
Copy link

I'm having this issue with 1.4.0.beta2.

Here's my repo with a sample: https://github.com/petergillardmoss/jruby-middleman-example (see commit 26a7b65ea5f819721686429303e9ce6bba64f0b3)

@henriqueqc
Copy link

I think there may be a regression on this issue.

I'm hitting the same problem "LoadError: no such file to load -- bundler/index" when trying to run a jar generated with warble. In my environment I am using Warbler (1.4.5), Bundler (1.9.2), JRuby (1.7.19) on Ubuntu (14.04.02)

After arriving at this issue (#144), I cloned the repo from @doxavore and followed the steps to reproduce the problem and arrived at the same error: LoadError: no such file to load -- bundler/index.

Also, I tried to run the jar from @jkutner and it gave me that same error.

hakamadare pushed a commit to FitnessKeeper/monkeybusiness-rb that referenced this issue Jul 8, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants