Using Homebrew vs a ruby version manager on OS X? - ruby

I have a few questions about using Ruby on an OS X 10.11 El Capitan:
Do you think it is ok to modify Apple's built-in Ruby installation (as in installing or upgrading Gems), or should I install a separate ruby environment? (I had been modifying the built in one previously, but once I upgraded to El Capitan Apple undid all of my changes. I never had any problems with it before the upgrade, even when I updated the Gems that Apple included in to more recent versions. Yet I am still worried.)
I'm considering leaving Apple's built in Ruby alone and installing a separate one, leading me to my second question:
Everywhere I read on the internet, people recommend using a Ruby version manager (rbenv, RVM, and the like) to install a separate Ruby environment. I feel like it would be easier, cleaner, and more straightforward to simply use homebrew, since I use it already, to install a ruby to /usr/local. What would be some problems with using homebrew instead of a dedicated Ruby version manager? What are the advantages of using a version manager over homebrew?

Don't mess w/your system Ruby, your system needs to be stable and it's not necessary.
Homebrew isn't made to manage multiple versions of software. RVM (and others) and made to do exactly that. I currently have 6 rubies installed. I'd hate to have to manage that manually. RVM (or friends) is the way to go if you are installing Ruby on your host. People often go to the next level and use Vagrant instances to further isolate their development environment.

IMHO the most important reason to use a version manager is to be able to run multiple different versions of Ruby on the same machine e.g. to test gems with different versions or to run several (legacy and new) applications on the same development computer. Rbenv or RVM makes this easy, Homebrew doesn't support this...

Related

Ruby gems disappear on Mac OS Jenkins slave

I have a few Mac Minis and old Mac Pros we use as Jenkins slaves for automated testing.
Occasionally gems simply disappear and I have to re-install them. This is using the built-in Ruby from Mac OS Yosemite.
Why does this happen?
I use RVM on my personal Macbook Pro, and occasionally it autonomously decides to switch to a new Ruby version, so it makes sense that it won't have all my gems. When I switch back, the gems are gone again.
As for the slaves, they don't have RVM installed, and the outcome is the same.
Could this be caused by Mac OS updates?
The gems are not installed in a Jenkins workspace, I installed them before we installed the Jenkins agent.
The Macs are shared with the test-automation team who also ssh/sudo on them, but don't do anything in Ruby because their code is Java.
Could this be caused by mac OS updates ?
It could be caused by OS updates, and this is one of the big reasons you should not use the system Ruby for your development unless you're content with leaving it plain vanilla. Rightly so, Apple considers that Ruby theirs, and they can and will stomp on it with an update if it suits their purposes and you upgrade the OS.
Instead, at a minimum, install a separate Ruby from source or via Homebrew and consider that yours. Or, investigate using rbenv or RVM on the Jenkins boxes to manage your Rubies, which is what we do. That allows builds to use different Rubies and/or sets of gems and lets you fine-tune the Ruby environment on the Jenkins box to whatever the final-destination Ruby will be.
You say your personal RVM changes on its own? Unh-uh, can't happen on its own; SOMETHING told it to change. Don't attribute that stuff to voodoo or juju, something is making those things happen such as your environment variables changed or the .rvmrc file got stomped on. If your RVM configuration is correct it should be very stable; My rbenv and RVM setups have always been very solid unless I screwed them up.
Without dumps of your gem env or rvm info there's not a whole lot we can do to help you straighten it out. In general though, it sounds like you need to treat your Jenkins hosts like they are production boxes, change them very little, and separate your assets from the vendor's.

Howto upgrade Ruby 1.8.7 to 1.9 on client computers

