Hacker News new | past | comments | ask | show | jobs | submit login
Get Ruby and Rails running on Ubuntu with one command (thechangelog.com)
56 points by adamstac on Jan 21, 2011 | hide | past | favorite | 50 comments



Oblig. bash.org, http://www.bash.org/?464385

  <@insomnia> it only takes three commands to install Gentoo
  <@insomnia> cfdisk /dev/hda && mkfs.xfs /dev/hda1 && mount /dev/hda1 /mnt/gentoo/ && chroot /mnt/gentoo/ && env-update && . /etc/profile && emerge sync && cd /usr/portage && scripts/bootsrap.sh && emerge system && emerge vim && vi /etc/fstab && emerge gentoo-dev-sources && cd /usr/src/linux && make menuconfig && make install modules_install && emerge gnome mozilla-firefox openoffice && emerge grub && cp /boot/grub/grub.conf.sample /boot/grub/grub.conf && vi /boot/grub/grub.conf && grub && init 6
  <@insomnia> that's the first one


haha updated to read "A setup script to get Ruby and Rails running on Ubuntu server in one line". The first draft of the script was one command originally.


This strikes me as no easier than rvm, but less clean (installations go to /usr/local, no easy way to switch between various ruby interpreters or gemsets, harder to uninstall, etc.).

Why not just do this?

    1) Update whatever requirements you need via APT tool of choice.
    2) Install rvm
    3) Install ruby-1.9 using rvm
    4) gem install rails
    5) Write great rails app.


It's not too often that you'll have a server that runs two applications. Sure, if that were the case then you would be using RVM in which case I would recommend following the guide already linked.

But if you've got one application running one version of Ruby, then this is definitely a perfect way to go.


I posted the following guide the other day:

http://ryanbigg.com/2010/12/ubuntu-ruby-rvm-rails-and-you

Sadly it languished with no upvotes. :( I found it extremely useful, however!



Ahh.. Dupe, then. Thanks!


I'm glad you found it useful, but yes it was already posted back in December.


Is rvm commonly used for production or just development environments? I can see where having a script to get your production (or testing) environment up and running with minimal user work would be useful, but if this is meant for just development I agree with your point.


I use RVM for both development and production, and I've written scripts that use it to set up both my development and production machines. It's nice to be able to reformat my workstation (for new Ubuntu releases, or new hardware) and get back to business quickly. As far as production, I'm not really sure RVM is that much of a win, assuming you're compiling the latest Ruby anyway and have only one app on the server. I use it since I've yet to learn proper packaging and therefore the only (easy) way to uninstall a Ruby is via RVM (I know about checkinstall, but IME it's buggy as hell).


Hmm, maybe putting together a oneliner for that would help a lot of people. Added to my todo list.


I don't understand the point of using a one-liner vs just doing it in a process and getting an understanding of whats going on at each step.


I totally agree that you should become fully comfortable with setting up a box manually. But when you perform the same setup over and over and have the process memorized as I do then writing a little shell script to get the job done never hurts.


I agree, and perhaps I should have added that into my comment.

For a newbie, have them walk through it, but for the repeated process, then automate it.


That is many commands, but it's only one line.

And there's something in the inner-sysadmin in me that sees "curl http://example.com/foo.sh && ./foo.sh" and shudders. That sounds like a receipe for disaster.


It's a bitch rubygems are so fucked up on Debian/Ubuntu and that Ruby 1.9.2 is still not in Ubuntu's repo.

Otherwise that line would be:

     sudo aptitude install ruby1.9.2-full && sudo gem install rails


That's what rvm is for. Leave the system Ruby alone and install your own, even multiple versions. I have ruby 1.8.7 with rails 2.3.5 and 1.9.2 with 3.0.3, easily switch between them for testing.

http://rvm.beginrescueend.com/


I have updated the script to ask you if you want to build Ruby from source or install RVM (Wayne from RVM pointed me in the right direction)


You're an idiot if you're not using rvm by now.


RVM is not beginner friendly because it has dependencies, it compiles stuff on your machine and there are dozens of problems waiting to happen because of that.

If wanting an easier way to install Rails for beginners makes me an idiot, then I'm proud of it ;)


I wouldn't say that rvm is not beginner friendly, but I grant that it has other requirements and compilation can break down due to specific library issues on different systems. To my mind, a better solution, however, would be a compromise: (1) write a script to automate the installation of all the prerequisites (packages and specific library versions) in one step using APT, but then (2) recommend using rvm after that.

Note that this solution also compiles stuff on your machine, and in this case it uses system-wide installation locations. One advantage of rvm is that everything is done as a regular user and sandboxed in $HOME/.rvm. Easy to find and remove, if anything goes wrong or you change your mind later.

(Edited because I misread the command line.)


And if you could elaborate on those "dozens of problems" then we would be most accepting. Broad, overarching statements aren't beginner friendly.


Nothing wrong with reading the script before running it. :)


Oh I know. However we both know the majority of people who use this one-liner won't read it.


It's no different that installing RVM bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head ) or NPM curl http://npmjs.org/install.sh | sh. If you run something without knowing what it does first and brick your system there's no one to blame but yourself :)


Feel free to read the script before executing it :)


