6 ms·
WTH is happening to Rails? I'll tell you.
- gusi 15y agoI dont think that rails should worry about complaints coming from php developer.....
- ceejayoz 15y agoComplaints should be judged on their merits, not their source.
- zoul 15y agohttp://en.wikipedia.org/wiki/Ad_hominem http://en.wikipedia.org/wiki/Ad_hominem
- gusi 15y agohttp://news.ycombinator.com/item?id=2688788 http://news.ycombinator.com/item?id=2688788 this is what i was referring too much of these are in ruby on rails from the beging ... http://en.wikipedia.org/wiki/Change_management http://en.wikipedia.org/wiki/Change_management
- joshuacc 15y agoThe difference is that Steve Coast, the post’s author, casts himself in the role of a crusader for the newbies. I find this all a bit odd, since as a Rails newbie[1], I found Rails 3.0.x very easy to learn with a little help from Michael Hartl's tutorial and the Rails Guides. Perhaps this is an example of the "curse of knowledge?" In other words, that since Coast found Rails 2 easier, he assumed that newbies would as well? [1] Front-end developer with little back-end experience.
- emiller829 15y agoYup -- that's basically it. A true newbie should find Rails 3.x easier. It's the people who have to unlearn habits that may have it rough. I found Steve's advice to learn an early version of Rails first completely backwards, in that respect.
- trustfundbaby 15y agoWait till you have to keep up with the changes when 3.1 then 3.2 come out six months within each other, and start to change and deprecate things that you learned in 3.0.x
- jharrison 15y agoYou don't have to keep up if you don't want to. Your apps will not stop working if you choose not to upgrade. I have apps still running on Rails 1.x and 2.x. They don't get huge traffic and they are meeting the customer's needs. There would be no business advantage for these particular customers if I had to charge them to upgrade.
- makmanalp 15y agoWill they keep doing security patches for those?
- jarin 15y agoThey have been pretty good about doing that. There was a security patch for Rails 2.3.x 6 days ago: http://weblog.rubyonrails.org/2011/6/8/ann-rails-2-3-12-has-been-released http://weblog.rubyonrails.org/2011/6/8/ann-rails-2-3-12-has-...
- jamesbritt 15y agoIt's not just security (and other) patches for Rails, it's maintenance for the assorted plugins one inevitably ends up using. If you've a Rails 2.x app with plugin ActsLikeWhatever, and you run into some problem with that plugin, chances are the fix will only be in the newest, non-Rails2, release.
- Jd 15y agoSupport for 2.3 will be dropped as soon as 3.1 is out.
- bphogan 15y ago
- chriserin 15y agoThis was my experience as well. I invested in following Hartl's tutorial and by the end I was capable of creating webapps that did cool things.
- MartinMond 15y agoI remember a blog post from 2008: Rails will be retrofitted to make it easy to start with a “core” version of Rails (like Merb’s current core generator), that starts with all modules out, and makes it easy to select just the parts that are important for your app. Of course, Rails will still ship with the “stack” version as the default (just as Merb does since 1.0), but the goal is to make it easy to do with Rails what people do with Merb today. http://yehudakatz.com/2008/12/23/rails-and-merb-merge/ http://yehudakatz.com/2008/12/23/rails-and-merb-merge/
- epochwolf 15y agoAnd they have been moving in this direction. Here's configuring the middleware: http://guides.rubyonrails.org/rails_on_rack.html http://guides.rubyonrails.org/rails_on_rack.html Here's a stackoverflow question on how to disable ActiveRecord: http://stackoverflow.com/questions/2212709/remove-activerecord-in-rails-3-beta http://stackoverflow.com/questions/2212709/remove-activereco... Have you seen ActiveModel? It gives a common interface for orms to interface with so swapping out ActiveRecord doesn't break half of the view helpers. Rails 3 is far, far easier to extend and modify than 2.3 was.
- bxr 15y agoThank you for making "You just don't get it" point number 1. I like to know early on when I should bail out and stop reading something.
- emiller829 15y agoHad you continued reading, you'd see that I backed the point up by explaining what I meant. :)
- josefresco 15y agoBxr is suggesting that you either move that conclusion to the end or eliminate it completely and define your argument so that the reader can figure out whether or not "he gets it". If I had to guess I'd say he would prefer the latter.
- pointclick 15y agoi prefer the way he said it.. same as bxr, i'd like to know early on what i'm about to waste time on.. i finished reading the whole thing..
- dochtman 15y agoIt seems actually kind of obvious that "opinionated" software would have a higher rate of change than other kinds of software: opinions change faster than the other stuff.
- ahi 15y agoI was thinking just the opposite. When it comes to frameworks, opinions are good things. But you kind of look like an undependable jackass if your opinion changes every 5 minutes.
- kenjackson 15y agoOpinionated software should actually change slower. Why? Because if conventions/defaults change quickly you break constantly or even worse, you quietly break. And of course since your unit tests are often written in the same language, you now have double the problems. With less opinionated software, changes actually rarely break you since it typically requires opt-in/code change to pick up the new capabilities.
- trustfundbaby 15y agoI don't think the author really gets why people have a problem with what's going on with Rails, and the article strikes me as a "I like this why don't you?!" type deal vs making a reasoned argument for why the constant change in the Rails way of doing things is necessary. > If you’re learning a new language, a strong community consensus about a right and a wrong way to tackle problems aids learning ----------------- Right, but the problem is that there doesn't seem to be a 'right' way, That's the problem. We were all prototype a few years ago, now it jquery ... we (well I) hadn't heard of coffeescript till a few months ago and now its a default option in rails, The way we were constructing ActiveRecord finders had been set all through Rails 2, now we've changed it, the way we dealt with gems was set all through rails 2 now its changed completely in Rails 3. I like change, I like staying on the cutting edge of web technologies, but I don't want to learn something, only to discard it and re-do it completely to bring it up to date with a new way of doing things all the time. > If, as coders, we aren’t constantly striving to improve the status quo, what’s the point? --------------------------- The point is that you have to realize that Rails isn't just your personal plaything any more, people are invested in it just as much any one person or group of people. I have 5 Rails 2 apps that I support at work and a couple more outside of that, they're all on rails 2 ... bringing them up to Rails 3 without disruption, isn't going to be trivial and I'd be nice if folks acted like they understood that and didn't dismiss similar concerns, or berate folks for having concerns. To that end, my personal preference would be to see fewer but more substantial releases and a little bit more engagement with the community before making major decisions about the framework instead of the steady drumbeat of updates and (seemingly) unilateral decisions (that coffee script decision really irked me, can you tell?)
- jdminhbg 15y agoNeither the first post ("WTH is going on with Rails?") nor this one is talking about upgrading existing 2.x apps to 3.x. There's a lot of stuff to change, and it can take a not insignificant development effort to port them. But that's not the question here -- the question is whether Rails is getting progressively easier or harder for a newbie to pick up and whether those changes are going to result in better or worse applications.
- jarin 15y agoI think most of the arguments people have any time Rails does a major change can really be re-interpreted as: "I have a moderately complex Rails app that I want to upgrade, but I don't have much confidence in my tests, I maybe don't have proper separation of concerns, and I just know that one hacky thing I did a while back is going to bite me in the ass." It's just something that happens over time in any moderately complex app. I see Rails point release candidates as a good reminder to bust out rcov and spend a few days plugging up the gaps in test coverage before the stable release comes out. If you've been procrastinating upgrading your Rails 2.3.x app to 3.0.x, you're really gonna have fun going straight from 2.3.x to 3.1. Sometimes you just gotta rip off the band-aid.
- bgentry 15y ago"I have a moderately complex Rails app that I want to upgrade, but I don't have much confidence in my tests, I maybe don't have proper separation of concerns, and I just know that one hacky thing I did a while back is going to bite me in the ass." This says it all for me. Upgrading an app or parts of an app that have great test coverage is really pretty straightforward. It's only more difficult if you weren't following best practices all along.
- joshwa 15y ago> Upgrading an app or parts of an app that have great test coverage is really pretty straightforward. It's only more difficult if you weren't following best practices all along. Like people working with Rails in the the real world with real, less-than-perfect programmers. Yes, if I'm an ideologically pure, saint-like programmer with 100% test coverage and purely idiomatic ruby, then upgrades should be a breeze. Except the plugin ecosystem problems still arise-- even the 'perfect' programmer has to be perpetually upgrading to the latest-and-greatest plugins since the last authentication/taggable/whatever plugin has been abandoned in favor of the flavor-of-the-week.
- chriserin 15y agoThis happens with all languages and frameworks too. There are ASP.NET 1.1 apps at the last place I worked because when we did a test upgrade to 2.0 things started failing.... and there were no automated tests (yet a requirement of bugless releases :) so henceforth nobody wanted to invest in upgrading. Its the nature of the software beast that upgrading a large and complex application to a new version of the language or framework is difficult and maybe prohibitively difficult. Once something is written and it works it often times stays as is... sometimes for decades.
- clu3 15y agoAt least you guys Rails have something new to look at, good or bad I don't judge. I've been using Zend framework for the last 3 years and it's latest version 1.10 has lived like "forever", until the day ZF 2.0 comes out, which has been "promised" a long time ago
- trustfundbaby 15y agoIn PHP's defense ... Development on CakePHP has been chugging along like a champ for a while now.
- mhitza 15y agoThen you should try symfony... changed from 1.0 -> 1.4. Radical change with the 2.0 version.
- synnik 15y agoWhen one person drives the platform strategy, and it is opinion-driven, then conflict like this is inevitable. You either agree or you don't, and if DHH changes his mind, you might changes yours, too. I don't think it is a statement on the platform at all - just a repercussion of one of its tenets.
- c00p3r 15y agoSame brain-washing as it were in the time of rice of J2EE.. They lost the most important think - the balance of being good enough and become just another bloated framework.
- flocial 15y agoThis is the typical "rails" response. Rails will make you a better programmer by teaching you the right design patterns, etc. Of course, it does indeed give you a proper structure to building a web service and can be quite educational. However, it can make life difficult once you start straying from "their way" even if you know exactly what you're doing for even simple things like mapping to a legacy DB with schema intact (not gonna happen). Conventions over configuration is nice but it requires some stability. Part of the problem is the leadership. They take the stance, "you bastards are doing it wrong" if you want to do things a little different. The community almost split when they managed to swallow Merb and keep Rails. It's toned down quite a bit but that negativity definitely carried over from the early days and infects the community (swearing in presentations and porn references, etc.). But these thinking aids aren't exactly radical paradigm shifts that will expand your mind and make you a significantly better programmer for the rest of your days. Rails is one of the most influential frameworks and did a lot to advance the field but now there are other frameworks that are much easier to learn and get a functional web service started. So saying dissenters are slow to learn, stubborn or haven't been writing tests really doesn't do anyone a service and doesn't make anything clearer, sorry.
- bxr 15y ago>it can make life difficult once you start straying from "their way" even if you know exactly what you're doing for even simple things like mapping to a legacy DB with schema intact (not gonna happen) Yikes, unfortunately this knocks rails off of my to-try list. I've got a non-web application with an unusual, but by no means bad, schema. I've found it makes a good measuring stick for frameworks/tools. I have nothing against doing things in the way of a particular framework, but I have existing code to bring to the party too, if something isn't going to play nice I ignore it. I can't live with building something that exists in isolation. Its either not going to work with what I have, or hold me back when I want to build on top of it with something else.
- sebilasse 15y agoGive datamapper a try, might be better for your case.
- mcantor 15y agoI've lost count of how many times I have tried to do something in Rails which was trivial in every other framework I have ever worked with; struggled; gone to #rubyonrails or a mailing list and asked for advice; and had people tell me that I was "fighting the framework". I understand the benefit of not having to make every single decision from the ground up when you're getting started on a project, but sometimes I worry that working with rails is actually warping my thought patterns to fit its myopic vision of how web apps "should" work. To phrase it differently: I feel comfortable with a framework or community forcing me to change how I achieve some higher-level goal. But when that convention prevents me from doing something, period, I start to worry.
- dasil003 15y agoExample please. Rails is very opinionated about the things it handles and how it does them, but I've never had a problem rolling my own solutions and integrating them in. Not every model has to inherit from ActiveRecord, arbitrary code runs just fine in lib/ What's the problem?
- wmoxam 15y agoWhat sort of 'thing' were you trying to do?
- trustfundbaby 15y agoThats how Rails is ... I fought it at first, but you either come around or you don't. There isn't much middle ground with rails, you have to accept that and plan accordingly.
- gaius 15y agoLike everything Ruby, you have to drink the Kool-aid, or walk away completely.
- lisperforlife 15y agoI maintain a couple of non-trivial Rails 2 apps, have just shipped a couple of Rails 3 apps and am preparing to write a Rails 3.1 app. I had always been using Sass and Haml for my views from the Rails 2 days. I moved over from shoulda to rspec 2 for Rails 3. All my solutions run partly on MRI/1.9.2 and have certain parts in JRuby (document parsing, search, etc). I had always been minifying and combining my Javascript. Sass with Compass/Blueprint took care of minifying and compressing my CSS. The only change that I am not comfortable with as yet is CoffeeScript. But after playing with it for a couple of hours I understand that this is an excellent choice. I have been a Python programmer before and significant whitespace in CoffeeScript or Sass does not bother me. I am extremely thankful to the people in the community who are putting their time and effort to build such great software and essentially giving it away for free. I am personally both awed and humbled by the excellent work put in by all the individuals who directly or indirectly contributed to Ruby and Rails across all the versions. If not for them I would not have quit my day job. If not for Rails, I am pretty sure that I would not be enjoying my life, as much as I am enjoying it today. The point is that Rails has grown up to the point where makes it simple to write complex applications. For small projects, these choices may seem to be an overkill. But trust me, when you put it into production and start getting traction you will thank Rails. I have built applications with Sinatra and Rack and assembled my own Rails environment using tons of middleware and a lot of glue. I know how hard it is to do it the right way and appreciate the fact that Rails makes it a cakewalk for us. I sure learnt a lot of Ruby but I would choose Rails any day as I know that there has been a lot of thought put in by the community to make it awesome.
- perlgeek 15y ago> In most cases — for mere humans, anyway — there really is a right way to do things. Ruby is an Object Oriented programming language. There are literally decades of prior research in the field of OO software design, and they’ve resulted in a lot of really well-documented and well-tested design patterns for building software. ... coming from the people who are known for relying heavily on monkey patching existing classes. Or did that change recently?
- prodigal_erik 15y agoAllegedly they have faced enough mutually-inflicted pain to realize that monkey-patching was a bad idea, and so it's no longer cool.
- khafra 15y agoYeah, I pretty much thought that the Ruby for people who want One Right Way to Do Things is Python.
- betageek 15y agoI agree with a lot of what the article says but I do think the newbie coming to rails at the moment has to do a hell of a lot more to start swimming compared to the "good old days" of Rails 2. Ruby 1.8 or 1.9? Use RVM? How does this Bundler thing work? What the hell are all these deprecation warning? Rake's broken? etc. etc. 3.1 brings asset pipelines where it seems you need to install a Javascript runtime on the server to deploy?!? Even when you get your app up and running the load times in 1.9.x at the minute mean you'll be hanging around waiting for rails to generate files and your going to have to get Spork running to make any kind of rapid TDD/BDD. Rails used to be the easy way into all this modern development goodness, now that "blog in 20 minutes" simplicity has gone along with the famous screencast.
- radagaisus 15y agoWhat's with the PHP bashing? MVC and ActiveRecord were in PHP frameworks and code before rails was born.
- sigzero 15y agoIt's easy to bash PHP.
- ryanisinallofus 15y ago"It's growing up" sounds like "it's turning into java" Now I know it's not that bad but I can see a future where instead of just having the rails book, you have books for every new thing and option possible and the section looks like the Java section where Struts, Spring, and even Scala/Clojure all make the idea of switching to to rails seem far more daunting than it needs to be.
- jasongullickson 15y agoRight or wrong, I'm looking forward to whatever fills the spot that Rails left behind. It was a pleasure to work with a few years back and I miss that. If you've seen something that fits the bill, please pass it on.
- ryanisinallofus 15y agoSinatra I guess. You can choose the orm and templating language you want- which sort of just turns it back into rails. Still working in Sinatra does give you that fun feeling of old Rails.
- jasongullickson 15y agoI liked being able to think of an idea, sketch out a schema and have it up in (admittedly ugly) webpages in a matter of minutes...and on almost any machine in just the time it took to download the package (no crazy dependencies, etc.). The fact that you could then evolve this into something production-ready (arguably), well that was just icing on the cake!
- tluyben2 15y agoI don't think this is a good thing. I built a few rails apps and currently we are doing our startup in rails and java and depressingly enough Java is actually nicer for me. He's talking about well documented gems; which ones? I haven't seen much of those; it's usually 'go read the source code'. And all those 'great OO practices' where suddenly some class is behaving totally different because you installed a plugin is GREAT when it works. When it doesn't you are debugging yourself silly through all that meta programming crap. And having (as in, stuff stops working) to change your code through minor versions? That's not growing up, that's just crazy behavior.
- runjake 15y agoThe rapid pace of Rails is a turn-off to me, and I do bounce between it and the more "sane" Django. But I think that's more a reflection of myself (being an "old" guy who's "been there, done that" several times over and resistant to change and trends) and not the fault of Rails. So I try to keep up. But Rails is good for the web. The web was pretty stagnant at one time, and it sucked, and didn't keep up with the needs of users and businesses. And that's why I don't have a real problem with Rails' rapid pace. It keeps everyone on their toes, including their competitors.
- deleted 15y ago[deleted]
- joeburke 15y agoAll the frameworks "are growing up", this is nothing to be proud about. The real question is: is the framework becoming mature? Because RoR has this tendency to reinvent itself every 18 months or so, the answer to the question is a resounding no. It's being used mostly to explore new ways to create web sites, but RoR is more and more becoming a framework you really want to avoid if you need to create a production site that you are planning to work on for years to come.
- tptacek 15y agoHard to take too seriously any OO fundamentalism from someone who cites the Gang of Four patterns as if they were sacred scripture. Actually, they're techniques for working around the limitations of languages like C++, and when evoked explicitly in Ruby tend to be a "code smell". This comment has been a service provided by the small bot running in my brain programmed to respond to mentions of the GoF book with a link to Norvig's presentation on them: http://norvig.com/design-patterns/ http://norvig.com/design-patterns/