Re: [jruby-user] Missing files (or seemingly so)
Pete Helgren <[email protected]> Tue, 28 Oct 2014 20:20:34 -0500
| Newsgroups | gmane.comp.lang.jruby.user |
|---|---|
| Message-ID | <[email protected]> |
So...I think I have sorted this out. This seems to be a case of red herrings, lack of understanding of the environment and some stupid moves on my part to get things "working". Scrolling back a minute, I have had several issues over the years getting JRuby installed and operational. There was a sweet spot for a while where I had no trouble installing and then had several releases that no matter what I did I couldn't get things to work. I chalked that up to running under the IBM J9 JVM and really didn't have time to run down the issues. This time, however, I wanted to get it sorted out. The problem was that I had a ruby install as well and had copied some binaries around trying to get *that* installation to work (any port in a storm). But that didn't help and it turned out to complicate my efforts to sort out my JRuby issues as well. I had rails, bundle and a couple of other binaries in a folder higher up in the path (/usr/bin) which I shouldn't have copied there but at least should have remembered. Once I scrubbed the folders in the path, I installed JRuby 1.7.15 (one release back) and re-installed rails and managed to get a new rails app up and running. The JRuby "install" was simply unzipping the jruby folder and putting that folder in the path. That did it. I had a problem with tzinfo that I solved by installing the tzinfo gem but the rails app started up. I am out of the woods. So thanks for the ideas and the scripts. I am going to stick with what I have for the time being but the scripts are helpful and I am going to save them for future reference. Pete On 10/28/2014 3:35 PM, Tim Uckun wrote: > I think the pure Java approach of my scripts would probably work best > for you. As I said I do that per project but a slight modification or > two would enable to you set up a shared gem path as well. > > On Wed, Oct 29, 2014 at 5:00 AM, Pete Helgren <[email protected] > <mailto:[email protected]>> wrote: > > 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 >>>>> >>>>> >>>>> >>>> >>>> >>> >>> >> >> > >