Migrating to Snow Leopard messed up my ruby path - ruby

Since I've migrated from Leopard to Snow Leopard I get
$ ruby script/server
Rails requires RubyGems >= 1.3.2. Please install RubyGems and try again: http://rubygems.rubyforge.org
the only way to make it work is:
$ /usr/bin/ruby script/server
=> Booting Mongrel
=> Rails 2.3.8 application starting on http://0.0.0.0:3000
So I guess something got broken with my path, here is my ~/.profile file fyi:
##
# DELUXE-USR-LOCAL-BIN-INSERT
# (do not remove this comment)
##
echo $PATH | grep -q -s "/usr/local/bin"
if [ $? -eq 1 ] ; then
PATH=$PATH:/usr/local/bin
export PATH
fi
export PATH=$PATH:/opt/local/bin
export MANPATH=$MANPATH:/opt/local/share/man
export INFOPATH=$INFOPATH:/opt/local/share/info
PATH="/usr/local/mysql/bin:$PATH"
PATH="/opt/local/bin:/opt/local/sbin:$PATH"
PATH="/usr/local/bin:/usr/local/sbin:$PATH"
export PATH
export GEMDIR=`gem env gemdir`
How can I fix this?

install RVM http://rvm.io/
Problem solved..
There is also number of other similar software: https://github.com/wayneeseguin/rvm/blob/master/help/alt.md

The last two PATH= lines appear to be the problem. There's a Ruby in your /usr/local/bin or /opt/local/bin directory and it's taking precedence over the system-installed one. I'm not sure why migrating to Snow Leopard would trigger this, since I don't believe it adds those lines to the file.
Doon's recommendation of RVM is not necessary, but it is a really handy tool.

Related

RVM Warning! PATH is not properly set up

