
Modern Ruby Development - davesims
http://ascarter.net/2011/09/25/modern-ruby-development.html
======
sunkencity
Interesting guide, one thing I find lacking in ruby is longevity in projects.
Too much cool new stuff, why not just work out the bugs in the existing
projects instead? Of course it's easier to write a new half-assed
implementation than getting the hard last percent done.

Interesting that he roots for homebrew over macports and rbenv over rvm while
at the same time voting for capistrano. Of those 3 projects I find macports
and rvm to do what I need from them perfectly and capistrano to be really
lacking in both performance and complexity.

~~~
angelbob
Capistrano is lacking, but has fewer good alternatives. What would you
recommend over it?

~~~
technomancy
Back when I was doing Ruby I was always fond of Vlad the Deployer:
<http://rubyhitsquad.com/Vlad_the_Deployer.html> No idea if it's aged well.

~~~
angelbob
Vlad's not bad. There's a similar project called Fezzik that I use extensively
for non-Rails projects. Neither is as good as Capistrano _if_ you're deploying
a Rails project.

------
mrinterweb
Personally, I don't understand the hype of rubyenv. I really love rvm. I'm not
sure why the author called rvm a "mess of bash scripts". I guess because rvm
has a lot of features? If I did not care for gemsets and all of the other
niceties that rvm has, I guess I would be on the market for another ruby
manager. The fact that the author of this article was rubbed the wrong way by
Wayne and rvm, rubbed me the wrong way.

~~~
rsanheim
He probably called it a "mess of bash scripts" because, uh, it is a mess of
bash scripts. Have you looked at the implementation? RVM is amazing in the
functionality it has, don't get me wrong, but it hacks into your shell in some
nasty ways and when things go wrong good luck figuring out why without diving
deep into the underlying bash.

~~~
jc123
When you have a new box, or when things go wrong, is probably the time to try
out "rvm implode" and try rbenv. Reinstalling rubies takes some time and it
looks like there might be some time required to configure/fix existing apps to
use rbenv?

------
mzatko
Sorry guys, but this post is silly. What is modern on "ruby development" on
mac? Why use zsh, xcode? "ruby development" doesn't mean you are doing rails.

~~~
heimidal
There's nothing silly about a developer sharing his preferred development
configuration.

Also, you glossed over the fact that he's not installing Xcode so that he can
use its IDE; rather, he's installing to get LLVM/GCC easily. He makes it clear
that ZSH is his preference and that he recommends it.

The vast majority of developers looking for a guide to set up their machine
for Ruby development will be Rails developers. Denying that is silly.

~~~
mzatko
You're right, there's nothing bad on sharing someone's preferred config.

Calling that "modern ruby development" is silly.

~~~
diminish
i m moved to gedit and redcar from netbeans on ubuntu for any ruby
development. on ubuntu does anyone have any recommendations?

