As this Caboose article suggests, I am not the only one who had
this problem. RAILS_ROOT is a relative path on Windows, and it can
bite you in unexpected ways. I had that problem while working on
CruiseControl.rb.
There is a trivial patch fixing it (by simply applying
File.expand_path to the path before assigning it into the RAILS_ROOT
constant): http://dev.rubyonrails.org/ticket/7259
Best regards,
Alex Verkhovsky
expand_path doesn't play nice with symlinks, so RAILS_ROOT will be set
to deploy_dir/releases/9374789394 instead of /current.
What in particular is breaking your application?
Right. Thanks for reminding me. We had exact same conversation two years ago, and I completely forgot about it by now.
Rails autoloading, and Kernel.require in general, breaks when you chdir into another directory after executing config/environment.rb. chdir invalidates all $: entries added by Rails, because all of them start from (relative) RAILS_ROOT.
You typically need to change the current working directory before executing external processes. A workaround is to wrap every shell command within its own chdir block. It’s not too hard to do, just hard to remember.
Best regards,
Alex
I'd also like to switch to realpath instead of cleanpath...