I just installed rvm on my mac, but I receive this warning on global commands
Warning! PATH is not properly set up, '/usr/local/rvm/gems/ruby-1.9.3-p194/bin' is not at first place, usually this is caused by shell initialization files - check them for 'PATH=...' entries, it might also help to re-add RVM to your dotfiles: 'rvm get stable --auto-dotfiles', to fix temporarily in this shell session run: 'rvm use ruby-1.9.3-p194'.
My $PATHS confirms the warning:
$echo :$PATH:
/usr/local/rvm/bin:/usr/local/heroku/bin:/usr/local/rvm/gems/ruby-1.9.3-p194/bin:/usr/local/rvm/gems/ruby-1.9.3-p194#global/bin:/usr/local/rvm/rubies/ruby-1.9.3-p194/bin:/usr/local/rvm/bin:/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:
As suggested, I first tried rvm get stable --auto-dotfiles to no avail, then I checked my shell initializations files. My /.bash_profile:
export PATH=/usr/local/bin:/usr/local/sbin:$PATH
export PATH=/usr/local/share/python:$PATH
PATH=$PATH:$HOME/bin:/opt
My /Users/User/.bash_profile seems to be the culprit:
export PS1="[\w]$"
alias ll='ls -laGH'
alias .='echo $PWD'
### Added by the Heroku Toolbelt
export PATH="/usr/local/heroku/bin:$PATH"
# rvm
PATH=/usr/local/rvm/bin:$PATH
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
The reason is if I remove Heroku Toolbelt and the rvm paths (which were answers suggested by other stack overflow questions), /usr/local/rvm/gems/ruby-1.9.3-p194/bin would be in first place and the problem is resolved. However, I don't know what to do with the Heroku Toolbelt. Additionally, shouldn't PATH=/usr/local/rvm/bin:$PATH place rvm first anyways?
I must be missing some trivial solution.
Additional notes:
$rvm --debug get head produces no installation notes regarding this except for the warning posted above.
Update: calling rvm system fixes the problem, but only in the current shell session. $echo $PATH now produces:
:/usr/local/heroku/bin:/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/rvm/bin:
What is a permanent fix?
I have the same problem with rvm 1.25.26.
solution:
I've modified ~/.bashrc as follows:
## rvm
PATH="$GEM_HOME/bin:$HOME/.rvm/bin:$PATH" # Add RVM to PATH for scripting
[ -s ${HOME}/.rvm/scripts/rvm ] && source ${HOME}/.rvm/scripts/rvm
causing:
Warning is fired at __rvm_path_match_gem_home_check() function in
$HOME/.rvm/scripts/functions/cli.
If the beginning of $PATH does not start from $GEM_HOME/bin, a warning message is displayed.
__rvm_path_match_gem_home_check()
{
(( ${rvm_silence_path_mismatch_check_flag:-0} == 0 )) || return 0
[[ -n "${GEM_HOME:-}" ]] || return 0
case "$PATH:" in
($GEM_HOME/bin:*) true ;; # all fine here
(*:$GEM_HOME/bin:*)
__rvm_path_match_gem_home_check_warning "is not at first place"
;;
(*)
__rvm_path_match_gem_home_check_warning "is not available"
;;
esac
}
In my case, Heroku had added the following to my .bashrc:
### Added by the Heroku Toolbelt
export PATH="/usr/local/heroku/bin:$PATH"
Notice how it's prepending itself to the path. All I had to do was switch it around to:
### Added by the Heroku Toolbelt
export PATH="$PATH:/usr/local/heroku/bin"
And my problem was solved!
If you don't have Heroku, look for anything else that may be prepending itself to your path. Really, RVM just wants to make sure it has a fair chance to load Ruby before any gems that include themselves in the path get loaded.
The solution was to run
$rvm install ruby-head
$rvm use ruby-head
with an optional $rvm docs generate-ti
I was using an outdated version of Ruby on my system, updating it to the current version fixed it.
Search your config files for:
export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
Replace that line with:
export PATH="$HOME/.rvm/bin:$PATH" # Add RVM to PATH for scripting
To make sure the RVM code is at the start of your $PATH. Also make sure no other code puts itself at the start of $PATH.
Because I was using the ubuntu version of rvm, I needed to put this in my .profile:
PATH="$GEM_HOME/bin:/usr/share/rvm/bin:$PATH" # Add RVM to PATH for scripting
[ -s /usr/share/rvm/scripts/rvm ] && source /usr/share/rvm/scripts/rvm
I resolved this problem in Ubuntu 18.04 by commenting
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session as a function
in ~/.bashrc file, as the same line was there in ~/.bash_profile file.
Right. I'dumping this answer as I spent hours researching with no success. I hope this will save someone else some time.
My problem was having 2 ruby heads installed and apparently, the ruby version was also an issue.
➜ rvm list
Warning! PATH is not properly set up, '/home/ma/.rvm/gems/ruby-1.8.7-head/bin' is not at first place.
Usually this is caused by shell initialization files. Search for 'PATH=...' entries.
You can also re-add RVM to your profile by running: 'rvm get stable --auto-dotfiles'.
To fix it temporarily in this shell session run: 'rvm use ruby-1.8.7-head'.
To ignore this error add rvm_silence_path_mismatch_check_flag=1 to your ~/.rvmrc file.
rvm rubies
=> ruby-1.8.7-head [ x86_64 ]
ruby-1.8.7-p374 [ x86_64 ]
ruby-2.3.0 [ x86_64 ]
ruby-2.4.0 [ x86_64 ]
* ruby-head [ x86_64 ]
# => - current
# =* - current && default
# * - default
In this case, (trying all the above solutions, this and this) setting my default to ruby-head [ x86_64 ] and restarting the terminal the Warning! AND my current ruby version was persisting as the above snippet shows.
To fix that:
rvm remove ruby-1.8.7-head
Now, if I restart the terminal:
➜ rvm list
rvm rubies
ruby-1.8.7-p374 [ x86_64 ]
ruby-2.3.0 [ x86_64 ]
ruby-2.4.0 [ x86_64 ]
=* ruby-head [ x86_64 ]
# => - current
# =* - current && default
# * - default
It seems, and the end of .bashrc, you need to guarantee the rvm path is at the beginning of $PATH

After Installation RVM and Ruby 1.9.3 every Bash path change RVM Initialization Script is printed

