Re: [jruby-user] Missing files (or seemingly so)
Tim Uckun <[email protected]> Tue, 28 Oct 2014 09:43:42 +1300
| Newsgroups | gmane.comp.lang.jruby.user |
|---|---|
| Message-ID | <CAGuHJrPvjtiW8XHq4NB_Rjzn96HcNxTJBBjFsXYk=WOZfQpUBw@mail.gmail.com> |
In that case you need to write shell scripts to invoke your jruby complete
gem. I normally put these scripts in the project directory so each
project is completely isolated from the general environment and each can
have it's own jruby complete. I install my gems into ./vendor/bundle. Any
binstubs you create will try to reference an executable called 'jruby' so
they will work fine. Give it a shot and let me know how it works.
First you need to set up jruby complete. Here is a shell script to do
that. This will download the jar and install bundler into it.
----
#!/bin/sh
set -ex
version=1.7.8
jar=jruby-complete-$version-with-bundler.jar
curl -o $jar
http://jruby.org.s3.amazonaws.com/downloads/$version/jruby-complete-$version.jar
java -jar $jar -S gem install -i ./bundler-gems bundler --no-rdoc --no-ri
java -jar $jar -S gem install -i ./bundler-gems rake --no-rdoc --no-ri
jar uf $jar -C bundler-gems .
java -jar $jar -S bundle --version
----
Now you need some scripts to invoke the jar. This one is called "jruby".
----
#!/bin/bash
JRUBY_VERSION="1.7.8"
RAILS_ENV=${RAILS_ENV:='development'}
BASEDIR="$( cd "$( dirname "$0" )" && pwd )"
RAILS_DIR="$( cd ${BASEDIR}/.. && pwd)"
JRUBY_DIR="${RAILS_DIR}/jruby"
JAVA_OPTS="-XX:+TieredCompilation -XX:TieredStopAtLevel=1 -Xverify:none
-Xmx500m -Xss2048k -Xcompile.invokedynamic=false
-Djruby.launch.inproc=false -Dcompat.version=2.0 -Dcext.enabled=false
-Djruby.compile.mode=OFF"
JAVA="`which java` ${JAVA_OPTS}"
JRUBY_COMPLETE_WITH_BUNDLER_JAR="${JRUBY_DIR}/jruby-complete-${JRUBY_VERSION}-with-bundler.jar"
JRUBY="${JAVA} -jar ${JRUBY_COMPLETE_WITH_BUNDLER_JAR}"
${JRUBY} $*
---
You will also want to create scripts for "bundle" and "rake"
My bundle script looks like this
--- bundle ---
#!/bin/bash
BASEDIR="$( cd "$( dirname "$0" )" && pwd )"
${BASEDIR}/jruby -S bundle $*
-----
-- rake
#!/bin/bash
BASEDIR="$( cd "$( dirname "$0" )" && pwd )"
${BASEDIR}/jruby -S bundle exec rake $*
---
I also create one called "be " which comes in handy
----be
#!/bin/bash
BASEDIR="$( cd "$( dirname "$0" )" && pwd )"
${BASEDIR}/jruby -S bundle exec $*
---
Last thing you need to so is to set all your paths this is my script for
that. This ones fires off a new bash where the paths of your app come first.
----
#!/bin/bash
am_I_sourced()
{
if [ "${FUNCNAME[1]}" = source ]; then
return 0
else
return 1
fi
}
# Highlights the current git branch
function parse_git_branch {
ref=$(git symbolic-ref HEAD 2> /dev/null) || return
echo "("${ref#refs/heads/}")"
}
pwd=${PWD##}
GEM_LOCATION="${pwd}/vendor/bundle"
export GS_NAME=$(basename ${PWD##/})
export GEM_HOME=${GEM_LOCATION}
export GEM_PATH="${GEM_HOME}:${GEM_PATH}"
export PATH="./bin:vendor/bundle/bin:./jruby:${PATH}"
##colors
RED='\[\033[0;31m\]'
GREEN='\[\033[0;32m\]'
YELLOW='\[\033[1;33m\]'
DEFAULT='\[\033[00m\]'
if ! am_I_sourced -v ; then
export PS1="\[\e]0;\u@\h: \w\a\]$GREEN\w$YELLOW
$(parse_git_branch)$DEFAULT (${GS_NAME} isolated) quot;
bash
fi
On Tue, Oct 28, 2014 at 2:01 AM, Pete Helgren <[email protected]> wrote:
> Tim,
>
> I'll check that out. This is on an IBM i which is a bit different from
> any other mainline OS. Anything that executes java is A-OK because the J9
> JVM that IBM has is rock solid on this platform but if we are talking about
> any executable binaries, then things get interesting. Most of what I run I
> run in an environment called PASE which is an AIX-like shell that can
> execute most binaries that can run in AIX. Sometimes I have to compile to
> run in PASE (PPC64) so it will vary based on what the binary does. Because
> of those unknowns, sticking with a "pure" java install: Unzip, set path and
> classpath, and go, is the way I deploy most applications in the java world.
>
> But, I'll give it a whirl....
>
> Pete Helgrenwww.petesworkshop.com
> GIAC Secure Software Programmer-Java
>
> On 10/27/2014 5:45 AM, Tim Uckun wrote:
>
> How exactly did you install jruby.
>
> I recommend you use rvm, rbenv, or chruby.
>
> Clearly something went wrong with your installation and your environment
> got screwed up. I have used jruby complete before with some scripts and
> some environment manipulation before but that's kind of an involved process
> and you are much better off using one of the above mentioned projects.
>
>
>
> On Mon, Oct 27, 2014 at 4:08 PM, Pete Helgren <[email protected]> wrote:
>
>> Nothing like that. I still think there is something messed up in the
>> path or home folder. Can't quite figure out what is out of place. There
>> IS a ruby installation as well and I am trying to figure out if that is
>> what is causing the issue. Neither install is working at the moment (ruby
>> or jruby).
>>
>> Thanks for trying!
>>
>> Pete
>>
>>
>> On 10/24/2014 11:15 PM, Keith Bennett wrote:
>>
>> Pete -
>>
>> I'm not sure...the "shared" in the directory name makes it sound like
>> there could be more than one directory. And I suspect you should go one
>> directory up, because gems is the name of one of several subdirectories
>> GEM_HOME should have.
>>
>> When I do a directory of my GEM_HOME I get this:
>>
>> ➜ ~GEM_HOME ls
>> bin cache environment gems wrappers
>> build_info doc extensions specifications
>>
>> Is that something like the directory you mentioned?
>>
>> One way I figure out where it is is to install a random gem (e.g. my
>> "trick_bag" gem) that I don't yet have (check with "gem list"), and see if
>> it was installed in that directory
>>
>> - Keith
>>
>>
>> On Sat, Oct 25, 2014 at 10:12 AM, Pete Helgren <[email protected]> wrote:
>>
>>> Thanks Keith...
>>>
>>> Where should the GEM_HOME environment variable point? I have a boatload
>>> of gems in /usr/local/jruby-1.7.16/lib/ruby/gems/shared/gems. Is that where
>>> it should point?
>>>
>>> Pete
>>>
>>>
>>> On 10/24/2014 10:05 AM, Keith Bennett wrote:
>>>
>>> Pete -
>>>
>>> Since the rails command is part of a gem (the Rails gem), wouldn't it
>>> be in the gem bin directory? (I use rvm and it handles path stuff
>>> automatically for me.)
>>>
>>>
>>> Where are your gems being installed? You should probably have a
>>> GEM_HOME environment variable pointing to the root of your gem directory
>>> tree. There should be a bin subdirectory there somewhere, and that needs
>>> to be in your PATH environment variable AFAIK.
>>>
>>> - Keith
>>>
>>> On Thu, Oct 23, 2014 at 7:44 PM, Pete Helgren <[email protected]> wrote:
>>>
>>>> I have been in and out of jRuby over the past couple of years and I got
>>>> around to installing jRuby 1.7.16 on my IBM i (Power 6) box. It is running
>>>> Java 6 using the J9 JDK. Installation went fine, smoother than usual.
>>>>
>>>> But when I tried to run rails commands. I got a series of
>>>> Errno::ENOENT on various files. The first was a ENOENT on
>>>> '/home/PETE/.gem/jruby/1.9'. I found a post that indicated adding that
>>>> path would fix the issue as a workaround (and it did). When I ran rails
>>>> new /Path_to_App it seemed like the failures were due to an environment
>>>> issue because it was looking for rails in /home/pete/bin, /usr/bin,
>>>> /usr/local/bin although none of those folders were on the path (and I
>>>> couldn't figure out why it would look for rails there anyway). My
>>>> jruby/bin folder was on the path so I was mystified as to why it looked
>>>> elsewhere for rails. Again, a work around was to copy rails where it
>>>> seemed to be looking (for whatever reason).
>>>>
>>>> Here is what I see when I try to run rails:
>>>>
>>>> rails new /RailsApps/NewDemo
>>>>
>>>> Errno::ENOENT: ENOENT - /home/pete/bin/rails
>>>>
>>>> file? at org/jruby/RubyFileTest.java:131
>>>>
>>>> find_executable at
>>>> /usr/local/jruby-1.7.16/lib/ruby/gems/shared/gems/railties-4.1.6/lib/rails/app_rails_loader.rb:58
>>>>
>>>>
>>>> find at org/jruby/RubyEnumerable.java:592
>>>>
>>>> find_executable at
>>>> /usr/local/jruby-1.7.16/lib/ruby/gems/shared/gems/railties-4.1.6/lib/rails/app_rails_loader.rb:58
>>>>
>>>>
>>>> exec_app_rails at
>>>> /usr/local/jruby-1.7.16/lib/ruby/gems/shared/gems/railties-4.1.6/lib/rails/app_rails_loader.rb:33
>>>>
>>>>
>>>> loop at org/jruby/RubyKernel.java:1501
>>>>
>>>> exec_app_rails at
>>>> /usr/local/jruby-1.7.16/lib/ruby/gems/shared/gems/railties-4.1.6/lib/rails/app_rails_loader.rb:32
>>>>
>>>>
>>>> (root) at
>>>> /usr/local/jruby-1.7.16/lib/ruby/gems/shared/gems/railties-4.1.6/lib/rails/cli.rb:5
>>>>
>>>>
>>>> require at org/jruby/RubyKernel.java:1065
>>>>
>>>> (root) at
>>>> /usr/local/jruby-1.7.16/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1
>>>>
>>>>
>>>> require at
>>>> /usr/local/jruby-1.7.16/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55
>>>>
>>>>
>>>> load at org/jruby/RubyKernel.java:1081
>>>>
>>>> (root) at /usr/local/jruby-1.7.16/bin/rails:23
>>>>
>>>>
>>>> Rather than just keep chasing these issues, perhaps someone can suggest
>>>> what the root cause of the problem is. I can't seem to find anything that
>>>> points to a specific configuration step I missed. Any help would be
>>>> appreciated.
>>>>
>>>> --
>>>> Pete Helgren
>>>> www.petesworkshop.com
>>>> GIAC Secure Software Programmer-Java
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe from this list, please visit:
>>>>
>>>> http://xircles.codehaus.org/manage_email
>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>