chruby
chruby copied to clipboard
bundle stderr: /bin/bash: chruby: command not found
DEBUG[20def91d] Command: cd ~/app/releases/20140714154150 && /usr/local/bin/chruby-exec ruby-1.9.3-p547 -- bundle install --binstubs ~/app/shared/bin --path ~/app/shared/bundle --without development test --deployment --quiet
DEBUG[20def91d] /bin/bash: chruby: command not found
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing on host 100.200.300.400: bundle exit status: 127
bundle stdout: Nothing written
bundle stderr: /bin/bash: chruby: command not found
I got the same error. Did you find out why @KamilLelonek ?
I threw away chruby
.
Same issue here. Anyone found the reason?
Anyone found a solution?
Also getting this. Logging into the server and running chruby-exec
works fine...
I had to set :pty, true
(which is not a good idea). Think it's a chruby-exec
problem.
A quick fix to this for those that are having this issue is to add the /etc/profile.d/chruby.sh
script as the chruby README suggests:
if [ -n "$BASH_VERSION" ] || [ -n "$ZSH_VERSION" ]; then
source /usr/local/share/chruby/chruby.sh
fi
This works because if you run chruby-exec
from a non-interactive shell (which is what Capistrano does by default unless you set :pty, true
) then it will run the sub-shell as a non-interactive, login shell. This means ~/.bashrc
will not get loaded but /etc/profile.d
will.
There is a pull request for fixing this at postmodern/chruby#250 but it looks like it needs to be updated.
FWIW we documented this behaviour: http://capistranorb.com/documentation/faq/why-does-something-work-in-my-ssh-session-but-not-in-capistrano/#which-shell-startup-files-do-get-loaded?
Thanks for the pointers!
For sure that graphic is one that starts only to make sense once you actually understand what it tells you, but it won't teach you anything :-D
I ran into similar issue, but sudo appears to work fine
› /bin/bash -c '/usr/local/bin/chruby-exec 2.2.3 -- gem -v'
chruby-exec: RUBY and COMMAND required
› /bin/bash -c 'sudo /usr/local/bin/chruby-exec 2.2.3 -- gem -v'
2.4.5.1
So, I just ran into this bug and researched it all the way down to the root cause.
The script chruby-exec
first does a source /usr/local/share/chruby/chruby.sh
then does some logic and finally runs exec $SHELL ... chruby ...
.
This can not work. exec
will not carry shell functions to the new fork. This behaviour was changed after shell-shock. Neither the Ubtunu-14.04 nor the Gentoo ~amd64 I have here will carry the chruby
shell function in the newly forked shell after exec
. So to make it clear, the exec
statement clears all the shell functions that chruby-exec
previously sourced to function properly.
I can not explain why some users above describe to only see this when using sudo. Perhaps some quirky work-around of the individual distro they are using? Perhaps not using Bash?
source <some-shell-functions>
exec $SHELL -c 'binary-using-shell-functions-above'
... will never work.
Proposed fix: remove the exec.
Why exec
in the first place?
Why not just $SHELL -c "chruby ..."
?