Ruby on Rails 2.0 is Done
Jamie noted that ruby on rails 2.0 is done. In addition to upgrade and installation instructions, the article lists a number of the more interesting new features in the release which appears to be quite extensive.
← Back to Stories (view on slashdot.org)
I wonder if they still disallow proper database design by having a requirement of an autoincrementing number for the primary key.... The Rails developers could learn a thing about databases. Start here: http://en.wikipedia.org/wiki/Database_normalization . Yes I know that a serial/autoincrementing key makes it easy for the app... it makes it a lot harder for the DBA in a lot of cases.
Get your PostgreSQL here: http://www.commandprompt.com/
Fresh Meat, full of bugs, for the hackers to hack.
If you desire a secure system, do not place a large, immature body of code in the line of fire on the internet.
Evil people are out to get you.
This new antigravity feature is astounding.
I don't understand the fuss behind Ruby on Rails. Ruby is a programming language. Rails is a framework. Frameworks are a dime a dozen. Is RoR all that wonderful or are we being marketed-to?
Don't piss off The Angry Economist
I like to use whatever functionality my database engine offer, including compound keys, in ruby on rails 2.0 my databases with compound keys are still "legacy"?
Back when I was a young whippersnapper, we called that thing a relative record number!
OmniNerd.com, a site I do hobby development for, is running on Rails 2.0. We switched over from PHP this fall and site maintenance has been a dream since. Our site has even survived a few Slashdottings and Diggs since the switch, which used to murder it before. (Granted, the PHP code wasn't the best.) I've heard the "doesn't scale" debate a million times, but I'm curious if there is anyone out there who has recently moved a project from one language/framework to Ruby/Rails and whether you're glad you did or if it's been a nightmare. We're a medium-to-low traffic site with big surges every few weeks and it's worked well for us.
Mark A. McBride -- OmniNerd.com
I am like the 10th comment and it is already slashdotted!
Moderator obviously didn't read GPP.
You could make a web app without ActiveRecord. You could write your own ORM framework or whatever. The whole philosophy is to have easy to use, quick to program, etc frameworks by default. If you want to chart your own course beyond that, there is nothing holding you back. Sorta like any other framework.
And why exactly are you doing here, then?
No, they just noticed that you responded to a troll, which is exactly what you're not supposed to do, and modded you accordingly. Personally I hope you get modded into oblivion, you deserve it. It's ignorant fucks like you that keep reacting to the trolls and keeping them coming here. You deserve what you get. Maybe you should just be a man and accept that you made a mistake, if you're even capable of being a man.
While Rails might not be my first framework of choice to implement Digg in, I prefer to build sites which actually, you know, make money by solving problems for paying customers. When you do that, you don't really have to worry about scaling to infinity and beyond, but you do have to worry about expressiveness, maintainability, and time to market. (If you have too many customers relative to servers, heck, easy solution there -- the engineer in me says "just throw up more boxes", but the businessman in me says "pay somebody to worry about it so I can go back to counting my benjamins".)
I have a Rails site, my first (hopefully of many) for my small business, which plugs along at about 20 requests a second in tests. If I could saturate those 20 requests a second, I would quit my day job on the spot. Scaling? Eh, who cares.
(P.S. Day job is writing enterprise level crud apps for Japanese universities on the J2EE stack. They worry a bit about, e.g., getting hit with 8k users signing in simultaneously during class registration. You know what we do? Exactly what I'd do for a Rails app in the same situation ("don't do anything stupid like an n+1 queries loop, cache the important stuff, and buy enough hardware for the job"). Only difference in Rails is I have never wanted to poke my eye out with a spoon while writing it.
Help poke pirates in the eyepatch, arr.
Ever notice how those most "concerned" about scalability tend to have never profiled or benchmarked their own code? ... or understand why you want to scale horizontally, rather than vertically? Whenever I build services that can handle 120,000 requests/sec., they usually just end up being 99% underutilized. Everyone likes to think THEY will be the next MySpace, with no server budget apparently. I highly doubt that any who argue Rails can't scale has ever had to deal with real distributed clusters. The database cluster will have many more scalablity issues than the webservers. This is such a non-issue, I cannot believe it. If you can scale JAVA!!!... You know what I mean.
Ruby makes me wanna poke my eyes out. J2EE is the abortion of the Java universe, unfortunately.
Well said. Most people complaining about Rails scalability are simply complaining because it's the newest hype, but because they're actually concerned for legitimate reasons. "Fixing" the source of their complaints (whatever that might be) would be a huge waste of time.
Okay, all I see on here is negative comments, what ever happened to the concept of "the right tool for the job"? Ruby on Rails is a gem (excuse the pun) in the realm of bioinformatics and chemical informatics. I don't need to be concerned with "scaling" when I am building a site with a maximum of 10 users. For labs and small companies everywhere needing to create and support small or large databases, RoR is fast and easy. It also has major industry backing from the likes of IBM and Apple. It may be a bigger problem for high-volume sites, but I have found it extremely useful. I am using it on the backend (for data management - the data is exported from the database to the legacy perl system daily) for sites like http://www.drugbank.ca/ http://www.hmdb.ca/ and on the frontend for sites like http://hmdb.med.ualberta.ca/foodb/.
Perhaps a web development framework's web site should be designed in such a way that it can handle a burst of traffic from Slashdot.org and Digg.com.
Otherwise, one might think that RoR doesn't scale.
What language do you use that's more readable and expressive than Ruby?
Exactly. The fact is, Ruby is slow. Rails is slower. This is a very accurate complaint about Rails as a web framework, although in the real world it's generally not much of a problem. Somehow though, people have confused speed with scalability, and start claiming the Rails isn't scalable. In fact Rails tends to encourage or at least make fairly easy a shared-nothing architecture which allows a trivial "throw more servers at it" solution to scaling
That said, because of Rails speed, you will wind up needing to scale it sooner and larger than you would a site written in Django, say. If people want to complain about the hardware costs of running a real-world Rails site, I encourage them to do so and put up real numbers regarding the money they spend on developer time and other company expenses vs. server costs, and how Rails being so CPU-hungry is killing their bottom line. So far I've seen none of that, just uninformed whining
Or rather, since I haven't been keeping up with the development process, perhaps I should ask, is there a viable apache 2.x module for ruby that allows one to run RoR sites without relying on mongrel/other web servers?
Because, frankly, if it can't be run on apache 2.x, I (and the company I work for) won't touch it. We have already seen the scalability nightmare that RoR was, of course, so obviously we're a bit skeptical about performance optimizations. (:
Note: I have nothing against using new technology, even if it requires learning a new language, but when one has a hundreds of sites that require web server A, and a framework requires the shoehorning of web server B, well, the aforementioned framework loses its appeal.
The wise follow a damned path, for to know is to be forsaken.
RoR is just another framework now. Almost everything has caught up to it. The biggest question to ask yourself is "Do I want to program in Ruby?". If the answer is "no" then meh who cares about this.
Apparently the server's done (like Nixon, not like Dinner).
-Vendal Thornheart
Every time a RoR article hits Slashdot, there is a scale/speed question that gets raised. Realistically, there are a ton of things you can do to get performance where you want it to be. The first is to dump mongrel and use FastCGI or similar. FastCGI is 3-5x faster than mongrel. Mongrel is great for low traffic sites, and for dev, don't get me wrong.
:update => 'some_div', rather than using the rjs/render :update stuff in the controller. escape_javascript is one of the BIG performance issues in Rails, as it is basically just multiple gsubs. Designing around that is a big win. A native C escape_javascript should be a high priority for the rails/ruby devs, with optimization for the memory allocations (ie. scan the string to see how much it will grow, allocate, and just do one pass to expand).
The upper limit I see with RoR/FCGI is around 2500 requests per sec, for a 'is the server alive' ping, that simply returns 'Yes'. Typical, results are in the ~100 requests per second range with moderate db access, and rendering to xml or html. 100 requests per second was enough to handle a 24 hour media buy on the frontpage of myspace for example (100,000k unique visitors-ish).
Moving your static assets off of your server and on to S3 or another CDN is obviously a big help here, so your server/bandwidth is only taken up with requests that need/affect the db. From the example above, with the MySpace media buy, the total for that day was $20-30 I believe in bandwidth costs, and this was a site with a video mixer that had tons of images/video/mp3 and large flash objects. Obviously, mongrel shouldn't be delivering your assets locally anyway, apache/lighty etc should be.
Ultimately it comes down to design and caching when it comes to getting that top performance out of it. My 100 requests/sec wasn't using MemCached or fragment caching, and the mysql db was local. Caching in Rails is a little less than helpful for highly customized for each user sites, but there are plugins that extend it like extended_fragment_cache(ing?), that allow you to templatize things like ID's, etc. Think of say a forum topic listing, where only the topics change as you paginate. With extended fragment caching, you basically draw the page once, and then pass in a hash of the variables that replace the placeholders each time you draw a new page.
Another big thing with ajax sites, is to use link_to_remote with the
http://blog.slaingod.com
Having worked on web sites using Rails in a previous job, I have to say I love many things about the framework. Like Ruby, it gets a lot of things right, and a few things very wrong. On the whole, I found it great to work with.
Recently, a friend told me that scalability was a major concern with Rails. I am not aware of any issues with that with the sites I worked on (which are pretty high traffic), but I left the project before the sites went live, so I can't say for sure that there weren't any issues. Can anyone here chime in on whether that has ever been a problem with scalability in Rails, what the causes of the problems are, and whether Rails 2 does anything to fix them?
Please correct me if I got my facts wrong.
You're absolutely right: Rails is just a framework on top of Ruby, and neither are very special. Except in that a lot of people were still using crap coding techniques like mixed PHP and HTML, until frameworks like RoR and Django introduced them to MVC, ORMs, templates, and Unit Testing --- AND the speedups and elegance that go with those things, once you have an actual framework that does the boilerplate for you.
There's nothing special about RoR, no. But compared to tools like PHP, it's a godsend.
that one cannot simply deploy RoR on Apache. That is what remains the big advantage of perl and especially PHP-based solutions and frameworks.
There are multiple deployment options available.
The preferred option currently is multiple mongrels proxied by nginx.
But by all means, you can use apache & fast-cgi to run rails apps (even a sane php setup should use php-fastcgi with apache, not mod_php).
Comment removed based on user account deletion
Great post, parent. Wish I could mod you up!
This is my sig. There are many like it, but this one is mine.
Stored procedures can improve performance by reducing the amount of data that needs to be returned from the DB. Instead of getting a ton of data from the DB, the application can make a call and only get the data it wants. This simplifies application development and improves performance. You can think of things like MAX, MIN, etc... as stored procedures (I don't know if they are or not)
I have been at places were the DBAs have found very expensive calls to turn into stored procedures and the net result has always been an increase in performance and resulted in a simpler application.
Example:
Get all shoes
for each shoe {
get all skus for that particular shoe type (these would be different sizes/colors)
calculate the minimum and maximum price of the skus that are in stock
}
return shoe name, shoe desc, price range
(This might be a bad example, since good SQL and a good DB might be able to speed this up...but I'm not an expert)
Note: I am an (C/C++/Java) application developer, not a DBA
Comment removed based on user account deletion
Seriously.. why does Ruby on Rails get so many people so fired up? If you don't like it, don't use it. If you do like it, feel free. There's no one-size-fits-all solution, but for many people Rails comes pretty close. If you're not one of those people, there are plenty of other frameworks and languages.
Why do people in any kind of IT have such huge egos? It's counterproductive and at the end of the day, if you're making the client happy, and that makes your boss happy, you've done your job.
..use something different. I don't care what you use, or why you use it, as long as it works for you. And read this blogpost by Gilels Bowkett, which should tell you a thing or two about personal preferences. There will never be an agreement on this.
Comment removed based on user account deletion
Replying to trolls with something like that just lowers you down to their troll status. Moderation has worked admirably, this time.
What kind of dicks would you recommend then? I once tried sucking a windows dick but I wasn't satisfied with the uptime, and whenever I find an OS X dick there's already another man sucking it. I've honestly been quite satisfied with linux dicks over the years and see no immediate need to start sucking something else, but if you have any good suggestions I'm willing to listen.
I've published a guide to Rails 2.0 written by prominent Rails blogger Ryan Daigle. It's available in both English and Spanish as a DRM-free PDF.
Ruby looks interesting in a lot of ways, but the syntax is rather painful. Is there something similar with a more smalltalk like syntax?
Stupidity is like nuclear power, it can be used for good or evil. And you don't want to get any on you.
I really just prefer Python on Rails as a framework instead of Ruby.
Here's a nice article I've encountered while searching about this on Google few minutes ago :
No Rails For Python
Read and Comment at my BLOG
!!!
For all the talk about ROR's questionable scalability I'm personally interested to hear what people do consider a highly scalable framework? The company I work for uses Fusebox (we are weening our application code off Coldfusion) and are likely going to move to Zend's framework. But I'm looking at working on a personal project and would like a framework that balances accessibility (I'm a fairly new to PHP, I do systems work) with scalability.
I started doing my own research this week so I was excited to see the ROR discussion and hoped it might be enlightening. I know the BBC uses Ruby on Rails at least internally (and apparently a custom Rails-like Perl MVC externally?) and the community support for ROR is excellent (I've been reviewing documentation to help narrow my decision).
Since from what I've read the Zend Framework isn't as accessible (and the documentation seems a bit more high-level) I've been mainly reading about Ruby on Rails, CakePHP, Django, Code Igniter and most recently Symfony.
If Ruby on Rails isn't considered particularly scalable, what is?
Quack, quack.
Comment removed based on user account deletion
What an amateur worthless endeavor to build sites that don't scale? All I build is sites that can scale and use languages, databases that are known for scaling well. What do you do the day when you get flooded with visitors? You turn into Facebook or Digg? It is a fact that Ruby (the language alone... is very slow) which just adds to the misery that it doesn't scale well. I am not defending Perl or PHP, but only to give an example of the speed I'm talking about: In many well documented scientific benchmarks you can easily find all over the Internet, Ruby processes requests about twice as slow as both Perl and PHP. I use what ever is the best language for the job (Python,Perl, Java, JSP, PHP, C++, C, ASP,TCL,Awk, cold fusion...etc ) and YOU SHOULD ALWAYS use languages, architectures and technologies that are known to scale well. Otherwise, it can be very expensive to have experts such as OmniTI.com come in to FIX your site to scale. I can guarantee having worked with them before, that they will more than likely throw Ruby out the window and have to recode your app from scratch.
Referring to software as "Done"... turkeys maybe... but software?!
I know that many sites don't need to scale, and so the effort isn't worth it. You fit in that category.
I also appreciate that many sites are high traffic but largely have a read load, meaning many front ends and a bit of caching will be able to scale to thousands of requests per second. For those, Rails will also do fine, but that does not make it scalable.
But what about those few sites that DO actually get thousands of requests per second, and who have a high write load (think thousands of write queries per second). What about those sites that start small using Rails and get hugely popular? Can Rails split the database horizontally, not just add caching? This is what it means to be scalable.
A language is not inherently scalable or not scalable. There's no reason why any of Java, Ruby, PHP or Python are more scalable than the rest. Just some have better frameworks than others which make them more scalable. From everything I've heard, Rails is reasonably fast and can scale reads, but cannot scale writes, which is what matters.
My god I wish I had mod points. That's the funniest thing I've read all day.
Errata:
Meant to say 100,000 not 100,000k for unique vistors.
This was on a single dual cpu server (2 ghz I think, whatever server beach gives us).
Storing sessions in the database also helps (Rails 2.0 wants to do it client side by default, but I'm not down with that). Memcached for sessions is an obvious big win. Putting 50k files in a directory is never good, is why you don't want to use the default.
We have used multiple servers (3-4) load-balancing before to handle high load, but that was back when we were still using Mongrel, tho it is fairy easy to throw a couple of more servers at the problem.
http://blog.slaingod.com
The language isn't much use if there aren't blogs to fill the websites with content. Don't forget the millions of blogs, diaries, instant messages, home videos, & home photos that really make the current languages valuable.
No, it still requires mongrel. And mongrel still doesn't know how to fork or thread.
That's strange, I remember reading about MVC long before anyone had heard of Ruby...
"It is a good divine that follows his own instructions" - Portia, The Merchant of Venice
Comment removed based on user account deletion
Comment removed based on user account deletion
but Ruby on Rails is not - and isn't intended to be - a framework for redundant distributed DB applications.
That is correct.
Ruby on Rails is a great framework for quickly coding slow websites.
Sheer genius, funniest post I've read in ages.
The fact that no-one has modded this hilarious post up only goes to illustrate how broken Slashdot's moderation system is.
If you are building a Web Application for which you have a database simply because you need persistent storage, what you are saying makes a lot of sense. In that case, flat files would also be fine, and your storage mechanism is all about speed, and if MySQL with a SQL front-end gives you speed, great.
If your core information is the database, the opposite is true. The basic CRUD tools that Rails beautifully scaffolds aren't really OO applications, they are basic data sets. You need sets of data, extracted via one or more tables with possible filters, SQL expresses that beautifully. The core of those systems are a set of data that aren't OO. Having a teacher from a set of teachers isn't OO programming just because you've made teachers an object instead of an array of teacher objects (or structs, or whatever).
If you are doing e-commerce sites, the tools for the CRUD administration are WAY more complicated than showing the objects on the site, which may mean that different languages serve the purpose here.
Your issues with DB business logic vs. web layer business logic assumes a single application, and as you scale up, it's not so simple. While object reuse gives a reason to do so, Rails is so tied to it's build your data models with persistence with almost no code that sharing the objects doesn't get you very far. Basically, if you put the logic in Rails land than if you need to build a third party solution that can't be Rails code for whatever reason you have to share out your objects through some web interface. That's not a horrible solution, but it's of questionable value vs. just having it talk to the database. It's one extra layer to monitor and debug.
Regarding vendor lock-in, that's REALLY overstated in databases. The fact is, switching databases for major data applications is non-trivial regardless. For open source "applications" with a data store, the ability to switch from MySQL -> PostgreSQL and back is important, but that's the trivial case... no data in the system, no need for fancy integrity maintenance. If you have even a few dozen gigabytes of data in a PostgreSQL or MS SQL database you can move the data from one to the other, but you'll have to manually update logic.
Once performance matters, you need to optimize for the database that you are in, and flexibility here is over rated. Changing your database schema in a production environment is rather difficult and best to avoid, but people talk about lock-in as though they want to swap databases regularly. Even if you data environment has 200 Stored Procedures, a large number for a small-medium sized database, even if those procedures average 1 man-hours each to rewrite and debug (which is probably reasonable if most are trivial methods to get some abstraction away from the tables), you're still ONLY talking 200 man-hours, which would be 5 man weeks. Even at 10-50 man weeks, it's still less than one quarter for a small DBA team or 2-5 people. So even in the case of vendor lock-in, the rewriting of the procedures, if documented, isn't THAT big a deal, and certainly not a justification for losing ALL the advantages that they can give you.
I'm busy doing a database cleanup operation. Since everything talks directly to the DB tables, through a Rails (though poorly implemented Rails) system, migrating on the live system to something that we want is turning out the be a nightmare. The most likely course of action is going to be building and testing a live transaction that moves ALL the existing tables to another schema, creates views for them in the old schema, with PostgreSQL rules to talk to the new tables, JUST so that chunks of the database can be rebuild at one time.
Had a lot of these trivial operations been done in stored procedure functions, the migration would be pretty painless, because we'd create new tables, rewrite the sprocs to talk to the new tables, then bring the data in behind us.
The tools for the Web Apps are better, but that depends on the environment being suitabl
Albeit with a shitty syntax and a total lack of style, Ruby's semantics are very similar to LISP. It's the toy languages with toy abstractions that force specific paradigms up your ass, such as Java, what you should be bashing, fellow Knight of the Lambda Calculus.
I was about to say 13256278887989457651018865901401704640, but it appears this number is private property.
Zope is Java for Python. It turns an agile, powerful, abstract programming language into a "best-practices enterprise-grade mission-critical turnkey low TCO early ROI scalable five-nines availability professional business solution".
If you're doing Python, for good or for bad you have a wide range of frameworks available. From the lower level ones, like web.py or just using CGIs, to the Rails-like ones such as Django and TurboGears, including less common ones such as CherryPy and Quixote. There's no need to get "ENTEPRISE" in Python.
I was about to say 13256278887989457651018865901401704640, but it appears this number is private property.
Rubyonrails.org is written in PHP. If anything, this "proves" that PHP doesn't scale.
It was running on PHP until about 6 months ago. Now it's driven by Rails. So, if anything. RoR Org folding proves that Rails doesn't scale. But it actually doesn't prove that much. Maybe the Rails folks run it on an old 286?
To be honest: I think PHP has a better chance of scaling well than Ruby, because it's more mature, has more options for acceleration of server-side code and usually runs as Apache mod which gives it yet more options for runtime performance optimization. Yahoo Bookmarks (built with Symfony(PHP)) handles the load quite well. I don't know of a Rails site of that size.
Then again, if you're really interested you can get any FW to handle large loads, once you've optimized it's bottlenecks. But there PHP has another advantage: An existing bunch of mature tools for profiling and debugging, at least half of them Open Source. Which is why I prefer it over Ruby or even a more interesting Python, which has the most sane syntax of all. Imho.
We suffer more in our imagination than in reality. - Seneca
"If you have a scaling problem, you don't have a problem."
Which basically means if you've got 200 000 hits a day and your existing setup is folding under the load, you've found a glory hole on the webbernet. And you're likely to find the funding required to scale the site - even if that means moving to an entirely new technology alltogether.
We suffer more in our imagination than in reality. - Seneca
Rails is fine if you want to do another Basecamp or similar 37signals-type project. It's even better if you want to whip out an amazing number of structurally identical, common-organization Hype 2.0 apps. But just ask the folks at Twitter how well its database access scales to meet demand - it almost put them out of business. Several times. Rails is a poster child for the perils of an application-specific language being used as a general-purpose one.
A lot of things that I read obout it remind me of Python in the early days - but I don't recall Guido van Rossum being so Great Leader-ish, and there's also the difference that Python actually can be used for an amazing range of applications. Ruby can too; it's a beautiful language - until you cut its balls off with Rails.
Maybe you should give MErb a try? Merb, more ruby, less rails
I love seeing numbers like this attached to a real use case. Have you written this up somewhere, or do you have some links that identify other best practices in Rails? A thought-out, tested look at Rails best practices is sorely missing from the RoR scene.
"Things should be made as simple as possible, but no simpler" - Einstein
"web guys" are the only ones interested in rails. For the average PHP coder, rails provides structure and best practices that they are too inexperienced to use otherwise. To a "software engineer", rails is just a poorly documented, buggy, slow implimentation of the normal code structure they have been using all along. We see rails and say "so? My code was always MVC, and its much cleaner than rails, who needs rails?".
Of course, if you mean the occasional CGI, I agree with you. But some time ago, I wrote a quite large conference management system in Perl, using mod_perl. And... Well, I'm starting a complete rewrite in Rails. Why? Because, while it works, adoption was practically nonexistant. And I do want more people to use it.
It is far simpler to install a Rails application on Mongrel and redirect/proxy to it from Apache (or even to use FCGI, which I don't really like) than to set up a mod_perl app.
True story: a client had a perl script to slice and dice a lot of log file data. This is bread and butter for perl, exactly what it was meant to do. The problem was, the amount of data was growing, and the perl script was taking too long to complete.
I rewrote the perl script in Java using the exact same logic, regular expressions, everything. Just translated statement by statement from perl to Java. The Java program completed 10 times more quickly than the perl script, and that was with zero performance optimization.
Welcome to 2007.
They don't grade fathers, but if your daughter's a stripper, you fucked up. --Chris Rock
So what interface does MyDateTime implement? Can an object of type MyDateTime be passed to methods that take a native date-time as an argument?
This sort of delegation works wonderfully in Python and other languages with a duck type system, where an interface (or "protocol") is just a set of method names and the behaviors expected of them. But in languages with static typing, classes must state by name that they implement an interface, and there is often no way to state that a class happens to implement the same interface as another class unless the interface itself is given a name and other methods are aware of the interface. For example, in the Java language, java.lang.String is final so your classes can't extend it. But like several other aspects of the design of Java, this presents a roadblock because methods throughout the Java class library require exactly a java.lang.String object and will not accept an instance of any other class that implements java.lang.CharSequence.
Chinese parents.
But seriously, even if you invert the name from Chinese order (last first middle) into Western order (first middle last), you'll find that often, what corresponds to the Western "first" name is shared among siblings. See "Generation name" on Wikipedia.
Expressiveness is not the same as readability, to me, in fact it's almost antithetical to it. Perl is very "expressive" in that you can accomplish a huge amount in a very terse chunk of code, but it's highly unreadable if you do so.
In general, @-signs make me want to puke. I don't like sigil-weirdy things in front of variable names. What's wrong with just using "this" if you really need to clarify scope? Frankly, you should be writing code that *doesn't need* scope clarification so often that shortening scope-resolution to a single character seems like a good idea.
Basically, I just prefer Python or PHP aesthetically to Ruby, especially if I have to read somebody else's code. Or Java, which while often overly verbose, is very readable, though not terribly expressive. The upside of that is I've almost never seen Java source code that I couldn't pick apart pretty quickly, or a Java library that I couldn't pick up and use immediately, because the language just is not terribly dense in information content.
I've only given Ruby a cursory look-over, so I might feel differently if I spent some time with it, but it just doesn't "look" right to me.
Comment removed based on user account deletion