mac os x ruby: development environment ruby rvm setup version management
by bseanvt
17 comments
Installing and Using Rvm on Mac OS X, Creating Gemsets and Reverting to Original Environment
What is RVM and why should you use it? RVM is a Ruby interpreter, version management tool. In short, it enables you to switch between different versions and releases of Ruby (for instance, version 1.8.6, 1.8.7, jruby 1.9.2, ruby enterprise edition) on the same machine, while associating different gems with each version of the ruby interpreter. This is super useful and awesome. If you want to play with Rails 3 and Ruby 1.9.1, for 5 minutes, and then want to switch back to your production apps, which are running on Rails 2.3.5 and Ruby 1.8.7, you can do so with a single command from the terminal. With RVM this is a fairly simple process so there is no reason not to install it. You can also revert back to your system settings (not using RVM) with a single command. After all Rails is just a gem, so you can easily create and manage different RVM “gemsets”, (sets of different gems), for the different versions of Ruby (rubies as RVM refers to them) you have installed.
Installing RVM
bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)
Next you have to add rvm to your bash profile
# place in ~/.bash_profile as the very last line [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
To check everything went well
type rvm | head -n1
Should tell you “rvm is a function”
How to add ruby, pass it the version to install
rvm install 1.8.7
*The current terminal session will load this environment. New sessions will not. To use a version of ruby and set it as the default, pass it the –default option
rvm use 1.8.7 --default
Next create a gemset, which will make available different gems for different versions
rvm gemset create rails_2_3_5
When you run “gem list”, you should see nothing!
gem install rails -v=2.3.5
Set a default rvm and default gemset, specify which gemset with the @ sign and include the –default option
rvm use 1.8.7@rails_2_3_5 --default
which gem gem list ruby --version rails --version
And to get back to where you started and revert to using your original ruby setup
rvm system
For upgrading your version of RVM check out this post I wrote http://seanbehan.com/ruby/how-to-upgrade-rvm-on-mac-os-x/
Finally, you can create a .rvmrc file and put it in any directory and when you cd into that directory the environment specified in the file will be loaded automatically. This way you don’t have to remember the version and gemsets and type them into the console. All you have to do is put the ruby version and gemset name in the file like so
ruby1.8.7@rails2.3.5
You’ll be prompted to trust the .rvmrc file the first time, type “y” for yes. Also, subdirectories will inherit this .rvmrc so you can just put it in the parent directory like
rails2/
.rvmrc
app1
app2
rails3/
.rvmrc
app1
app2
And both app1 and app2 will use the .rvmrc environment while your rails3 directory apps will load the environment in its directory!
More information available here:
http://rvm.beginrescueend.com/rvm/install/
http://www.stjhimy.com/posts/4
http://eddorre.com/posts/installing-rails-3-beta-4-using-rvm
Programming: development environment installation java mac os x scala twitter
by bseanvt
2 comments
Installing Scala on Mac OS X Leopard
I followed the instructions from here http://arvinderkang.com/2009/09/01/installing-scala-on-snow-leopard/ but I used version 2.7.6 (rather than .5) I installed scala under /usr/local/scala so I had to include it to my path. Type
vim .bash_profile export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/scala/scala-2.7.6.final/bin:$PATH"
Now to download and install…
curl -O http://www.scala-lang.org/downloads/distrib/files/scala-2.7.6.final-installer.jar sudo java -jar scala-2.7.6.final-installer.jar
This will launch an installer. Just follow the instructions and when it asks for the destination folder, remember that it’s in /usr/local/scala
Simple as pie!
Installing Sphinx Search Engine on Mac OS X… or ld: library not found for -lmysqlclient
If you are trying to install Sphinx on Mac OS X, it will most likely fail. The current version of MySQL bundled with Mac OS X is not supported and therefore, it will spit out the error message because it can’t find the correct libraries.
ld: library not found for -lmysqlclient
There is a quick solution to the problem -upgrade mysql! You’ll need Mac Ports installed, available at
http://macports.org/
Run the command
sudo port install mysql5
This will not destroy any existing data from your previous MySQL installation. The mac port installation will take a while, and it will appear as if it is just hanging. It’s not. It just takes a while. I clocked it at 15 minutes on a relatively fast network connection. Drink a cappuccino!
After you have the upgrade you’ll need to download Sphinx available at:
http://sphinxsearch.com/downloads.html (latest stable) and build the Sphinx engine from source like so:
wget http://sphinxsearch.com/downloads/sphinx-0.9.8.1.tar.gz tar xzvf sphinx-0.9.8.1.tar.gz cd sphinx-0.9.8.1/ ./configure --with-mysql-libs=/opt/local/lib/mysql5/mysql/ --with-mysql-includes=/opt/local/include/mysql5/mysql/ make sudo make install
Much thanks to this post b/c I spent forever trying to get the bundled version of MySQL linked properly:
http://www.fozworks.com/2008/9/5/rake-installation-of-sphinx-in-mac-osx
Programming: development email environment postfix sending mail
by bseanvt
leave a comment
Sending eMail with Rails on Mac OS X Development Environment
You’ll need a mail transport agent (MTA). I installed and used postfix using Mac Ports.
sudo port install postfix
You’ll need to start postfix, to send mail from your Rails application. You can set it as a startup item and it will start on boot. However, since I don’t send too much mail from my Rails app, just for testing normally, I start it manually.
sudo postfix start
That should do it!
Setting up a new ubuntu server with apache2, php, ruby on rails, rubygems, mysql, and git
Here are a list of commands to get up and running with Apache2 with Phussion Passenger for Rails, PHP5, MySQL5, Ruby on Rails with Gems, and the source control software Git. I think that this is a pretty ideal environment for a development box and even production if you need to run apps that are written in both PHP and Ruby.
I’m using Ubuntu 8, Hardy Heron in this example.
Login to your server as root, sudo su, if you’re on the box already as another user. You can optionally enter the sudo command before each of the following commands but I don’t in this example. If you get a permission denied error, try the same command again with sudo in front of it.
The following will update where Ubuntu looks for packages, upgrade to the latest stable build and also install build tools like gcc and make.
apt-get update apt-get upgrade apt-get install build-essential
Now that the server is up to date and has the necessary tools to build and compile the software we’re about to install, let’s intstall our basic LAMP (Linux, Apache2, MySQL and PHP) stack. You can list different packages to install sequentialy if you separate them with a space.
apt-get install apache2 apache2-prefork-dev apt-get install mysql-client mysql-server apt-get install php5 php5-mysql
Lets get Ruby installed next. We will want to use Ruby Gems to manage our Ruby packages rather than apt-get. The reason is because apt-get doesn’t keep up with the latest stable for all Ruby packages and Gems is really a great way to manage Ruby libraries. Think of Ruby Gems as apt-get but for Ruby. Rails for example is a Ruby library that we will download and install using Gems. However, to install Gems we need Ruby and we get Ruby using apt-get.
apt-get install ruby ruby1.8-dev libopenssl-ruby ri rdoc
This should download and install Ruby with a couple of other packages for documentation and SSL support. To get Gems we need to download either a zip or tgz. The best way and easiest way is to navigate to http://rubyforge.org and search for rubygems(one word).
Here is a link to the exact package that I have downloaded and used for this information.
http://rubyforge.org/frs/download.php/45905/rubygems-1.3.1.tgz
However, this could change in the future or when Gems gets an upgrade.
You need to get it on your server. You can either download it to your local machine and ftp or scp it to your remote server or you can use a tool like wget to download directly to your server.
wget http://rubyforge.org/frs/download.php/45905/rubygems-1.3.1.tgz
If you don’t have wget installed, which would be odd, just type apt-get install wget
After it has finished downloading unpack it and cd into it *the name below will be different .
tar xzvf <rubygems-dowloaded-file.tgz>
After you cd into the folder type
ruby setup.rb
You’ll install new Gems with the command gem install package-name. However, now you need to link the program you just downloaded to /usr/bin/gem. The reason is that Gems was installed but with a version number suffix like /usr/bin/gem1.8 or whatever version it’s at. The reason for this is so that you can switch between different versions of Gems without having to uninstall anything. Just override the old link and you can use the new Gem. So to link the file you’ll need to find the path that it was installed under, most likely /usr/bin/gem1.8. Once you have the path type in the terminal
ln -s /usr/bin/<your gem version> /usr/bin/gem
Where <your gem version> is something like gem1.8
Type gem –version to verify that it works. You’ll get a readout of the version of the Gem you are using. Next let’s get it up to date and install the Rails framework. That is two dashes for the system flag below.
gem update --system gem install rails
Once that is done we’ll want to install Phusin Passenger which will let us deploy our Rails application in a similar fashion to any PHP based application. Just point a VirtualHost DocumentRoot to the location of your Rails_Root/public directory and your’re good to go!
gem install passenger
Next we’ll build and compile the module for Apache. This is why we needed to run apt-get install build-essential, installing passenger requires make and gcc development tools. When you execute the next command it will spit a lot of stuff to the screen. This is normal, it is building and linking the module for you. When it is done it will tell you what to copy and paste. I will too, but your configuration could be slightly different. Just follow the prompts that follow.
passenger-install-apache2-module
Passenger will tell you where to put the configuration options. It will look something like this
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.0.5/ext/apa$ PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.0.5 PassengerRuby /usr/bin/ruby1.8
I placed the code above into the /etc/apache2/mods-available/passenger.conf then I linked them to the mods available directory like so ln -s /etc/apache2/mods-available/passenger.conf /etc/apache2/sites-enables/passenger.conf
Next create a VirtualHost
<VirtualHost *> ServerName awesome.iam.com DocumentRoot /var/www/awesome.iam.com/public RailsEnv production </VirtualHost>
Remember to restart your server with
apache2ctl restart
Also, you restart your Rails application by issuing this command from the Rails_Root dir
touch tmp/restart.txt
And finally, to install Git
apt-get install git git-core


