Red Hat Bugzilla – Bug 971586
cron's PATH is not correct in v2 cart
Last modified: 2015-05-14 19:21:05 EDT
Description of problem:
(Broke out two issues into two tickets)
I did not changed anything when this happens
==> ruby-1.9/logs/iDispenser.log <==
/usr/lib/ruby/site_ruby/1.8/rubygems.rb:779:in report_activate_error: Could not find RubyGem twitter (>= 0) (Gem::LoadError)
from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:214:in activate
from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:1082:in gem
>env | grep RUBY
Version-Release number of selected component (if applicable):
Steps to Reproduce:
I tried reproducing this bug, but so far I have been unsuccessful.
The steps I tried:
1. Create a v1 Ruby 1.9 application (the log file directory "ruby-1.9/logs" indicates that it was a v1 cart).
2. The user indicates that the application did not have Gemfile.
3. Add 'gem "twitter"' to config.ru.
4. Commit and push.
Passenger will fail with "Gem::LoadError", but the error is logged in ~/ruby-1.9/logs/error* (v1) and ~/ruby/logs/error* (v2 after migration). The user indicates that the errors were logged in ruby-1.9/logs/iDispenser.log, which I believe OpenShift does not write.
Furthermore, in all cases, the path looks like:
indicating that the process was started via Passenger.
The user's error log indicates to me that the erroneous process was not started by Passenger.
The user reports that this is a custom script executed via cron.
OK, so it looks like this is an issue with `cron` cartridge not setting up $PATH correctly in the v2.
For a v1 Ruby app, $PATH is set to:
while for a v2 Ruby app, it is:
Yes the paths between V1 and V2 are different, all path elements containing abstract or libexec at no longer valid.
(In reply to Hiro Asari from comment #6)
Not sure if you've already known it: above pull request has not been merged yet, and this bug has been in Modified status for some time.
Thank you for the reminder. Yes, I was aware. :-)
Some further discussion is necessary, so I didn't move the PR forward.
Commit pushed to master at https://github.com/openshift/origin-server
Set up cron's PATH to use primary cartridge's *_PATH_ELEMENT so that
cron can use the cartridge's executables.
Let's give this a shot. :-)
Checked on devenv_3580,
With cron script:
# cat test.sh
echo $PATH >> $OPENSHIFT_TMP_DIR/env.log
The result as below
[ruby19-bmengdev.dev.rhcloud.com tmp]\> cat env.log
Move bug to veified.