Ok, I seem to have solved my problem... I removed the standard Ubuntu
ruby 1.8.6 package and installed ruby 1.8.7-p160 from source and also
reinstalled rubygems. It turned out that by default this installed
ruby into /usr/local/bin and /usr/local/lib, rather than /usr/bin and /
usr/lib where the packaged version had been installed.

I then installed the mongrel and bundler gems on the system and
initially just tried to start bin/merb in my app, but it turned out
that the bundled gems that have native extentions were looking for a
ruby .so file in the location it was when compiled previously using
the packaged 1.8.6 version of ruby. So I just redeployed the whole
app, which resulted in the bundled gems being reinstalled, presumably
using the library files generated by the new ruby installation. And
now it works!

I suspect that the incorrect library file was also the reason it
didn't work previously (when the original ruby package was still in
the system). In that case also I just started bin/merb on the server
without reinstalling the bundled gems. It was only after I removed the
original ruby that I realized the native extensions were looking for a
ruby .so file. I guess the fact that the old one was still there
before I removed ruby 1.8.6 meant that it failed silently.


MarkMT wrote:
> After moving to merb edge recently I've been attempting to redeploy my
> app to a ubuntu 8.04LTS platform and in the process discovered that
> the latest version of merb on github makes use of a feature of ruby
> 1.8.7 that isn't supported in 1.8.6, namely the String method
> 'start_with?' which is used in merb-assets for dealing with css file
> paths.
>
> In Ubuntu 8.04 the standard packaged version of ruby is 1.8.6. My
> development machine runs Ubuntu 8.10, which comes with Ruby 1.8.7. I'm
> not too eager to upgrade my server OS so I figured I would just
> upgrade ruby. I found some guidance here -
> http://blog.michaelgreenly.com/2009/04/multiple-versions-of-ruby-on-ubuntu-3.html
> that suggested installing the new version alongside the old rather
> than just getting rid of 1.8.6. Since leaving the original version in
> place seemed like a more conservative approach I elected to try this.
>
> I managed to get 1.8.7 installed ok into /opt/ruby/bin and tweaked the
> path on the first line of bin/merb to point there instead of the
> regular /usr/bin/ruby1.8. I have nginx running on my server in front
> of mongrel. However when I start the app with 'bin/merb -c 2 -p 8000 -
> e production' and point my browser at the server, I get a 404 from
> nginx. 'ps' confirms that the merb processes are running.
>
> I have also installed the latest ruby 1.8.7 build (p160) on my
> development machine alongside the packaged build (p72) in the same way
> I did on the server. In this case when I tweak the ruby path in bin/
> merb and then start the app in either development or production mode
> it runs fine and I can see it in my browser at localhost.
>
> So I'm trying to figure out why this strategy isn't working on the
> server. Does anyone have any guesses or suggestions of how I might
> diagnose the problem?
>
> I guess my next option is to install 1.8.7 on the server over the top
> of 1.8.6 rather than trying to have them cohabit.

--

You received this message because you are subscribed to the Google Groups 
"merb" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to [email protected].
For more options, visit this group at http://groups.google.com/group/merb?hl=en.


Reply via email to