~~~
amirhhz
Try RubyMine from JetBrains, a very slick product, and worth paying for (I
don't pay for much but JetBrains IDEs I make an exception for).

In true HN tradition, I must urge you to try Vim. I found this very helpful
when I first start: [http://yannesposito.com/Scratch/en/blog/Learn-Vim-
Progressiv...](http://yannesposito.com/Scratch/en/blog/Learn-Vim-
Progressively/)

~~~
hello_moto
Sometime I don't understand people that use Vim for everything.

I used Vim casually so I'm not an expert. I understand that it'll take a while
to master it. But compare to netbeans where you can navigate Ruby code quite
fast (shortcut to method implementation, class implementation, project browse,
auto-suggest, etc), why would I want to use Vim when I have to find the proper
plugins (not just one, but a few) before I can be productive (assuming they
can do what I mentioned above).

~~~
drfugly
As a netbeans user but vim fanatic. I really like netbeans for project
management, but vim is awesome for just manipulating text tons faster than you
can with netbeans. Try the jVi plugin for netbeans to get that text editing
power of vim with the project management features of netbeans.

~~~
hello_moto
In my line of duty, most of the time spent in reading code, not writing code.

Even when we were building version 1.0 of the software, there aren't too many
text editing as opposed to navigating the code tree.

Isn't dynamic/scripting languages like Ruby and Python produced way less code
than Java? (Hence, less typing again).

So this is why I don't quite get the group of people that swear by vim.

------
stephencelis

      If you want to set your login shell to zsh, go to System 
      Preferences -> Users and Groups. Right-click on your user 
      account and select Advanced Options. Change the login shell 
      dropdown to /bin/zsh.
    

You're better off using `chsh -s /bin/zsh` (or, better yet, `brew install
zsh`, append `/usr/local/bin/zsh` to `/etc/shells`, and use that, instead).

------
Groxx
Software that lacks a good uninstaller is always suspect, to me. It makes me
smile to know that this is all that's necessary to remove RVM:

    
    
      > rvm implode
    

How's rbenv for uninstallation? I'm familiar-enough with rvm that I know I can
restore absolutely everything from scratch with a couple config options and a
while for compilation - I'm more than happy to spend that to experiment as
long as rbenv has a similar panic-button.

~~~
JonnieCache
You just delete your clone of the git repo and remove the oneliner from your
.bash_profile

------
skrebbel
This article tells me that i'm not modern because I don't use a Mac, I don't
like zsh, I prefer Mercurial, and so on.

Why isn't it titled "My brand new Rails development stack on Mac"?

------
saraid216
I thought this post would be about Ruby, but instead it's about Rails. Sort
of. :(

~~~
kristopolous
Alright, let's do ruby then. I use vim with Ri, Rdoc, and ack-grep plugins
(<https://github.com/kristopolous/vimbuild>) and then use irb with a bunch of
extensions ([http://stackoverflow.com/questions/2952793/anything-like-
bpy...](http://stackoverflow.com/questions/2952793/anything-like-bpython-for-
ruby)) but there is nothing out there that makes my life phenomenally easy yet
(for instance, some really awesome code navigation tool). zsh has built-in
autocomplete for ri; try running zsh then do "ri <tab>"
(<http://qaa.ath.cx/ri.png>); that ought to win you to at least having it
installed. And yes, you can do "ri XXX#<tab>" for the second level!
(<http://qaa.ath.cx/ri-kernel.png>)

For the record, I do straight ruby; I don't even know how to deploy rails.

~~~
crazydiamond
How are you getting this completion from ri ? I use zsh, and the rvm's ri
(.rvm/rubies/ruby-1.9.2-head/bin/ri) gives _no_ completion at all (ri 2.5.8).

However, /usr/bin/ri (ri v1.0.1 - 20041108) does give completion but different
from your list. ri K<tab> gives Classes and methods (e.g. Kconv\\#guess) and
not just classes. So it's a huge list. Thx.

------
BornInTheUSSR
It's always interesting to see differences in people's 'base' stacks. Where
feasible I like to have the environment on my dev machine reflect production
as closely as possible so I would go with Passenger over Pow, but this is a
great little guide.

~~~
Pewpewarrows
That's what I use Vagrant for: attempting to mimic production machines as
close as possible. But that only happens as I'm testing before a release.
Otherwise I use the easiest / best tool for the OS and machine that I'm
developing on.

------
Xylakant
I actually miss vagrant/virtualbox in the stack. Why not use a virtual dev
environment for every project you're working on. It seems silly to me to
install all required components for each and every project on my dev machine,
possibly with different/conflicting versions (think: multiple pg server
versions etc.) instead of having a self contained environment for every
project.

------
gurkendoktor
I thought the ad-hominem-ish bit about rvm was disappointing. The Ruby
landscape is a weird place where each project belongs to one and only one
name. Instead of improving on projects, people prefer to invent their own, and
then the drama race begins. Open your Gemfile and try to find a gem with a
truck factor != 1.

I think it is natural and understandable because there are many Ruby
freelancers around who desire to build a brand around their name. But the
"competition" between rbenv and rvm was not constructive at all so far. It
would be much more helpful if there was one .rubyversion file that both would
respect, for starters.

------
capkutay
Interesting...still weighing whether I want to familiarise myself with
Ruby/RoR or if I should continue to enhance my python skills and learn
Django...I think the fact that more people are talking about Ruby development
may sway me towards RoR

~~~
Dalves
Depends, if I look at my local job listings where there's one ruby listing for
every 10 python ones I'd say different but I'll admit that that ratio is
abnormally high but indicates that the same trend governs most places bar
Chicago. However, if I look at HN submissions, it's almost the other way
around. Given that I've worked in three countries in the last 5 years and
noticed the same trend in all of them, I am starting to think that Ruby
developers are simply more evangelist.

------
semanticart
you're probably better off not installing all of x-code when all you want is
GCC. Try this instead: <https://github.com/kennethreitz/osx-gcc-installer>

------
uptown
Any recommendations for a good beginner ruby/rails book? Coming from a PHP
world, but want to learn something new.

~~~
telemachos
For tutorial/walkthrough with lots of example small scripts _Beginning Ruby,
2nd ed_ by Peter Cooper. For a straight reference _The Ruby Programming
Language_ by David Flanagan and Yukihiro Matsumoto. A middle-ground (tutorial
first half; reference second half): _Programming Ruby 1.9_ (aka, the Pickaxe
Book) by Dave Thomas.

A great second book (maybe even first if you're comfortable enough learning
basic syntax on your own) is _Eloquent Ruby_ by Russ Olsen.

------
blantonl
_A huge flaw of Mac OS X is the lack of a proper package manager._

Mac OS X does provide a package manager - the App Store.

~~~
crazydiamond
I've been using macports for ages, nothing wrong with it. Okay, it does not
check to see the stock installs of OSX, and installs its own ruby, perl,
python etc. Apart from that it's been very reliable.

~~~
Groxx
My main problem with macports has been that it occasionally does not play
nicely with manual source-installs, or any other package manager. And damn
near everything needs sudo.

Everything I've needed has been available in homebrew, and more up-to-date and
better isolated and hasn't collided with anything yet. I haven't used it as
long as I've used macports, but so far it has been a _far_ more pleasant
experience. And _incomparably_ faster - I swear, macports has a sleep() call
in every operation. Very much recommended if you haven't tried it, and it
cleans up nicely too - you just delete its single folder.

------
jimm

        source "http://rubygems.org"

should be

    
    
        gem source "http://rubygems.org"

~~~
invisiblefunnel
The bundler docs show the former: <http://gembundler.com/gemfile.html>

