Deploying Rails App on Debian Etch / Apache2 / Passenger

Hi,
I'm trying to deploy my rails app through passenger on an Apache2 on
debian etch. When I start to boot the app it doesn't load one of my
requires throwing an exception which looks like '/usr/local/lib/
site_ruby/1.8/rubygems/custom_require.rb 31 in
`gem_original_require' ' on the stacktrace. The gem is installed and
it's located in the correct dir which I can find through 'gem
environment'. I'm running ruby 1.8.5, passenger 2.2.2 and looking for
kwalify 0.7.1. .
Is this a debian bug, what am I missing? The app runs fine with the
same configuration on my mac.
Please help,
Karl

I also had this problem recently. A few things I did that ultimately got me up and running:

  • Used very latest rubygems (1.3.3 in my case) instead of that from debian distro
  • make sure the www-data user can read and execute all the rubygems (chown, chmod, chgrp, etc.).
    Hope this helps,

Marc

Karl,
      are you sure that all the gems installed in your Mac and on
Debian are exactly the same version?
      You must check carefully the list of gems and versions in both
parts to go out of doubt.

Good luck.

                        Cesar

Ok,

tried these things. The gems are the same.
Changing permissions doesn't do anything. Running irb as www-data
works fine. Should be a rails problem since it doesn't work with
script/console...

Never mind, script/console works fine. passenger not...

See here at http://wiki.github.com/cesarediaz/inventory/installation-steps

Those are the steps that I done to install an application(an open
source rails application that I built) that I have allocated in
github. Maybe you can find there another way to prove for install
Passenger + Apache2 + a Rails application.

Good luck.

            Cesar

While I don’t recommend this as a long-term solution, it should help know whether this is the issue (make a backup first w/ current permissions):

chown -R www-data:www-data /usr/lib/…gems

I believe I also did chmod 777 /usr/bin/<gem_file>

I also modified the /etc/init.d/apache2 script, adding to the ENV line things like:
ENV=“env -i LANG=C PATH=/usr/local/bin:/usr/bin:/bin:/usr/lib/ruby/gems/1.8/gems/simple_record-1.0.2/bin:/usr/lib/ruby/gems/1.8/gems/cloud_cache-1.0.1/bin”

/etc/init.d/apache2 restart -

(The more proper way to do this [should be built into ./bin/passenger-install-apache2-module ?] is to give these files group permissions, include www-data in the group).

Other observations:

  1. I had to include the full path for passenger-install-apache2-module, didn’t work as # passenger-install-apache2-module , not found)
  2. script/console, script/runner, script/server - all worked fine, but passenger/apache2 didn’t work until I got permissions right.

Good luck,

m

Changed all the permissions, set path etc. but no changes yet...

Are you using Ruby Enterprise Edition? What is PassengerRuby set to in
your Apache configuration? Which version of Ruby is being invoked from
the shell (run "which ruby")?

hey guys,
I'm very thankful for your help. after inspecting rubygems myself and
going down the whole way again, i figured that I accidently
capitalized the gem name :frowning: Now everything seems to run..

Is good know that you solved that and wich was the problem, it is a
good feedback . It could help maybe another person to not do the same
mistake.

                                                           Cesar

It always comes to the simplest solutions :slight_smile: