Slashdot Log In
Ruby on Rails 1.0 Released
Posted by
ScuttleMonkey
on Tue Dec 13, 2005 09:16 PM
from the web-deployment-made-easy dept.
from the web-deployment-made-easy dept.
Simon (S2) writes "Ruby on Rails 1.0 has been released. From the announcement: 'Rails 1.0 is mostly about making all the work we've been doing solid. So it's not packed with new features over 0.14.x, but has spit, polish, and long nights applied to iron out kinks and ensure that it
works mostly right, most of the time, for most of the people.' " The Ruby on Rails website has also been given a new look.
Related Stories
[+]
Apple Publishes Ruby On Rails Tutorial 228 comments
bonch writes "Apple has noticed the high amount of Mac usage in the Ruby on Rails community and has posted an illustrated Ruby on Rails tutorial. The document goes into more concise detail in getting new users up to speed, from database schema to moving beyond scaffolding, all done with the favored Rails editor, Textmate."
[+]
Exploring Active Record 266 comments
An anonymous reader writes "Everyone knows that no programming language is a perfect fit for every job. This article launches a 'new series by Bruce Tate that looks at ways other languages solve major problems and what those solutions mean to Java developers. He first explores Active Record, the persistence engine behind Ruby on Rails.'"
[+]
Technology: Ruby On Rails Goes 1.1 255 comments
MrByte420 writes "The Ruby On Rails team today released version 1.1 of the web framework. From the announcement: 'Rails 1.1 boasts more than 500 fixes, tweaks, and features from more than 100 contributors. Most of the updates just make everyday life a little smoother, a little rounder, and a little more joyful.' New features were examined back in February at Scottraymond.net and include Javascript/AJAX integration, enhancements to active record, and enhanced testing suites. Not to mention upgrading this time promises to be a piece of cake."
This discussion has been archived.
No new comments can be posted.
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
Commercial equivalent is...? (Score:4, Interesting)
Re:Commercial equivalent is...? (Score:5, Informative)
Parent
Re:Commercial equivalent is...? (Score:4, Informative)
Coldfusion is a language of itself [albeit a simple one] that runs on top of a J2EE engine called Jrun...
Parent
Re:Commercial equivalent is...? (Score:3, Informative)
mod_ruby is apparently a very limited way of embedding ruby code inside a web page, a la mod_php and the PHP language. Ruby on Rails works through the use of a CGI (or, preferably, a fast_cgi) script called the Dispatcher, which is (unsurprisingly) written in Ruby. The dispatcher handles the translation of requests and URIs to the code you've written using Ruby and the Rails framework.
It would be more accurate to say that Ruby is to
Re:Mod_python has easier syntax (Score:5, Informative)
Where did you get this impression? Maybe because you saw some regular expressions in Ruby? Ruby syntax is much, much clearer than Perl.
Take a look here [rubyist.net]
Parent
Re:Commercial equivalent is...? (Score:4, Informative)
ROR isn't as mature as j2ee struts+hibernate but it will be soon. ROR has tons of potential.
Parent
It just works... mostly (Score:5, Interesting)
Er (Score:5, Interesting)
Re:Er (Score:5, Informative)
Parent
Ahem... (Score:3, Insightful)
I guess I just don't get it. What's the excitement?
You can't abstract too far away from the database when you get into big, complex tables and want to keep performance up. I've seen a 30-second query reduced to 50 milliseconds merely by changing the order of join in a large, complex, 12-table
Re:Er (Score:3, Funny)
Or you could just go to the ruby-on-rails website instead of asking for some random's opinion on slashdot.
Watch this video (Score:5, Informative)
Parent
Re:Watch this video (Score:4, Interesting)
Parent
That is one sexy video. (Score:5, Informative)
About 5 years ago, if you wanted to make a blog, you'd sit down and design a database schema. You'd design a controller that would have certain actions. You'd write a bunch of templates that would have variable locations. You'd extend the controller to use these templates from the db to make views. You'd write pages which allowed editing of these values. You'd write code for sanity checking. You'd write unit tests. You'd do everything over again that you'd done before.
Slashcode, Scoop, you name it -- they were all written through the same ideas.
Ruby on Rails makes all the redundant parts go away. In the video (which I just watched, and finally gives me a compelling reason to learn and use Ruby), the person sits down and generates a basic controller for their blog. They then show that the basic templates generated will show text. It takes another 5 minutes to define a db called posts and generate a default action for it. The code is smart enough to just directly make the things like title and body editable widgets on the page. 5 minutes to have posted blogs!
Then the video takes 5 minutes to extend this by writing about 15 lines of code. This has a big effect: the listing of posts is abstracted out into a block that can be included in any page. The ordering is reversed. The title attribute is made a required field.
But what good is a blog without comments? In the final 5 minutes, the author quickly adds a comment table, generates a comment controller, says that posts own comments, sticks in 3 lines of code in the post view segment which do a foreach associated comment, display, and then adds a page to edit comments. They also (at the same time) show us the basics of the unit-testing framework you get "for free" (the basic test is return true, but he changed it to test if the comment post code worked with another 4 lines of code).
The entire thing took 15 minutes to write and had 58 lines of code. When the db schema changed, the code adapted -- the programmer did not have to rewrite the code. When the programmer wanted to change anything, the code would quickly bend itself to the task.
I dare say it's the sexiest thing I've seen yet. If they ever release a version 2 that allows for simple Javascript on the client for AJAX interfaces, there will be only 1 game in town for web development!
I'm not inexperienced in web design. I have written my own stuff to test ideas out, as well as participated in Scoop's development to a degree. Recently I've been playing with Drupal because all the basics are setup with it, and you can just extend it with modules. I can honestly say that while it took me an hour to setup Drupal (and another hour to get it completely to how I liked it) it a test config, I could probably replicate the base distribution plus the modules I use in Ruby on Rails within a day -- maybe 2, if I'm slow. It's that effective!
Parent
Re:Er (Score:3, Informative)
Excuse me for sounding dumb, but what is Ruby on Rails? I've heard a lot about it recently, but haven't the slightest clue what it is. A little bit of background would be most appreciated.
Ruby on Rails is a web development framework. It provides a library for Ruby so it can be used with web development allowing it to be used in applications normally reserved for other languages.
Slashdot's big on this kind of stuff today. First the Java/everything else flamewar and now this (admittedly no flamewar.)
convention over configuration (Score:5, Interesting)
The MVC triad in Rails uses the ActiveRecord class for the model part. ActiveRecord is an ORM (Object Relational Mapping) class that follows a few clever rules about doing the mapping, so most of the time you don't have to repeat your mapping multiple times. If you have a "User" class, it knows to look for a table in the db called "users", and assumes the primary key is an integer named "id". A foreign key to an account record is assumed to be called "account_id". The creation time of a record is assumed to be a datetime named "created_at". All common elements have reasonable defaults, so when you are working on your app, you don't need to spend a lot of time mucking about with config files to specify stuff that is just so fracking obvious that it is a waste of your time to type it.
Rails is not all things to all programmers, but it has certainly hit the sweet spot for a huge class of web applications - database backed interactive sites. The Rails design is good for probably 90% of the sites that I use most.
As for coder jollies, well, it's been a while since I enjoyed programming. With Rails I've regained my enjoyment for programming enough that I'm considering doing that for the main part of my work again.
Parent
When? (Score:3, Interesting)
I am working in tech division of a financial firm, and I put question to our big app dev group if anybody had worked on RoR for a project - and most people had no idea what I was talking about.
Please note that right now almost everybody in the firm uses java/j2ee - for everything - even for batch processing which can be easily done with simple perl scripts!
Re:When? (Score:4, Informative)
If you have to use Java, a copy-cat framework for Java is Trails [java.net]. The linked articles make it look pretty impressive.
Another relatively unknown java framework I've flirted with very recently is Stripes [mc4j.org]. It's claim to fame is that its configuration is annotation based. Dev consists of the view and action, no worrying about an xml file to sync between the two.
Parent
One word (Score:5, Insightful)
Next time there is a project to X, do a prototype of some of the functions in RoR, ostensibly so you can get it done in a couple of days and you can use it to figure out requirements. After playing with a couple of days, sit back and watch as the app dev group spends a month laying the keel for their "enterprise" class implementation. Continue to use your prototype to demonstrate new requirements (they always come up). If, after three or four months, the app dev group doesn't appear close to being able to deliever any business value, then one question that management should raise is what, exactly, is the property of "enterprise" that justifies the difference in effort between rails and whatever they're using. Then determine if it could indeed be put in the RoR prototype. If so, you're in. If not, you've contributed to requirements understanding and live to fight another day.
Parent
compatibility (Score:4, Interesting)
A better solution than PHP. (Score:3, Interesting)
PHP's bad reputation with regards to its security is, unfortunately, harming the open source community. Managers who are considering switching to open source solutions are hearing about the security flaws in PHP, and mistakenly thinking that Apache, MySQL and Linux are insecure (due to the popular 'LAMP' association). Of course, that isn't the case by a long shot.
Regardless of what people switch to, the main focus needs to be on moving away from PHP. Ruby on Rails provides a rapidly maturing alternative for building all sorts of web sites.
A rather large problem (Score:3, Informative)
You speak of momentum. (Score:5, Insightful)
I've been around it for decades. I remember when Honeywell and Data General had "momentum". I'd be surprised if you've ever even seen a picture of their hardware.
A bit later there was CP/M. And Apple. Apple had much "momentum" in the 1980s, only to almost hit rock bottom. At least they've been able to pick themselves up again.
There was even talk this morning about Java losing its "momentum".
Ruby on Rails could very well overtake PHP quite quickly.
While some onus does rest on developers to develop quality code, that does not mean that the language and any implementations should not take steps to limit the ability of the programmer to write faulty code.
That holds especially true for languages that are used in hostile environments, such as the WWW. Considering that Web development is touted as PHP's strong point, one would think it would have excellent security. Of course, we know from experience that that is not the case.
Ruby won't necessarily make your code perfect. But Ruby, along with sound development techniques (unit testing, for example), will result in very secure applications. The use of PHP, on the other hand, is basically an invitation for security issues. It is not a well designed language, and it is not well implemented.
Parent
Commercial/Enterprise use? (Score:4, Interesting)
I have yet to personally see RoR in either situation and I don't know anyone who has - I'm not knocking RoR, just curious how it's actually being used.
Re:Commercial/Enterprise use? (Score:5, Informative)
http://www.rubyonrails.org/applications [rubyonrails.org]
Parent
Re:Commercial/Enterprise use? (Score:3, Informative)
I personally don't, but BaseCamp is written with RoR.. it's pretty high volume commercial site.
Penny Arcade is now on RoR.
New Look? (Score:5, Funny)
Would that be the "Service Unable: Damn You Slashdot" look?
Perl people, check out Catalyst (Score:5, Informative)
http://catalyst.perl.org/ [perl.org]
It's very nice so far, especially the controller portion. There's lots of addons and plugins for it, all of which are entirely optional. It's actually very open-ended and easy to extend.
I use the controller classes extensively, but write my own model, view, and support classes. Catalyst culture seems to encourage Class::DBI parentage as a base model class, but it's simple to roll your own (I hate CDBI, so I based mine on Ima::DBI instead). Your classes can work independently of Catalyst... it imposes no restrictions or inheritance constraints on you. Worth checking out.
Re:Perl people, check out Catalyst (Score:3, Interesting)
Now, that's not to say that Perl 6 may not encounter some degree of success in the future. Perl will most likely always have its users.
What the Perl 6 community might want to focus on now is developing the technology that will come after Ruby on Rails. Getting a step ahead in the web de
Give ruby a quick try first (Score:5, Informative)
Also a great example of Ajaxy goodness, not to buzzword it too much. It's written by the affluent and creative why. Check out his neat-o blog too: http://redhanded.hobix.com/ [hobix.com]
-mix
Re:Give ruby a quick try first (Score:3, Insightful)
That web page is neat but it's a perfect example of why I'm starting to dislike all this "AJAX" stuff. Nowhere in that tutorial is there any navigation to help me go back if I want to review something again. I hit the back button and it brought me back to your comment, not where I expected to be. I don't know how other people feel but in my opinion breaking the user's back button is the worst web UI mistake that you can
Re:Give ruby a quick try first (Score:3, Informative)
IIRC, there's a tutorial out there somewhere telling developers how to make Ajax-happy applications that don't break the BACK button and are bookmarkable.
Re:Give ruby a quick try first (Score:3, Insightful)
Why rails annoys me... (Score:5, Interesting)
I freakin' can't stand using Rails. I remember getting very excited about it when I first discovered it. Watching apps being developed in 15 minutes. I read all the tutorials. I even bought the book from pragmatic programmer. I studied and wrote programs for 3 weeks. And I just could never get into it. On so many occasions I just felt cheated. It was all valid ruby code, but it just didn't seem in the spirit of ruby. My namespace was cluttered with a million methods. The names of which didn't seem logical and_reminded_me_of_php_function_names_rather_than
The biggest annoyance was automated code generation. It was almost pointless for me. If I made changes to the database, I either had to a) wipe the directory and start over reimplementing my changes. Or b) go through all the MVC code and find the references to the database. Well, this is what I have to do in most other web languages anyway! So what's the advantage? Scaffolding was great at this because it did everything dynamically. However, you can't reasonably keep the scaffolding because it's not meant to be your program. It's meant to be support around your program.
The experience seemed more like programming in php with a twist of mod_perl. All the reasons I wanted to get away from perl and php for web programming were back when I tried to write a large application. Rails just doesn't seem in the spirit of Ruby. It's not bad. Don't get me wrong. But it's not this revolutionary framework so many people would have you believe. Sure, it's great to show the 15 minute video. But I'd like to see the video of someone doing a large project in rails.
Re:Why rails annoys me... (Score:5, Interesting)
Parent
Re:Why rails annoys me... (Score:4, Interesting)
This is one of the reasons J2EE still exists - individual components of it do a lot, but you will need to spend the time to put all of those together and make them work together. But J2EE has a few design faults and looks like it was designed by a committee more concerned about "Descriptive" programming than about getting software developed. This makes J2EE a pain-in-the-ass to work with.
A simplified version of J2EE - with a minimal number of crappy XML descriptor files will be a good base framework.
A fairly good framework which I use is Webware for python - it does not generate a lot of code and stuff, but it provides the essential mechanisms which you can use for getting the work done. It will take longer to code in than RoR but it is far more flexible and is kinda similar to J2EE but without the crap. http://www.webwareforpython.org/ [webwareforpython.org].
The only problem with using Python, Ruby etc is that as they are not strongly typed, you will not find out some problems at compile time and these problems will only show up at runtime, unlike in Java.
Parent
Re:Why rails annoys me... (Score:4, Informative)
if you're referring to a lack of odd people in the ruby community you'll be horrified to know there's many.
thanks for your post, all valid opinion .. i just suspect you're one of these highly intelligent programmers that trip over some minor features you find annoying and then blow your frustrations out of perspective.
(anyone who's farmiliar with rails will understand the underscores)
granted some of the method names are overly verbose! i've thought that often when looking through the APIs and docs. but that criticism needs to be tempered by pointing out the verbose methods are used very infrequently. 99% of the methods i use are small and concise, like: truncate(), h(), link_to(), redirect() etc.
The biggest annoyance was automated code generation
see this i'm finding hard to understand. when i want to start a new model and controller, i type a line in a prompt, and it makes the few files i need to begin. 'begin' being the operative word. there endeth the code generation.
my method of automated code generation is copy and paste.
If I made changes to the database, I either had to a) wipe the directory and start over reimplementing my changes. Or b) go through all the MVC code and find the references to the database
i've NEVER experienced this. never never never. and i have no idea what you're talking about. one of the real clinchers of rails for me is its use of ActionRecord to interface with the database. i modify my database constantly without breaking any code. the only case i can think of when what you describe could happen is if i were to rename a column in the database, then my row.name object wouldn't match. but i would consider a broken website due to this the fault of a stupid developer.
to be able to connect to my database, retrieve a record and update it, in 1 line in some cases, becomes rather neccessary for a developer once they've tried it.
will do all of these. i take a wee dance on the grave of large-scale php development everytime i use that.But I'd like to see the video of someone doing a large project in rails
and here is where i'm convinced that you are what i think you are (an intelligent programmer who's taken big issue over minor irritations). large scale use of rails is very easy to find [rubyonrails.org] if you visit the rails site . It's also very easy to find a larger list [rubyonrails.com], and a list of interesting apps [rubyonrails.com] to boot. granted, not moving pictures, but .. oh go away.
Parent
Web 2.0, Baby! (Score:5, Funny)
I'm guessing more pastels. And rounded corners.
Umm, that was fun... I guess. (Score:4, Funny)
Next question: Now what do I do?
AJAX quality is suspect (Score:4, Interesting)
But it's unfortunate that the preferred Ruby AJAX design pattern still includes prototype.js, because that library as written is fundamentally dangerous. It's written in a fashion which demonstrates that the author is very adept with JavaScript and functional programming in general; but it also does some unpardonably cute tricks in extending core objects, thereby changing the overall JavaScript environment and making the core AJAX library not play nicely with others. (And if ever there was an environment where you need to have good manners and not piss in the pool, it's the browser + JavaScript environment.)
The sad thing is that there's nothing about the functionality of prototype.js which requires all that object and syntax wizardry to function correctly. It could easily be re-written to be perfectly safe. But at this point, the bell has been rung; other libs such as Rico now rely on those same insidious tricks, and 1.0 is out the door.
Sigh. So close, so close.
Rails cost/benefit results (Score:4, Informative)
Installed Rails Apps (open source): (sorry, no links to my domain, must avoid
How is this different? I only worry about one Terms of Service, imposed by the web host. I control all aspects of the deployment of the Rails apps. So the blog is not just my blog, its a blog at my domain (or sub-domain if I perfer), and I control the databases that store its content. In fact, I control every aspect of the blog. For instance, I could make the blog appear and disappear based upon phases of the moon. Can you do that with any blog host, just by changing two links at a shell prompt?
The same goes for every other Rails app I have deployed on my server account. The Rails principles of "don't repeat yourself" (DRY) and convention over configuration, meant that once I installed one Rails app, the experience was immediately applicable to installing the rest. They all have the same directory structure, and the same configuration file for database connection, which is the only configuration file you must edit.
The rest just works, usually. You have to check your versions, and make sure your app and Rails work at the current version. I admit I have experience building server side web projects using VB6 DLL and ASP.NET, along with equally strong UNIX background, so I was able to tweak a few things and proceed when they didn't work the first time. Don't dispair, I was able to make it work after a few hours of checking on-line forums, and trying some suggestions.
Re:"mostly right"??? (Score:5, Insightful)
Parent
Re:"mostly right"??? (Score:3, Insightful)
Re:"mostly right"??? (Score:5, Insightful)
Yeah, it's not great, but at least it's honest. Go on any developer site - MSDN, java.sun.com, whatever, and you'll see a nice long list of submitted bugs. Fact is, no software is perfect, so don't go crazy when they admit there might be uncaught bugs.
Parent
Re:"mostly right"??? (Score:4, Informative)
Parent
Re:"mostly right"??? (Score:4, Insightful)
Remember, Ruby is at the forefront of the agile development community. Many developments in unit testing, for instance, directly involve Ruby. Ruby developers are often the most experienced at effectively employing such development techniques.
And you know what? It shows. Ruby software is often of extremely high quality. It's not perfect, but there is much effort taken to ensure correctly-functioning code.
Parent
Jebus, has the poster or mod ever used rails?????? (Score:4, Insightful)
Parent
Re:Ruby on Rails more "secure" than PHP? (Score:4, Informative)
However, many of the problems associated with PHP are just due to flaws in the design of PHP. It's more a case of PHP being worse than it should be, rather than Ruby on Rails being extremely secure.
That said, most Ruby on Rails-related code is written by far more experienced developers. As would be expected, the quality of the code is higher, and the likelyhood of security issues is vastly reduced. The trend in the Ruby community to heavily use unit testing also helps ensure that quality is a paramount consideration.
Parent
Easy installation (Score:4, Informative)
Or for linux, install mod_scgi [mems-exchange.org] and follow the instructions here [rubyonrails.com]
It's stinkin' easy, I can do it in about 5 minutes. Any hosting admin worth their salt can even script it in about 10 minutes.
Parent
Re:Can anyone offer a contrast to Gears and Django (Score:4, Interesting)
Turbogears is made up of separately developed components; CherryPy for the controller and HTTP server, SQLObject for database modelling and Kid for templating. Turbogears is pretty similar to RoR, but has less automation, and has a more Pythonic and component-based approach to development. Sometimes it's a little obvious that the components were created separately
Django is more like Rails, but is somewhat more specialised. If you want to create a site with an administration section, then Django does a lot of the work for you. Beyond that, Django stacks up pretty equally against RoR.
Both these frameworks are Python based, which again results in some differences. They may be easier to learn, but may lack a little of the flexibility that Ruby boasts. Ruby doesn't have many features that Python hasn't, but it does have some.
Parent