I installed the latest RVM - Ruby Version Manager - and installed Ruby 1.8.7 and 1.9.3 on OSX Lion with XCode 4.3.3 using clang rvm install 1.9.3 --reconfigure --debug -C --enable-pthread --with-gcc=clang as the regular way did not work due to a GCC error. I did get one error clang: error: unsupported option '--with-libyaml, but Ruby 1.9.3 worked and I could run WPScan that needs at least 1.9.2 .
But now every time I run a command to change folder such as cd I get a long Bash script printed related to RVM - see http://pastebin.com/UAm38Vcm and:
.
How can I stop it from doing that?
Update I
Added a comment at RVM at Github as well https://github.com/wayneeseguin/rvm/issues/1039 , but as that issue is not 100% related and as I need this solved as soon as possible I opened a thread here with more data.
Update II
I realized the RVM Initialization script is the one that is being printed: https://github.com/wayneeseguin/rvm/blob/master/scripts/initialize . No idea why though..
Update IV
My .bashrc
# define aliases
alias sudo='sudo '
#alias ruby='ruby1.9'
alias apacherestart='sudo apachectl -k restart'
# define hist properties
HISTFILESIZE=1000000000
HISTSIZE=1000000
# define path to programs
PATH=/opt/local/bin:opt/local/sbin:/opt/subversion/bin:/opt/local/apache2/bin/:/opt/local/lib/python2.4/site-packages/django/bin:$PATH
# define manpath
MANPATH=/opt/local/share/man:$MANPATH
# export env vars
export HISTFILESIZE HISTSIZE PATH MANPATH
PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
My .bash_profile
source ~/.bashrc
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
Your cd command has somehow become aliased or a function has been created named "cd".
You can undo those with either:
unalias cd
or
unset -f cd
You should be able to revert temporarily with
unalias cd
It appears that you will need to figure out what was changed in your .bashrc and revert all those changes. If the installation script is at all sanely written, it should have made backups, or document somehow what was changed.

Can't change Ruby Version using RVM

I'm running Lion DP4 with Ruby 1.8.7 preinstalled. For my new project I need the latest Ruby version though. Therefore installed rvm and the latest Ruby. Somehow when I try to use the new version it doesn't give me any errors, but the change just doesn't take effect.
~martin$ rvm use ruby 1.9.2 --default
Using /Users/martin/.rvm/gems/ruby-1.9.2-p180
~martin$ which ruby
/usr/bin/ruby
My .bash_profile file looks like this:
export PATH="/opt/local/bin"
export PATH="/opt/local/sbin"
export PATH="/usr/texbin:${PATH}"
export PATH=$PATH:/Users/martin/bin
export PATH=$PATH:/usr/local/mysql/bin
source ~/.git-completion.bash
alias mysql '/usr/local/mysql/bin/mysql'
alias mysqladmin '/usr/local/mysql/bin/mysqladmin'
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function
Can anyone tell me why me wanting to change the Ruby version is not working? Appreciate any help.
Thanks in advance!
Martin
EDIT (2011/06/28 - 1:08PM):
Ok, for some really odd reason everything works now.
I guess my .bash_profile file somehow was messed up. In the beginning I thought that I installed it as root therefore changed the rvm path to
[[ -s "/usr/local/rvm/scripts/rvm" ]] && . "/usr/local/rvm/scripts/rvm" # Load RVM function
But I guess my path declaration in general was totally messed up. Now my .bash_profile file looks like this:
export PATH=$PATH:/opt/local/bin
export PATH=$PATH:/opt/local/sbin
export PATH=$PATH:/usr/texbin
export PATH=$PATH:/Users/martin/bin
export PATH=$PATH:/usr/local/mysql/bin
source ~/.git-completion.bash
alias mysql '/usr/local/mysql/bin/mysql'
alias mysqladmin '/usr/local/mysql/bin/mysqladmin'
[[ -s "/usr/local/rvm/scripts/rvm" ]] && . "/usr/local/rvm/scripts/rvm" # Load RVM function
#Mark
Yes, I installed Ruby using MacPorts and hope that now I've fixed the path.
I had the same problem, this is not a real solution but a hack:
sudo mv /usr/bin/ruby /usr/bin/_ruby
Note that this is not ideal since it might break scripts that start with:
#!/usr/bin/ruby
blablabla
Looking forward for a better answer in the meantime :)

How to use "RVM --default" on MacOSX

After using Ruby and Rails for quite some time now, I wanted to try RVM. Everything works fine, except for one thing:
In a freshly opened Terminal ruby points to the system's ruby, despite the fact, that I used the rvm --default command.
user#terra ~ $ ruby -v
ruby 1.8.7 (2010-08-16 patchlevel 302) [i686-darwin10]
user#terra ~ $ which ruby
/opt/local/bin/ruby
user#terra ~ $ rvm list
ruby-1.8.7-p334 [ ]
=> ruby-1.9.2-p180 [ ]
Everything is fine after I call rvm reload
user#terra ~ $ rvm reload
user#terra ~ $ ruby -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin10.7.1]
tmangner#terra ~ $ which ruby
/Users/user/.rvm/rubies/ruby-1.9.2-p180/bin/ruby
I set up my .bash_profile as described in the documentation:
[[ -s "/Users/user/.rvm/scripts/rvm" ]] && source "/Users/user/.rvm/scripts/rvm"
That --default does not seem to work for me ...
user#terra ~ $ rvm use 1.9.2 --default
Using /Users/user/.rvm/gems/ruby-1.9.2-p180
user#terra ~ $ rvm default
user#terra ~ $
I'm using Mac OS X Snow Leopard (10.6.6)
I had the same problem once. It turned out the rvm-script got loaded twice, which broke things a bit.
Check all the files that load when you open a shell:
/etc/profile
~/.bashrc
~/.bash_profile
and so on, and make sure they don't load RVM twice.
Maybe put
echo "Going to load RVM"
before
[[ -s "/Users/user/.rvm/scripts/rvm" ]] && source "/Users/user/.rvm/scripts/rvm"
in your ~/.bash_profile to see if it happens or not.
Moving the initialization
[[ -s "/usr/local/rvm/scripts/rvm" ]] && . "/usr/local/rvm/scripts/rvm"
in the bottom of ~/.bash_profile solved the problem for me.
A possible fix for ZSH users:
Somehow I had:
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
in both .zprofile and .zshrc.
Removing the line from .zprofile resolved the issue. (Though you should be able to remove from either, as long as it appears just once)
I had the same problem.
Moving:
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function
after the line from MacPorts:
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
solved the problem for me.
Run the command:
rvm use --default 1.9.2?
This worked for me on openSUSE, I don't know about Snow Leopard though.
Instead of:
rvm use 1.9.2 --default
I used the full version:
rvm use ruby-1.9.2-p290 --default
That worked for me in zsh.
I had the same problem and since I use Oh-My-Zsh it was a little bit more difficult to track if I have duplicate calls to RVM.
I fixed it by moving the call to RVM from the separate rvm.zsh file located in my \custom folder inside \oh-my-zsh to the very end of my main .zshrc file.
It looks like RVM is really sensitive to being called not at the end of your zsh initialization sequence.
As a sanity check, make sure that the project you are working on has the same Ruby version that you try to set as default in the .ruby-version file.
It happened to me, and I couldn't figure out why rvm doesn't use my default.
I had the same issue on Mac OS X 10.7, and later I found that my account was not added to the "rvm" group.
After I added myself to it I can set --default.
My issue was resolved by changing
PATH=/usr/local/bin
to
PATH=$PATH:/usr/local/bin
in my .zshrc file.
Obviously, you need to make sure RVM is properly installed first, and run the type rvm | head -1 check that #choise suggested. rvm use --default 1.9.3-p362 now works properly.
See "Sometimes, CD to a dir with .rvmrc doesn't set the Ruby version or gemset" for more information.
Try this to set default Ruby for a new shell:
sudo rvm alias create default 1.9.2
For some really newbies on Mac OS use JewelryBox and in preferences section you find
"show default ruby in system menu bar"
checking this allow you to switch between rubies.
You can select your pre-installed rubygems (if you have rubygems) via "system#*" choice.
I followed the suggestions above - checked my bash_profile (which was fine) and also noticed that in ubuntu you may need to head the advice of https://rvm.io/support/faq/#shell_login
However I was still having this problem until I realised that the project I was trying to run had a .rvmrc file that was specifying a version of ruby that I didn't have installed. When I corrected this - I stopped having the problem (so in fact it wasn't that the use default wasn't working, but that this project was overriding it)
I had to remove the [[ -s "/usr/local/rvm/scripts/rvm" ]] && . "/usr/local/rvm/scripts/rvm" line from ~/.bash_profile and had to move it to the very bottom of ~/.bashrc.
This fixed the issue on OS X 10.10.1.
What does type rvm | head -1 print out?
In my .bash_profile on the latest MacOS X I had to put:
# Ruby Version Manager
[[ -s "/usr/local/rvm/scripts/rvm" ]] && . "/usr/local/rvm/scripts/rvm"
I also created a gemset and set this as default:
rvm reload
rvm install 1.9.2
rvm --create use 1.9.2#default
rvm --default use 1.9.2#default
You need to put the path to RVM in front of your PATH:
$ export PATH=/path/to/rvm-dir:$PATH
For some reason I had in my $HOME/bin directory ruby, gem, rake, ... file stubs. Therefore my rvm --default use 1.9.3 didn't work as expected. Removing the $HOME/bin directory solved the problem.
cat bin/ruby
#!/usr/bin/env bash
if [[ -s "/usr/local/rvm/environments/ruby-1.9.2-p290" ]]
then
source "/usr/local/rvm/environments/ruby-1.9.2-p290"
exec ruby "$#"
else
echo "ERROR: Missing RVM environment file: '/usr/local/rvm/environments/ruby-1.9.2-p290'" >&2
exit 1
fi

