Acts_as_ferret server_manager fails under Capistrano

Hi,

in lib/server_manager.rb we have lines 38 and 39:

#require(File.join(File.dirname(FILE),
‘…/…/…/…/config/environment’))
require(File.join(File.dirname(ENV[‘_’]), ‘…/config/environment’))

This works fine if I run it in a normal shell but borks when the server
is run using Capistrano:

** [out :: server-001.vm.brightbox.net] no such file to load –
/bin/…/config/environment

Confirmed here by someone else too:

Any idea why ENV[‘_’] is being used here rather than FILE ? Looks
a bit like it’s supposed to work better when aaf is installed as a gem,
rather than as a plugin in the vendor dir (as I’m using it here).

Actually, it looks like this is good behaviour by aaf and bad behaviour
by Capistrano, but was wondering if anyone can shed any light on it.

Thanks,

John.

http://johnleach.co.uk

Fixed!

From the bash man page:

“When bash invokes an external command, the variable _ is set to the
full file name of the command and passed to that command in its
environment.”

cap> on server-009.vm.brightbox.net ruby -e “puts ENV[‘_’]”
** [out :: server-009.vm.brightbox.net] /bin/sh

Found a solution though. Setting the following option in my Capistrano
recipe:

default_run_options[:shell] = false

gets me:

cap> on server-009.vm.brightbox.net ruby -e “puts ENV[‘_’]”
** [out :: server-009.vm.brightbox.net] /usr/bin/ruby

Now the ferret_server runs properly. This change hasn’t affected
anything else for me - according to the Capistrano 2.1 announcement, if
your default shell is POSIX compliant it should be fine (most cases I’d
guess this is true, unless you have some weird setup).

http://groups.google.com/group/capistrano/browse_thread/thread/531ad32aff5fe5a8

For reference, the code to use ENV[‘_’] was added here:

http://projects.jkraemer.net/acts_as_ferret/ticket/185

Hope that helps someone.

John.

On Mon, 2008-07-28 at 11:55 +0100, John L. wrote:

** [out :: server-001.vm.brightbox.net] no such file to load – /bin/…/config/environment
by Capistrano, but was wondering if anyone can shed any light on it.

Thanks,

John.


http://johnleach.co.uk

I’ve came across that same issue a few times. I solved it by
uncommenting line #38 and commenting #39.