Rails vs Grails

Hi, are there any really unbiased comparisons between rails and
grails, and to which each framework is better suited for?

I'm coming from a java background, but I am not against using a non
java solution if it's actually better. I am a little concerned with
performance though. The site needs to really work well with 200,000
visits a day, and that's going to grow.

I started to use grails, and it's all well and good, but there's some
things i don't like about it.

1) The tests take forever to run

2) IntelliJ IDEA reports integration tests as passing and displays a
green light, even though they fail. The test output stinks, so running
them on the command line and checking an html test results file is the
only thing you can do. This is awful.

3) Apparently saving a domain class that violates constraints does not
throw an exception when testing. I can understand for production
saves, but for tests?! It is so important to get good feedback rather
than silence failures that do nothing. Maybe over time, I will just
"know", but I can hardly see how silent failures are more productive.
I spent 30-45 minutes wondering why the test was failing because it
looked totally fine and mirrored the examples.

4) It has slow code->browser cycles.. and sometimes you gotta restart
tomcat anyway because the class loading blows up. It happens a lot
more than they say it does.

The one thing I have against rails/ruby is that I hate their method
names. Underscores are confusing to me because they sort of look like
operators. Maybe can get used to this, but I hate methods like to_s
for toString. That stuff is going to drive me nuts.

Anyway, our site has to support a lot of traffic, requires a lot of
cron-like stuff built into the application, and we'll need to support
relational databases and something like cassandra.

Suggestions?

Hi, are there any really unbiased comparisons between rails and
grails, and to which each framework is better suited for?

Rails is better suited to people that know Ruby but not Java.
Grails is better suited to people that know Java but not Ruby.

I started to use grails, and it's all well and good, but there's some
things i don't like about it.

<snipped a bunch of off topic rambling>

I'd suggest taking these issues up on a Grails mailing-list might get
you some constructive ideas as to how to overcome them.

The one thing I have against rails/ruby is that I hate their method
names. Underscores are confusing to me because they sort of look like
operators. Maybe can get used to this, but I hate methods like to_s
for toString. That stuff is going to drive me nuts.

Personal preference certainly plays a big part in any platform choice;
but there's hardly a lot our input can do about whether you "like"
underscores or not.

Anyway, our site has to support a lot of traffic, requires a lot of
cron-like stuff built into the application, and we'll need to support
relational databases and something like cassandra.

You can write poor-performing or well-performing applications in either.

Unfortunately for your quest to make a decision, both Rails and Grails
support relational databases and "things like cassandra" (as well as
cassandra specifically), so that's not edging either of them toward a
preference.

Michael Pavling wrote:

Hi, are there any really unbiased comparisons between rails and
grails, and to which each framework is better suited for?

Rails is better suited to people that know Ruby but not Java.
Grails is better suited to people that know Java but not Ruby.

The information I have come across from people who know both frameworks
and languages well is that Rails is better designed and easier to work
with than Grails.

My former boss wrote probably the largest Groovy project in the history
of the language. He later switched his business over to being a Rails
consultancy. I think it's significant that with all his Groovy
experience, he didn't choose Grails.

I started to use grails, and it's all well and good, but there's some
things i don't like about it.

<snipped a bunch of off topic rambling>

I'd suggest taking these issues up on a Grails mailing-list might get
you some constructive ideas as to how to overcome them

Yes, indeed.

The one thing I have against rails/ruby is that I hate their method
names. Underscores are confusing to me because they sort of look like
operators. Maybe can get used to this, but I hate methods like to_s
for toString. That stuff is going to drive me nuts.

Personal preference certainly plays a big part in any platform choice;
but there's hardly a lot our input can do about whether you "like"
underscores or not.

To the OP: you think an underscore looks like an *operator*? What
operator does it look like? What are you in danger of confusing it
with?

Personally, I'd rather use underscores. Their width looks more like
spaces and lets me parse words more quickly. I find that
my_variable_name reads almost like spaced text, whereas myVariableName
looks clunky, computerish, and undifferentiated. (Larry Wall basically
said the same thing in one of his Perl style guides, FWIW.)

Anyway, our site has to support a lot of traffic, requires a lot of
cron-like stuff built into the application, and we'll need to support
relational databases and something like cassandra.

You can write poor-performing or well-performing applications in either.

Unfortunately for your quest to make a decision, both Rails and Grails
support relational databases and "things like cassandra" (as well as
cassandra specifically), so that's not edging either of them toward a
preference.

Best,

The decision could have been based solely on business grounds, not technical grounds.