RVM is not working in ZSH

I'd like to try out the ZSH shell on my Mac, but I also do a lot of Ruby and Rails development, so I use RVM quite a bit too. The problem is that I can't seem to get RVM to work in ZSH, and it's working fine in the default Bash shell:
> zsh
> rvm 1.9.2
> ruby -v
ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0]
> which ruby
/usr/bin/ruby
I can definitely confirm that RVM is installed, as well as ruby 1.9.2 under RVM; I use it all the time in Bash. Running an rvm list in ZSH shows this, interestingly:
rvm rubies
ruby-1.8.7-p302 [ x86_64 ]
=> ruby-1.9.2-p0 [ x86_64 ]
This is happening on both my iMac and MacBook Pro. I am using OS X 10.6.6 on both, ZSH 4.3.9 on the iMac (4.3.10 on the laptop). Nothing fancy like oh-my-zsh just yet.
I tried looking at the documentation on RVM's website, but nothing helped me there.
Do you have this line in your ~/.zshrc?
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
Note March 2014:
With latest RVM, the following line:
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
isn't needed anymore, and it shouldn't be in your ~/.zshrc.
Documentation has been updated in RVM documentation with Zsh:
Make sure in iTerm2 Preferences: Login shell option is set (do not use Command option). This is required for RVM to work.
If you are still getting rvm is not a function errors on iTerm, try:
rvm get stable --auto-dotfiles
Note November 2014
The rvm installation instructions warn that .zshrc doesn't include $PATH when setting PATH, thus replacing PATH's contents without regard for what already exists in PATH.
To remedy this I now append PATH to have .rvm/bin and then prepend $PATH at the beginning of setting PATH on the second line:
export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
export PATH=$PATH:"/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin:/usr/local/mysql/bin:/opt/local/bin"
I had the same problem, I solved using this after "ruby on rails" installation:
echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.zshrc
and
source ~/.zshrc
I use zsh, and had [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" in my .zshrc file, but was getting a parse error:404.
When I moved that line to the .profile file, the error stopped. It seems it was conflicting with something in my .zshrc file, and perhaps running it in .profile avoided the .zshrc file incompatibility. I haven't been able
I got it working on Manjaro Linux (zsh) by adding source /usr/share/rvm/scripts/rvm to $HOME/.zshrc

Resources