Jruby complete and bundle

Hi.

I have found a couple of web sites which describe how to use jruby
complete
but it doesn’t seem to work for me.

/usr/bin/java -jar /vagrant/bin/jruby-complete-1.7.8.jar -S bundle exec
trinidad
jruby: No such file or directory – bundle (LoadError)

Similarly I can’t invoke rake either.

Could somebody point out what I am doing wrong.

Thanks.

Bundler is not in jruby complete. You need to add it into the jar file
manually, or install it in a physical folder and add this path to gem
path
variable.

The 1st option is what I usually do.

I tried using bundler to bundle bundler but that didn’t work. I put the
bundler in my gemfile and then did a bundle packake which moved all the
gems to /vendor/cache but not bundler. Odd.

How do I put it into the jar file?

There seems to be two threads associated with this topic - perhaps
someone can merge them.

The easiest way to use JRuby complete - assuming the JVM is already
installed is to create a directory structure for your program project
like this

projectDirectory
lib
GemHome

Put a copy of jruby-complete-xxx.jar into lib

Create a shell script (I call mine localTerminal.sh) in the project
directory with this content

#!/bin/bash

export PATH=$PWD:$PATH;
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD/lib;
export GEM_HOME=$PWD/GemHome;
x-terminal-emulator

As far as I know a similar .bat file will work on Windows

Just for convenience make another shell script called JRUBY with this in
it

#!/bin/bash

java -jar lib/jruby-complete-1.7.0.jar $*

When you double-click the shell script it opens a terminal at the
project directory and then you can run your program with JRUBY myprog.rb
and you can list gems and do all the other stuff with JRUBY -S gem list.

Once you have created this framework you can just copy it somewhere else
to start another project.

No need for RVM or Bundler or any of that stuff - JRuby makes Ruby
Really Simple.

…R

… if you insist on doing things the hard way.

…R

The headline of the thread was clear: the issue is on how to use bundler
with jruby-complete.

Your sentence ‘No need for RVM or Bundler or any of that stuff’ is out
of
context I guess.

I see only 1 thread here, not 2.

Then I would suggest the following:

  • create a vendor folder at the top of your rails app, where the Gemfile
    is
    located
  • inside this vendor folder, create a cache folder (you can do steps 1
    and
    2 by doing ‘mkdir -p vendor/cache’)
  • then use bundle with ‘bundle --path vendor/bundle’.

This will install the gems in vendor/bundle and not in the system. This
will ensure a non pollution of your system and easy deployment.

If you follow these steps, bundle list will work and list what is in
your
vendor/bundle accordingly.

Actually this is exactly what I am doing.

One thing I noticed is that bundler installs the gems into
vendor/bundle/jruby/1.9 so you have to set the GEM_PATH to that
directory
and not to vendor/bundle. If I do that then I can list all the gems but
I
still can’t run trinidad because it says rake is missing. I tried
installing rake into that directory but that doesn’t seem to do
anything.

I feel like I am bit closer to making this work but still not there.

On Tue, Dec 3, 2013 at 10:01 PM, Christian MICHON <

Just to follow up on this advice.

I have a rails app I am using for testing. It has no real functionality
but
I put a bunch of gems in the Gemfile to test them. Because this is a
test
I am using the jruby complete gem with bundler in it. I used the
instructions in the gist somebody posted here to put bundler in the
jruby
complete gem.

I installed all the gems into vendor using this script

${jruby} -S gem install -i ${VENDORED_GEM_HOME} --no-rdoc --no-ri
bundler
${jruby} -S gem install -i ${VENDORED_GEM_HOME} --no-rdoc --no-ri rake
${jruby} -S bundle install --path=${VENDORED_GEM_HOME} --binstubs
–without
development test

Then I did a vagrant up to fire up a VM with nothing but java installed
and attempted to list the gems

VENDORED_GEM_HOME="${RAILS_DIR}/vendor/bundle"
VENDORED_GEM_PATH=${VENDORED_GEM_HOME}
JRUBY_VERSION=“1.7.8”

export GEM_HOME=${VENDORED_GEM_HOME}
export GEM_PATH=${VENDORED_GEM_PATH}

${jruby} -S gem list

gives the following output

*** LOCAL GEMS ***

bundler (1.3.5)
rake (10.1.0)

mmmm. Only two gems. I get the feeling it’s only looking into the jar
and
ignoring the GEM_HOME. Let’s try bundler

${jruby} -S bundle list

Gems included by the bundle:
Could not find rake-10.1.0 in any of the sources

So weird.

No: vendor/bundle/jruby/1.9 is the correct path for bundler. Do not set
GEM_PATH.

Rake is not missing, it’s installed in your jruby-complete. But nothing
stops you from adding it into your Gemfile.

Could you share your Gemfile and maybe how your simple rails app is
done?

I used this vendor/bundler approach with sinatra and trinidad (or
mizuno)
and it works out of the box with jruby…