John Leach
2008-Jul-28 10:55 UTC
[Ferret-talk] 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: http://www.zorched.net/2008/06/19/capistrano-and-ferret-drb/ 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
John Leach
2008-Jul-28 12:19 UTC
[Ferret-talk] acts_as_ferret server_manager fails under Capistrano
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 Leach wrote:> 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: > > http://www.zorched.net/2008/06/19/capistrano-and-ferret-drb/ > > 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
Julio Cesar Ody
2008-Jul-29 03:16 UTC
[Ferret-talk] acts_as_ferret server_manager fails under Capistrano
I''ve came across that same issue a few times. I solved it by uncommenting line #38 and commenting #39. On Mon, Jul 28, 2008 at 10:19 PM, John Leach <john at johnleach.co.uk> wrote:> 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 Leach wrote: >> 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: >> >> http://www.zorched.net/2008/06/19/capistrano-and-ferret-drb/ >> >> 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 > > _______________________________________________ > Ferret-talk mailing list > Ferret-talk at rubyforge.org > http://rubyforge.org/mailman/listinfo/ferret-talk