Here is a script that I wrote and have been using, should work on most Linux's and OSX to bootstrap a Rails Development environment. Also ensures that git is installed. You can run it with one command (after reading it's contents of course) as follows:

curl -O https://github.com/wayneeseguin/rvm/blob/master/contrib/boot... && source bootstrap_rails_environment

This automates installing the prerequisites across many Linux package management types and then bootstraps a Rails development environment using RVM.


A few questions:

-Why Ruby 1.8.7 and not 1.9.2?

-I've installed 1.8.7, 1.9.2 & 1.9.2-head via RVM without having libyaml-dev or libffi-dev installed (I see they're listed in `rvm notes`). Any idea what's up here?

Thanks!


Read the script, it's adjustable. Download, change your version and run. They are listed as they help 'cover all bases' as they are used by some gems that people might need.


Couldn't you just do:

wget https://github.com/joshfng/railsready/raw/master/railsready.... && bash ./railsready.sh

Besides the "1" command is really 4.

If you are setting up enough VM's that you need this you should have something like puppet installed and don't need this. If you are setting up one machine then do it by hand. Know the tools you have installed and keep track of them it will make deployment easier.


This isn't meant for huge deployments or rollouts. I use it to setup testing servers that mimic production boxes. And yea it should ready "setup rails with one line"


Or:

  wget -qO- https://github.com/joshfng/railsready/raw/master/railsready.sh | /bin/bash


Some comments & questions from someone who's worked on something similar:

-What's extglob used here for? I don't see any regexes.

-What are libffi-dev and libyaml-dev for? I assume some common gems depend on them. If so, which? (I'm just getting into Rails.)

-Git in the Maverick repos is old (1.7.1, which was released in April). Installing it from source is probably a better idea.

-You should probably use RVM to install Ruby, since its 1.9.2-head target won't require you to keep updating your script with 1.9.2's patchlevel.

-In my rails3.sh (which I should really publish), I didn't need to `gem install bundler` in order for `bundle install` to work. Probably because `rails` depends on `bundler`.

-That sudo check is neat, and I'd like to lift it; what's this script's license?


extglob is in there for future improvements. I plan to make it robust enough to accept parameters in the future.

When building Ruby the output complained about some missing deps. libffi-dev and libyaml-dev made Ruby stop complaining about them :)

Bundler is installed on the system because you don't have to install Rails on the system. You could simply put Ruby on there, install bundler then when you upload your app and run "bundle" it will pull down Rails and any gems your app depends on. Having Bundler available on the system is needed if you don't install the Rails gem system wide.

Use the script however you see fit and feel free to take from it what you like :)


Note to the wise: do not run this on a production machine unless you understand the full consequences of what the script is doing.

This is great for starting out a new machine and getting things setup, but running the update and upgrade commands without consideration of what's being updated could cause a lot of headaches if any existing sites running on the server have dependencies that are botched by the upgrade.


The README advises to run on a fresh install. Install Ubuntu, run railsready, have fun :)


Just so you guys know this script has changed a lot since I opened it up. It now has way better output formatting, the option to install Ruby from source or RVM, better stdout and stderr redirection to the install.log and even captures signals for things like ctrl-c to kill the script nicely. Thanks for all the input and I hope it's found to be useful :)


This also installs git, I updated the readme. It's a very simple script so if you guys see any ways to improve it let me know.


Nice! It'd be nicer if it used RVM, though. Might try rolling my own.

If anyone else wants to try, or is otherwise interested, I wrote a step-by-step guide to getting Rails on Ubuntu with RVM: http://news.ycombinator.com/item?id=2113525


It offers the choice now of build from source or RVM


If anyone is looking for a Debian Lenny config script (RVM, Apache, Passenger, SQLite), here it is: https://github.com/vysogot/railsready-debian-lenny

Debian has some differences.



Just a FYI I changed the script to install Ruby to /usr/local thanks to some input from a Github user. Also people are forking it and setting it up to install RVM so feel free to check those out as well!


I believe your earlier version already was installing to /usr/local. You've just made it explicit. Most configuration scripts accept a --prefix option, but default to /usr/local if you omit the option. I'm pretty sure that Ruby works that way, and it's exceedingly common. (Not that the explicitness isn't a good idea. You don't want to rely on a default without being sure.)

Follow-up: partial output of ./configure --help in a Ruby source directory:

> By default, `make install' will install all the files in `/usr/local/bin', `/usr/local/lib' etc. You can specify an installation prefix other than `/usr/local' using `--prefix', for instance `--prefix=$HOME'.


I just ran the script on Ubuntu 10.10 (64bit) but when i run "rvm list" or any other rvm command i get the following error:

/usr/local/bin/rvm: line 73: /home/myuser/.rvm/scripts/rvm: No such file or directory

Whats wrong here?


ok... i had run the script as root and was trying to run as a normal user, thats why the error....fixed now


I have updated the script to ask you if you want to build Ruby from source or install RVM (Wayne from RVM pointed me in the right direction)


I now prefer using chef-solo, which allows to tweak and add the remaining bits very quickly once you know how to use it!


Wish this was around a week ago when I did this all manually.


Agreed, now if only someone could write the one line command to robustly install couchdb on ubuntu.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: