Re: [jruby-user] Missing files (or seemingly so)

Pete Helgren <[email protected]> Tue, 28 Oct 2014 11:00:12 -0500
Newsgroups gmane.comp.lang.jruby.user
Message-ID <[email protected]>
I'll give this a try but I am going to post this last piece of info in 
hopes that it might trigger some "Aha!" for someone because this seems 
very much like a path/profile issue:

I ran juby -v to display the version info.  Then I changed to my 
RailsApps folder and ran rails new.  Here is what I see:

jruby -v
jruby 1.7.16 (1.9.3p392) 2014-09-25 575b395 on IBM J9 VM 
jvmap3260_26sr8fp1-20140706_022.6 +jit [OS/400-PowerPC]
$
cd /RailsApps
$
jruby -S rails new NewDemo
Errno::ENOENT: ENOENT - /RailsApps/bin/rails

What I don't get is why it is looking for rails at 
/RailsApps/bin/rails?  That seems strange.  The PATH is:

echo $PATH
/usr/bin:/usr/local/jruby-1.7.16/bin:/QOpenSys/usr/bin

which rails returns:
  which rails
  /usr/local/jruby-1.7.16/bin/rails

Something just doesn't add up (for me at least)

Pete

On 10/27/2014 3:43 PM, Tim Uckun wrote:
> 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] 
> <mailto:[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 Helgren
>     www.petesworkshop.com  <http://www.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]
>>     <mailto:[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] <mailto:[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] <mailto:[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 <http://www.petesworkshop.com>
>>>>                 GIAC Secure Software Programmer-Java
>>>>
>>>>
>>>>                 ---------------------------------------------------------------------
>>>>                 To unsubscribe from this list, please visit:
>>>>
>>>>                 http://xircles.codehaus.org/manage_email
>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>