Of course I know howto install RVM and maintain multiple versions that way, and since I'm a developer I have all the requirements on my own macs (things like xcode etc). Everything is working fine on my own machines.
But how should I distribute my nifty scripts to other mac-users that only have the default 1.8.7 version installed?
I want them to upgrade to 1.9 but I can't expect them to run shell-scripts, rvm (with all its external requirements) etc to be able to run my short 30-line scripts?
Is there a shortcut/tool available so I can get them to upgrade to Ruby 1.9?
Instead of forcing your users to upgrade Ruby, you could package your script into a standalone executable - see SO question on packaging Ruby scripts into Mac OS X applications
There are a few options for automatically setting up development environments.
Thoughtbot's laptop: Laptop is a shell script that turns your Mac OS X laptop into an awesome development machine.
Github's boxen: Automate the pain out of your development environment. Boxen installs your dependencies so you can focus on getting things done.
Pivotal Lab's Workstation: A cookbook of recipes for an OSX workstation.
Thoughtbot's laptop focuses on getting a well-chosen standard set of tools to work on your Mac (you can see which ones in the script).
Boxen seems to be more for teams trying to build their own replicable custom development environment.

Installing Ruby 1.8.7 on Intel MacOSX 10.5.8 - error with make

I am having problems with installing Ruby 1.8.7 using RVM on my Intel architecture MacOSX 10.5.8.
It configures & compiles properly but gives me errors during making.
I tried searching this out but am unable to get through to a solution.
My RVM is installed as single user
Links to my make.log files & my action trails can be found on this springpad note: http://sprng.me/c1s9k
I am assuming that it has got to do with my Developer tools & Xcode(version 3.1.2). I am clueless at the same time though and will appreciate any kickstart you can give me in solving this. I am keen on starting to develop my RoR apps! :D
RVM currently requires Xcode version 3.2.1 at the least. Don't go over version 4.1 though. 4.2 has some serious issues with building rubies and gems, and some of the homebrew and macports packages. They're using an llvm-gcc which is breaking a lot of things.
As for your issue here. Are you running on a 64bit machine? The error in the make logs appear to be based on the architecture type being incorrect. RVM defaults to a x86_64 architecture because the vast majority of the people using it are using 64bit machines, so RVM sets the default to that.We set this in scripts/functions/build and scripts/selector.
We also look for a variable called rvm_arch_flags where you can set the architecture flag needed for your model. This might not be an issue for you if you are using a Core 2 Duo or something similar. Are you running a PPC or something? We usually have issues awith people running Leopard because they are running the early Intels which appear to have been 32bit. You need at least the core 2 duo or xeon based machines.
Now, looking deeper into this, I would try setting rvm_arch_flag='-arch i686' in your global .rvmrc and try rebuilding. if you still run into problems come find me in the #RVM channel on freenode irc. We'll see what we can do. Please also create me a gist of rvm --trace as well.
In addition, it appears to be having problems with the version of the Tcl/Tk frameworks that comes with your Xcode. This could also be due to it being 3.1 rather than 3.2.

Reinstall Ruby on OS X

I've gone and messed up Ruby on my Snow Leopard Machine. I've managed to introduce all sorts of issues and I'm having a hard time cleaning things up.
What are the steps to get me back to square one with Ruby? I'm fairly new to programming so I need it spelled out for me!
It sounds like what you probably want to do is clear out all your globally installed gems in the system Ruby. This can be done by running the following:
sudo rm -rf /Library/Ruby/Gems/*
This will leave all the gems that come with OS X (which is a good thing, since some apps may assume they're installed).
As macarthy said, I also highly recommend using a Ruby version manager (e.g. rbenv or RVM) to more easily install, remove, and manage Ruby versions.
My suggestion would be to forget about what you have and use RVM
https://rvm.io
you can basically ignore what you have installed then.

How to upgrade ruby on cygwin from source?

I installed ruby 1.9.1 from source on cygwin about 9 months ago. I did a default install i.e make, make test, make install which installed it in /usr/local. I am now trying to install 1.92. After building and installing it using the same steps, I found the gems I had installed stopped working. I though this might happen so I made a back up first and was unable to recover. Is there a way to install it without disturbing the previously installed libriaries or should I just bite the bullet and re-install them? I am also begining to think that installing it in the default location might not have been a good idea as it would be hard to tell what files are ruby and what are not if other things were also installed in this location also. I am guessing there is no such thing as make uninstall?
I know this may not be the answer you're looking for, but I highly recommend you take a look at pik, which is a Ruby version manager that works on Windows.
It's similar to rvm, which is the de-facto way to install and manage Rubies on Mac OS and *nix.

Resources