I'm new to Ruby and am enjoying it, but when I installed, I attempted to use RVM and got a series of error messages. I thus decided to use Homebrew, which worked (as far as I can tell). However, my version is 1.8.7, and I'd like to update to 1.9.3 (I'm running Lion). Can someone advise the best way to do this? (Apologies for not providing the error messages, but I'm wary of running AVM again, considering I have a version that's working - I recall that one of them was regarding the ./config file, which I realize is not that helpful.) Thanks RH
on 2013-01-14 18:13
on 2013-01-14 18:25
Install 'rbenv' and 'ruby-build' with Homebrew. After setting up rbenv, install ruby with 'rbenv install' command
on 2013-01-14 18:43
Thanks, Alex. I'm not terribly unix literate and have tried to follow your instructions, but I'm apparently not doing something correctly. I've attached a screen shot of my terminal process.
on 2013-01-14 18:58
'rbenv install --list' will show you ruby versions available for install. Pick one -- you will most likely want to 'ruby install 1.9.3-p362'. After the installation is complete, use 'rbenv global 1.9.3-p362' to set default ruby version to 1.9.3. PS. Don't forget to add eval "$(rbenv init -)" to your ~/.bashrc
on 2013-01-14 18:59
You are almost there. You need to tell `rbenv install` which version you want. rbenv install --list will show you many possible rubies, but seems like you'd want the latest 1.9.3, so... rbenv install 1.9.3-p362 -Rob
on 2013-01-14 22:47
Again, thanks to both - however it's still not working. I'll paste the terminal process here: Rons-iMac:~ Ron$ eval "$(rbenv init -)" Rons-iMac:~ Ron$ PATH=$HOME/.rbenv/shims:$PATH Rons-iMac:~ Ron$ rbenv install 1.9.3-p362 Downloading yaml-0.1.4.tar.gz... -> http://dqw8nmjcqpjn7.cloudfront.net/36c852831d02cf... Installing yaml-0.1.4... BUILD FAILED Inspect or clean up the working tree at /var/folders/mt/7tfxcg6x3r55_033vljxn91r0000gn/T/ruby-build.20130114214558.2141 Results logged to /var/folders/mt/7tfxcg6x3r55_033vljxn91r0000gn/T/ruby-build.20130114214558.2141.log Last 10 log lines: checking for mawk... no checking for nawk... no checking for awk... awk checking whether make sets $(MAKE)... no checking for gcc... no checking for cc... no checking for cl.exe... no configure: error: in `/var/folders/mt/7tfxcg6x3r55_033vljxn91r0000gn/T/ruby-build.20130114214558.2141/yaml-0.1.4': configure: error: no acceptable C compiler found in $PATH See `config.log' for more details
on 2013-01-14 23:08
On Mon, Jan 14, 2013 at 3:47 PM, Ron Herrema <email@example.com> wrote: > configure: error: no acceptable C compiler found in $PATH That's your problem. I ready earlier that you are on Lion. Do you have xcode and xcode command line tools installed? Install those and try again Andrew McElroy
on 2013-01-14 23:37
OK - I'm getting frustrated. I installed xcode command line tools (I already had xcode). I then installed 1.9.3-p362 and got a series of prompts that implied to me that it had successfully installed. I then closed and reopened terminal and typed ruby -v, which told me that I have 1.8.7. ????
on 2013-01-15 05:20
Stay cool. First, ensure that you have the required ruby version typing 'rbenv versions' in the terminal. You will see something like: -- ~ rbenv versions * system (set by /Users/rherrema/.rbenv/version) 1.9.3-p362 -- The above means you have two rubies installed, and that system ruby is currently the default. Next, instruct rbenv to set default version to 1.9.3, typing 'rbenv global 1.9.3-p362'. That should do it.
on 2013-01-15 11:06
OK, I'm cool, but still confused. I did as you said, Alex, but 'ruby -v' still gives me 1.8.7. Here's my terminal process: Rons-iMac:~ Ron$ rbenv versions * system (set by /Users/Ron/.rbenv/version) 1.9.3-p362 Rons-iMac:~ Ron$ rbenv global 1.9.3-p362 Rons-iMac:~ Ron$ ruby -v ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin11.0]
on 2013-01-15 11:19
I never thought it would be so complicated ^) Please, ensure your .bashrc contains 'eval "$(rbenv init -)"' and restart terminal session.
on 2013-01-15 11:34
But how do I ensure that my .bashrc contains that code? Should there be a file somewhere called '.bashrc'? i don't find one. I did find one called 'rb_outparse.bash'. I've attached a screen shot of that.
on 2013-01-15 11:38
Subject: Re: Installation query Date: Tue 15 Jan 13 07:18:37PM +0900 Quoting Alex van der Ruchei (firstname.lastname@example.org): > I never thought it would be so complicated ^) > Please, ensure your .bashrc contains 'eval "$(rbenv init -)"' and > restart terminal session. I know nothing about rbenv, but if you type which -a ruby you find out the complete path of all the executables called 'ruby' that you may execute on your system (included in your PATH). The first one is the one you execute as default. If you have more than one, the first one is prolly not the one that rbenv manages (the result of a past installation?). If you know what you are doing, it may be sufficient to remove that executable (or maybe change its name to something like 'ruby_but_i_do_not_want_to_run_it', if you want to stay on the safe side). But it may be that lots of stuff break in your mac. I don't know. The best thing for you is to learn a bit about how a Unix system works... For example, you can learn about the which command by typing man which Manpages are installed as default in macs. Carlo
on 2013-01-15 11:49
$ open ~/.bashrc -- Yes, it's inside your home directory and hidden.
on 2013-01-15 13:02
Alex, I found the .bashrc file and included 'eval "$(rbenv init -)"'', but that didn't seem to make a difference (unless I missed some other step). I followed Carlos advice, found the two versions, and deleted the alias that was pointing to the old version. Now ruby -v gives me 1.9. Thanks to both for the help.
on 2013-01-15 20:01
This is perhaps not totally resolved. Though ruby -v says 1.9, I'm not sure that's what's actually running. I was expecting that the scope of a local variable would not override that of a block variable, but it has, which I understand changed with 1.9. Is there some way I can know which version is actually running? Also, when i look in the Library/Ruby directory, there is only a 1.8 folder . . .?
on 2013-01-15 20:24
Subject: Re: Installation query Date: Wed 16 Jan 13 04:01:42AM +0900 Quoting Ron Herrema (email@example.com): > This is perhaps not totally resolved. Though ruby -v says 1.9, I'm not > sure that's what's actually running. I was expecting that the scope of a > local variable would not override that of a block variable, but it has, > which I understand changed with 1.9. Is there some way I can know which > version is actually running? Yup. There is a global constant calld RUBY_VERSION. If you write a program that reads puts RUBY_VERSION and save it as 'prog.rb', for example, then you can do ruby prog.rb and read the output. > Also, when i look in the Library/Ruby directory, there is only a 1.8 > folder . . .? In Linux, ruby stuff is held in /usr/lib/ruby (or /usr/local/lib/ruby if you compile ruby by yourself). Probably this is true also with mac? Have a look... There is another teeny little pretty unix utility called strace. It may also be included in macos - I don't know. One way you can run it is as strace -eopen ruby prog.rb It will print out all files it tries, more or less successfully, to open. This way you can see in practice where your libraries are being fetched. For example, in my system a system .rb file is searched for in 7 places before it is eventually found: open("/usr/local/lib/ruby/site_ruby/2.0.0/rbconfig.rb", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/usr/local/lib/ruby/site_ruby/2.0.0/x86_64-linux/rbconfig.rb", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/usr/local/lib/ruby/site_ruby/rbconfig.rb", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/usr/local/lib/ruby/vendor_ruby/2.0.0/rbconfig.rb", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/usr/local/lib/ruby/vendor_ruby/2.0.0/x86_64-linux/rbconfig.rb", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/usr/local/lib/ruby/vendor_ruby/rbconfig.rb", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/usr/local/lib/ruby/2.0.0/rbconfig.rb", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/usr/local/lib/ruby/2.0.0/x86_64-linux/rbconfig.rb", O_RDONLY|O_CLOEXEC) = 5 (btw, rbconfig.rb is the file where RUBY_VERSION is defined) Carlo
on 2013-01-16 01:11
The puts RUBY_VERSION command was helpful and revealed that in fact I was running 1.8. I finally tracked down 1.8 in the folders and deleted it, and now I'm running 1.9 for real. i must say that the file system is confusing. There are bin, local, and lib folders on multiple levels. The main Ruby files are in Cellar. Things for Ruby are spread out all over the place.
on 2013-01-16 02:20
On 01/15/2013 06:06 PM, Ron Herrema wrote: > OK, I'm cool, but still confused. I did as you said, Alex, but 'ruby -v' > still gives me 1.8.7. Here's my terminal process: > > Rons-iMac:~ Ron$ rbenv versions > * system (set by /Users/Ron/.rbenv/version) > 1.9.3-p362 > Rons-iMac:~ Ron$ rbenv global 1.9.3-p362 > Rons-iMac:~ Ron$ ruby -v > ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin11.0] > Hi, Ron Check your $PATH , maybe your ruby 1.8.7 is before your ruby 1.9.3 confirm 2012070114452332047421859252 zhu soffolk=