People have heard of Rails, there is ‘brand awareness’ for Rails, so you more likely to be able to get clients. Or at least it would be easier convincing them that Rails is what they want rather than something called Grails that no one has heard of. Even the dimmest PHB has heard of Rails and that it is HOT

Not saying that there aren’t technical reasons to reject Grails but on purely business grounds Rails is king. So your former bosses decision might not be a reflection as to the technical merits of Grails.

The information I have come across from people who know both frameworks
and languages well is that Rails is better designed and easier to work
with than Grails.

My former boss wrote probably the largest Groovy project in the history
of the language. He later switched his business over to being a Rails
consultancy. I think it's significant that with all his Groovy
experience, he didn't choose Grails.

That is interesting.

To the OP: you think an underscore looks like an *operator*? What
operator does it look like? What are you in danger of confusing it
with?

Part of the problem for me is that I really can't see well. this-that
and this_that kind of look the same to me.

Also, I do a lot of scala recently. That language uses _ as a
wildcard, so using _ in variable names (even though that isn't very
idiomatic of the platform) would be incredibly confusing.

Anyway, I can probably live with the underscores even though I've been
typing camelCase for 10+ years. The API is the real worry. I don't
like how many of the methods/functions are named. I think, was it
really so hard to call to_s to_string? When I type in an IDE, I
literally type "t" and press ctrl-space and select the method I want.
I can ctrl-shift-space and it'll just guess and type the rest of it
for me.

Personally, I'd rather use underscores. Their width looks more like
spaces and lets me parse words more quickly. I find that
my_variable_name reads almost like spaced text, whereas myVariableName
looks clunky, computerish, and undifferentiated. (Larry Wall basically
said the same thing in one of his Perl style guides, FWIW.)

Part of this is experience. If you've been using perl, php, etc., then
the underscores look okay. If you haven't, then they don't.
Consistency is the key. That's also my problem with them. In PHP, you
never know if it's "teardown" or "tear_down". There are so many
problems with the API in PHP that it just left a massive sour taste in
my mouth. Of course, the same problem happens with camel case, but the
ide support for java has been much better than php, so it was less of
a problem :wink:

The decision could have been based solely on business grounds, not technical
grounds.

People have heard of Rails, there is 'brand awareness' for Rails, so you
more likely to be able to get clients. Or at least it would be easier
convincing them that Rails is what they want rather than something called
Grails that no one has heard of. Even the dimmest PHB has heard of Rails and
that it is *HOT*

Not saying that there aren't technical reasons to reject Grails but on
purely business grounds Rails is king. So your former bosses decision might
not be a reflection as to the technical merits of Grails.

When it comes to performance, how is Rails? Like if I were to design a
raw Spring/Hibernate app, which I'm not going to... but let's say I
did. What is the comparative performance with something like that,
even though it probably isn't a fair comparison.

Also, how well to do the tests run? Imagine a system with a few
thousand unit/integration tests. How long will it take to get all the
tests to run?

Is it hard to build cron-like events in rails/ruby? Can I do that
inside of my app where it's hosted? In the java world, we have quartz
to do this (and probably some others).

Also, is it a good idea to use rails 3.0 even if it's in beta if the
app is not going to production for awhile?

Thanks!

egervari wrote:

purely business grounds Rails is king. So your former bosses decision might
not be a reflection as to the technical merits of Grails.

When it comes to performance, how is Rails? Like if I were to design a
raw Spring/Hibernate app, which I'm not going to... but let's say I
did. What is the comparative performance with something like that,
even though it probably isn't a fair comparison.

Rails can perform quite well. Hulu and Ravelry are both known for being
high-traffic Rails sites with excellent performance.

Also, how well to do the tests run? Imagine a system with a few
thousand unit/integration tests. How long will it take to get all the
tests to run?

It depends. On lots of things.

Is it hard to build cron-like events in rails/ruby? Can I do that
inside of my app where it's hosted? In the java world, we have quartz
to do this (and probably some others).

I believe there's a gem for this, though I've never tried to do it.

Also, is it a good idea to use rails 3.0 even if it's in beta if the
app is not going to production for awhile?

I wouldn't quite yet, particularly if you're not familiar with Rails or
Ruby.

Thanks!

Best,

How long has the Rails community waited to hear the second half of that statement!

Best Regards,
Mohit.
20/5/2010 | 8:54 PM.

When it comes to performance, how is Rails? Like if I were to design a

raw Spring/Hibernate app, which I’m not going to… but let’s say I

did. What is the comparative performance with something like that,

even though it probably isn’t a fair comparison.

Sorry I do not have sufficient experience to help you with this.

Also, how well to do the tests run? Imagine a system with a few

thousand unit/integration tests. How long will it take to get all the

tests to run?

This depends on your tests. A massive amount of badly written tests are going to take a long time to run regardless of the language. The choice of language is not going to mitigate bad design or coding.

Is it hard to build cron-like events in rails/ruby? Can I do that

inside of my app where it’s hosted? In the java world, we have quartz

to do this (and probably some others).

We (where I work) are a Linux shop and we use cron extensively to push and pull data to keep our systems up to date.

Here is the plugin we use http://github.com/PeterHickman/Crons-for-Rails there is also some bits and pieces on my blog if it might help ( http://peter-hickman.blogspot.com/ )

There are other tools but this deploys the crons with the site using capistrano and installs them all in one go. Works for us.

Also, is it a good idea to use rails 3.0 even if it’s in beta if the

app is not going to production for awhile?

To be honest we haven’t even looked at 3 yet. I’m pretty sure that we have at least one 2.0.X site still running. I would base your decisions on what is available now, it’s not like all the Rails 2.X code is going to suddenly stop working the day 3 goes live.

Hi,

Hi, are there any really unbiased comparisons between rails and
grails, and to which each framework is better suited for?

Having worked with both extensively, though a lot more with Grails as
of lately, I dare say that it all boils down to a matter of personal
taste. There is no way to objectively say which one's better.

Each has its own advantages and gotchas. There are things which are
very easy with Grails (as in 'install plugin and your done') like
implementing login facilities or running jobs. However, there are also
things that are equally easy with Rails which are not so easy with
Grails.

At my company we mostly use Grails and for very good reasons but there
sure are just as many good reasons for using Rails.

1) The tests take forever to run

This is a well-known problem. The cause for this is JVM startup time.
For the time being Grails offers an interactive mode that starts a JVM
and allows you to run commands like test-app without incurring a JVM
startup penalty for each run. Besides, the Grails team is also working
on improving testing in various ways for the next major release.

4) It has slow code->browser cycles.. and sometimes you gotta restart
tomcat anyway because the class loading blows up. It happens a lot
more than they say it does.

This used to be a problem with 1.0.x and 1.1.x but shouldn't really
occur anymore nowadays. At least it doesn't for us and we do a lot of
Grails development

You might want to try to change the font in your editor to one that is
designed to be easy to differentiate similar characters.
Personally, I use ProFont Tweaked [1], but Sheldon is good too.

[1] http://www.tobias-jung.de/seekingprofont/
     There is a "linux" version, but I just have the Windows TFF
installed in Ubuntu

TTF.... silly fingers :-/

I'm on the same situation, I know both Java and Ruby, and I am looking
for a language that I could use both for administration scripting and
web sites,

I tried a little bit both of Grails and Rails

Rails is easer to use, but it looks like LOTS of plugins/gems are no
more compatibles with the lasts versions of Ruby (1.9.2) and Rails
(3.0.1) (ex: the Qt4 binding for ruby), but I hope this will change with
time :slight_smile:
Another thing that I don't really like about Rails is that I don't feel
like if I had control on the web stack, most of things are "magic" and I
don't always understand what it does on the background...
But rails has a perfect caching system and clustering way (memcached!),
it's also very easy to profile and debug.
And the most important: There is a HUGE community !

Grails also has some advantages, it's template engine if perfect (GSP)
(I like it really more than ERB, tag based templates are more clean),
and it includes ACEGI (the perfect authentication engine ;p) but the
caching system is really really poor (if not inexistent) and it's harder
to cluster (Terracotta), there is almost nobody on the IRC channel
(nobody speaks or ask questions) and the most important thing: GRAILS
LOVES RAM! (~500MB of RES memory for a simple blank web site
deployment..),
another thing non related to grails, for system scripting, the full
interpreter is really slow to start, and grails don't have access to low
level API like symlinks or chmod things)..
About Java itself, it have the advantages to be the language to use to
extends many big softwares like Zimbra or Alfresco

What do you think about that ?
Thank you

egervari wrote in post #913624:

Anyway, our site has to support a lot of traffic, requires a lot of
cron-like stuff built into the application, and we'll need to support
relational databases and something like cassandra.

Suggestions?

Here's my one suggestion. Go try Rails for yourself. If you have
specific questions that you need help with then ask them here.

Asking abstract questions like these on a forum dedicated to Rails is
going to get you nowhere. It's pointless really. All that will ever
happen is exactly what you see here. It starts a firestorm of defensive
responses and un-constructive conversation that just ends up wasting
everyone's time.