The SitePoint Forums have moved.

You can now find them here.
This forum is now closed to new posts, but you can browse existing content.
You can find out more information about the move and how to open a new account (if necessary) here.
If you get stuck you can get support by emailing forums@sitepoint.com

If this is your first visit, be sure to
check out the FAQ by clicking the
link above. You may have to register
before you can post: click the register link above to proceed. To start viewing messages,
select the forum that you want to visit from the selection below.

I am also confused about ROR and other frameworks (including php ones). I just don't get it. I've looked through several 'get started' tutorials, and sure, it takes hardly any time to come up with an application... but I just hate the way everything is done for you. I want control over that myself - I don't want to take a short amount of time to come up with an application, and then spend a longer amount of time getting it how I want! It seems to impose certain things on you (editing, deleting, adding, updating are always there - no flexibility), and I don't feel like I'm in control as much as I'd like. Personally, PHP gives me the right level of control - and developing applications using PHP is hardly slow anyway.

Someone please convince me that there is another reason to use ROR than development time - do people just like it because it means they can be lazy and get everything done for them? Or is there a more compelling reason to use it?

The people who were saying "just try it" were actually being fair enough. There are no PROVED benefits of using ASP .NET, PHP, or Ruby. You can use all of these 3 at once if you wanted, and I like using PHP the most of the three. The result is, I am more efficient with PHP and I have found my own ways to work as fast using PHP, without needing a STOCK framework of some kind. Yeah, basically, a step behind a full-blown framework of mine.

Anyways, just learn it if you feel the urge to learn a new language, but DON'T learn it because you expect it will offer some great advantages over C# or PHP. All of these are scripting languages, all have few plus points, few negative points, and NO ONE, I repeat, NO ONE in the world can prove one is better than the other.

So, at the end of the day, it depends on you. If you can find a list of plus/minus points of both, then good, or otherwise, all you can do is just learn it. It doesn't hurts, does it? and it also prevents many language religious wars at forums like Sitepoint.

The people who were saying "just try it" were actually being fair enough. There are no PROVED benefits of using ASP .NET, PHP, or Ruby. You can use all of these 3 at once if you wanted, and I like using PHP the most of the three. The result is, I am more efficient with PHP and I have found my own ways to work as fast using PHP, without needing a STOCK framework of some kind. Yeah, basically, a step behind a full-blown framework of mine.

Anyways, just learn it if you feel the urge to learn a new language, but DON'T learn it because you expect it will offer some great advantages over C# or PHP. All of these are scripting languages, all have few plus points, few negative points, and NO ONE, I repeat, NO ONE in the world can prove one is better than the other.

So, at the end of the day, it depends on you. If you can find a list of plus/minus points of both, then good, or otherwise, all you can do is just learn it. It doesn't hurts, does it? and it also prevents many language religious wars at forums like Sitepoint.

There certainly are proven benefits to each of those languages. ASP.net for example makes working with forms an absolute delight. PHP has a vast array of resources and significantly cheaper hosting options (plus a tonne of great little functions for working with strings). There are also drawbacks to each of them.

So what about RoR? Where is the breakdown of the pros and cons?

And so far the only good argument I've heard about RoR is that it is quick to develope... well so is coldfusion, and that is considered the red-headed stepchild of web development by many people.

And for the person who compared it to test-driving a car... you can bet if my nearest VW dealership was 2 hours away, I'd ask my neighbour about his turbo-diesel jetta before I drive all the way out there to give it a test drive.

Fascinating thread

I appreciate all the different responses and views expressed about Ruby, especially in comparison to PHP and others. The consensus seems to be that it is largely a matter of individual preference, and has a lot to do with the (real or illusory) degree of control sought by developers.

I think a lot depends on the amount of time available. For many, hours spent surfing for different plug-ins, extensions, modifications, and code snippets is time well spent, and creates an almost religious experience of community and commonality with other developers.

For others, the exact same activity is a source of incredible frustration and hostility, and the resulting mess equated to a cobbled-together structure held in one piece by duct tape, hose clamps, and glues of questionable effectiveness and longevity.

For individual web developers doing one-off production or building sites for smaller clients, where time is not necessarily critical, almost any preference is suitable.

For web developers working in a conventional corporate environment, or developing multiple enterprise websites, the advantages of PHP and Ruby seem considerably less. Perhaps even more importantly, the "selling points" for applications developed using PHP and Ruby seem few and far between.

Microsoft used a brilliant strategy in giving away its Express Editions. Millions (literally) of aspiring web developers and programmers have free tools available that let them accomplish--in record time--95% or more of what can be done by highly experienced developers using other means. It is questionable whether anyone in the real world will be willing to pay for that other 5%, and for how long.

Enterprise web development is a business, not a hobby or an art form. And precisely as in any other type of business, effectiveness and efficiency take precedent over individual likes and dislikes. As interesting and trendy as RoR may be at the moment, I can't find any reason other than personal preference to recommend it over Microsoft technologies. Apparently no one else can either.

I appreciate all the different responses and views expressed about Ruby, especially in comparison to PHP and others. The consensus seems to be that it is largely a matter of individual preference, and has a lot to do with the (real or illusory) degree of control sought by developers.

Absolutely, programming languages are largely based on personal preference. If that wasn't true, we'd all be writing in subsets of LISP. But there are certain features and design choices that lend themselves to fitting certain scenarios and people better.

In my opinion Ruby fits GREAT as a language to get a prototype, or simple implementation of nearly anything together. It's object system, reduced syntax, and consistency of design, makes it excellent and hitting the ground running mapping ideas to code. Whether the Ruby version survives and becomes the finished application depends on many factors, and are unique to each project.

I think a lot depends on the amount of time available. For many, hours spent surfing for different plug-ins, extensions, modifications, and code snippets is time well spent, and creates an almost religious experience of community and commonality with other developers.

I spend my days writing C#, and free time writing in whatever strikes me. I can honestly say that I spend as much time in at work digging through MSDN, hunting through class heirarchies, and through request flows, as I do googling newsgroups in my free time. C# is an excellent language for a lot of things, but it is no easier, or less time consuming to work in than any other language once you're past the initial first steps.

For others, the exact same activity is a source of incredible frustration and hostility, and the resulting mess equated to a cobbled-together structure held in one piece by duct tape, hose clamps, and glues of questionable effectiveness and longevity.

VIEWSTATE?

For individual web developers doing one-off production or building sites for smaller clients, where time is not necessarily critical, almost any preference is suitable.

For web developers working in a conventional corporate environment, or developing multiple enterprise websites, the advantages of PHP and Ruby seem considerably less. Perhaps even more importantly, the "selling points" for applications developed using PHP and Ruby seem few and far between.

Microsoft used a brilliant strategy in giving away its Express Editions. Millions (literally) of aspiring web developers and programmers have free tools available that let them accomplish--in record time--95% or more of what can be done by highly experienced developers using other means. It is questionable whether anyone in the real world will be willing to pay for that other 5%, and for how long.

ASP.NET is no more a magic bullet than Rails. Rails does the 95% just as fast as ASP.NET if not faster for a lot of cases. What Rails won't do for you is allow you to drag/drop components, and make an application with no knowledge of the underlying architecture, whether this is good or bad is obviously outside the scope here.

Enterprise web development is a business, not a hobby or an art form. And precisely as in any other type of business, effectiveness and efficiency take precedent over individual likes and dislikes. As interesting and trendy as RoR may be at the moment, I can't find any reason other than personal preference to recommend it over Microsoft technologies. Apparently no one else can either.

I can think of many reasons that ROR beats the MS solutions, whether they fit YOUR use case or not isn't something I can answer. I know that for lots of businesses cost of development/deployment is still a factor. MS solutions are many things, but cheap has never been one of them. I can deploy a Rails application on a half dozen operating systems, under just as many web servers, and another half dozen databases. While this may not be something YOU find benifit in, I certainly love knowing the fact that I can build a solution, and be reasonably safe in knowing that as our IT environment shifts my application doesn't become a point of contention. Again, none of this says anything about whether Rails specifically will benifit your operation, only you can make that decision.

I know that in my day job we are a small end-to-end MS shop. I can fairly easily write a Rails app and deploy it within this environment, but we have already paid into the cost of the MS solution. Given that almost any app I write will require tight integration with other MS products it saves ME time to write a large portion of my work in .NET. But I can assure you I've got hundreds, possibly nearing a thousand lines of Ruby laying around my machine used for all sorts of things from productivity scripts to WATIR web tests. No language, framework, solution, will be a magic bullet, the trick is knowing how to find a balance for each scenario.

I am planning to purchase the new sitepoint Ruby on Rails book. I took a look at the article on the main page and read most of it, however I didn't see why ruby is so beneficial.

Aperantly it reduces code because it incorporates a variety of libraries used for database connectivity, AJAX, and so on.

I am not entirely sure on if this is correct (I have never used the framework before) so could someone please explain the primary benefits of the ROR.

Thanks

the primary RoR benefits that interest me are:

1. speed of development (i believe on of the first people who started trumpeting RoR spent a week or two (by himself) coding the equivalent of 3 people coding a java solution for 3 months. yes, he had the advantage of going through the process once before, but come on!).
2. code efficiency - a little goes a long way.
3. i can develop on multiple platforms.
4. i can host on multiple platforms.
5. ruby is a nice, concise language.
6. Rails suggests what are best practices for a variety of applications.
7. You can over ride Rails' conventions to a large degree, but why? maybe for good reason, but you should have one first.
8. RoR coding is very organized - you don't have to remember 5 ways to do something (unless there is good reason!).
9. i prefer spending time on big picture stuff rather than coding the minutae.

having said that, i wouldn't recommend ruby for coding algorithms. the beauty of RoR is you don't need to use Ruby for everything. you can code an algorithm in a language designed to process algorithms and RoR can interact with that module...

how does RoR compare to asp.net?

i'm not familiar with asp.net, so i can only discuss this in a broad way.

does asp.net allow me to easily develop in linux? on a mac? can i easily host an asp.net app in linux? can i use asp.net for the same price as RoR? will RoR FORCE me to upgrade all my code at some point in the future?

now, many companies are wedded to ms. i don't think i'd recommend RoR if you make a good living doing asp.net stuff for a company wedded to ms. well, unless you enjoy programming and like learning new things. i would recommend it then. i also might recommend learning python and java and whatever else you might find interesting.

i don't like the way RoR was hyped... it IS NOT the BE ALL, END ALL to everything.

however, it does do some things nicely. i came from a vb / php background and i won't be looking back... well, unless i'm paid to... and i am - i support a php app i wrote at work. i wrote it before i learned about RoR, though. if i had to do it all over again, i'd go with RoR - no doubt about it.

just remember - use the right tool for the job. sometimes it is RoR, other times it is asp.net (especially in a business environment right now).

I can understand that the ease of coding prototypes and the like is a sweet spot for RoR-developers. I've read the thread, and while some responses are less insightful (i.e. "try it out; you can't compare the two in a thread") others responses really try to address the question, and I have some questions on my own...

How does RoR handle web services and SoA? Can RoR modules be compiled? If they can't, I guess all debugging is via messages sent to the browser, and you can't step through the code, add breakpoints and watches? (because you can in .net)

How is dependencies managed? Is relevant files (dll assemblies in .Net), automatically added when you reference one object aggregation/one object, that in turn references another? (because it does in .Net)

Can you write applications for distributed databases, applications for mathematical algorithms, applications foundations with GUIs in both web and desktop environment? Can you profile your code? Can you easily integrate RoR apps with existing applications, written in for example, Java? Can you create RoR applications that for example take an input from a web GUI where the controller/presenter calls a web service which in turn fetches some data from a database and returns that, and performs a call to a remoting application (via an event sink) (much like RPC in the old days) which then performs logging? Can you give methods parameters which are references to functions, i.e. delegate in C# or ** in c++? (so that you for example can insert the algorithm into a method dynamically at runtime)

What happens under the cover of RoR -- is it likely that you get stuck trying to make something advanced work, but are unable because you don't understand what happens and aren't able to step through it?

does asp.net allow me to easily develop in linux? on a mac? can i easily host an asp.net app in linux? can i use asp.net for the same price as RoR? will RoR FORCE me to upgrade all my code at some point in the future?

ASP.Net is just a view engine for the .Net framework with some built-in components, i.e. objects, that MS has copyright on. But yes, if you don't use that many built-in components, you can host your ASP.Net applications on Mono on linux or mac: http://www.mono-project.com/Supported_Platforms.
So be sure to note the difference between the common language routine and ASP.Net.

If you can use RoR at the same price? Hell, yeah, if you have Windows XP Pro, which you are likely to have one way or another (often comes with new computers), it's FFA.

Will C# code FORCE you to upgrade? Nope. You're so wrong in implying that. And again, it's really not about ASP.Net, it's about the underlying .Net framework.

Sgarissta: As much as VIEWSTATE is a hack, it's coherent (!!) and saves you work and also validates and poses no problem unless you forget to turn it off for large gridviews and the like.

So quoting "dawgbone": "So what about RoR? Where is the breakdown of the pros and cons?"

RoR can do web services, both producing and consuming. If you can explain SOA to me without getting all enterprisey and vague I might be able to answer that too

Originally Posted by echoSwe

Can RoR modules be compiled? If they can't, I guess all debugging is via messages sent to the browser, and you can't step through the code, add breakpoints and watches? (because you can in .net)

No, you can't compile Ruby code, it is a scripting langauge. You can do better debugging than printing statements to the browser though, and there is script/console for interactive development in your Rails environment.

Originally Posted by echoSwe

How is dependencies managed? Is relevant files (dll assemblies in .Net), automatically added when you reference one object aggregation/one object, that in turn references another? (because it does in .Net)

If you include/require a Ruby object that has other dependencies not in the standard Ruby/Rails libraries, then you have to make sure they're available. But this is usually just a matter of having some gems or plugins installed.

Originally Posted by echoSwe

Can you write applications for distributed databases, applications for mathematical algorithms, applications foundations with GUIs in both web and desktop environment?

Distributed databases: you probably can, but I'd rather just use MySQL/Postgres/Sqlite/whatever.

Mathematical algorithms: not my specialty, so I don't know.

Web and desktop GUIs: I guess you could, since there are Ruby bindings for a few desktop GUI frameworks (like Mac OS X's Cocoa) but most people don't.

Can you easily integrate RoR apps with existing applications, written in for example, Java?

I guess you could, especially with web services, and there's JRuby, but you'd have to go into more detail on what you mean by "integrate".

Originally Posted by echoSwe

Can you create RoR applications that for example take an input from a web GUI where the controller/presenter calls a web service which in turn fetches some data from a database and returns that, and performs a call to a remoting application (via an event sink) (much like RPC in the old days) which then performs logging?

I guess you could but that's so damn complicated I would never let that get past the design phase of any of my projects.

Originally Posted by echoSwe

Can you give methods parameters which are references to functions, i.e. delegate in C# or ** in c++? (so that you for example can insert the algorithm into a method dynamically at runtime)

Blocks...

Originally Posted by echoSwe

What happens under the cover of RoR -- is it likely that you get stuck trying to make something advanced work, but are unable because you don't understand what happens and aren't able to step through it?

You can step through it, you can debug a stack trace nearly as deep as you want to go. If you don't understand what's going on below the framework level it's because you don't know Ruby at all or that well, but if you don't know Ruby you're only going to be able to do the simplest things in Rails.

Now here's something else I'd like to address: Most of what you asked for is just plain NOT USED by most web developers at all. Ruby on Rails is great for what most web developers need, namely: a way to build monolithic database-driven webapps quickly and with less pain than the other frameworks. Rails doesn't claim to be "enterprise" in the way Java and .NET do, but that doesn't matter because guess what, most of the market is not enterprise, and it's okay for a framework to not cater to the top 20% of businesses that are considered enterprise. Rails is fine for most of the other 80% of apps, and it can scale just fine with enough hardware. Is Rails going to be used to build the next online banking system or distributed SOA acronym soupfest? Maybe not, but it can easily build many other types of webapps.

Personally, PHP gives me the right level of control - and developing applications using PHP is hardly slow anyway.

I agree with that statement. Despite the waffle and the frivolous rantings, I have yet to read any convincing argument as to why I have to ditch PHP in favour of Ruby on Rails. One should give concrete real-world example in regard to when and how Ruby is is easier or more beneficial to use than PHP, .ASP or Java.

I have seen people say that with Ruby you could use Objects and can have cleaner code. You could have the same using other languages too if you are so inclined. Nothing new there. Writing thousands and thousands of code is hardly an easy job anyway, but you could make it clean and maintainable if you think little harder before you start coding. On the other hand, if you code like mindless, you will end up having a mess. It is no brainer to figure that out. This has nothing to do with what language you use. However, take Java as an exmaple. It's advantages in relation to PHP are well-known. Java, for example, is an excellent choice when it comes to writing distributed enterprise as well as desktop applications. Can someone similarly tell me in what situations is Ruby on Rails superior to other programming languages? Specific examples please apart from "it is better, it is cleaner, it is whatever that we have heard so far in this discussion ".

Ruby on Rails is great for what most web developers need, namely: a way to build monolithic database-driven webapps quickly and with less pain than the other frameworks.

vgarcia, you could use PHP/MySQL to develop any database-driven applications painlessly. Even someone with intermediate level of skills can achieve that. I do not understand how that could be an advantage. May be all it comes down to is one's taste and what one is already familiar with. This question is in every coder's mind though; why will you have to learn new language if the one you already know can achieve all your programming needs? Well, unless there are clear advantages to be had, which I am afraid have not been shown here in this particular discussion.

vgarcia, you could use PHP/MySQL to develop any database-driven applications painlessly. Even someone with intermediate level of skills can achieve that.

I never said you couldn't.

Originally Posted by rageh

I do not understand how that could be an advantage. May be all it comes down to is one's taste and what one is already familiar with.

I learned PHP before I learned Ruby on Rails. I prefer Ruby. You're right in that you can do the same things, but I prefer Ruby's way of doing things. If you prefer PHP that's fine.

Originally Posted by rageh

This question is in every coder's mind though; why will you have to learn new language if the one you already know can achieve all your programming needs? Well, unless there are clear advantages to be had, which I am afraid have not been shown here in this particular discussion.

You don't have to learn a new language. I'm not here to convince everyone in the world to use Ruby on Rails. If you want to keep using PHP or Java or .NET for everything then go ahead, I really don't care.

However, I think you do yourself a big disservice as a programmer by not at least trying out a new language or framework every once in a while. I'm not saying that it has to be Ruby.

There are advantages to be had in learning a new language once in a while, regardless of what language it is, mainly that if you choose one far enough away from what you currently know, it will challenge you to think a little differently in any programming situation.

edit: And what "level of control" are you guys talking about with PHP? If you want to go lower-level than Rails you can always use WEBrick servlets, or just ERB templates or CGI programs with Ruby. Rails is a framework that abstracts a lot of low-level stuff away for you, but it's not the only way to use Ruby on the web. Rails is more like CakePHP or Symfony (well actually, those frameworks are more like Rails) if you want to make a comparison in PHP terms.

I'd like to point out my background so that everyone understands my bias. I wrote Java for 5 or 6 years, then about 3 years ago I discovered Ruby (and along with it, Rails). Currently I work full-time for a San Francisco-based company writing Ruby code all day long. That's all I do. So hopefully you'll understand where I'm coming from.

The key benefit to Rails is time of development, as people have mentioned. I don't think that some of you guys understand what that entails though. It's not just about getting something up and running quickly. You can get something up and running relatively quickly in any language or framework.

Development time, to me, means all the time you spend AFTER you've got your basic app skeleton going. It means maintenance. How easy is your app to maintain, extend, and tear apart? How much work does it take to massage your code so that you can really, truly work with it the way you need to?

Every time we build an app, we're creating a new vocabulary with which to express our ideas. The key metric, in my mind, is how much of my code makes my app's vocabulary work versus how much of my code makes the app work within the framework. A framework is just a tool to provide you with the stuff that you wouldn't want to build every time. Productivity is all about maximizing the ratio of custom code to boilerplate code.

Perhaps the main reason I code in Rails is it just truly makes me happy. I can state as unequivocal fact that I am happier coding in Ruby and Rails than any other language or framework I've used up to this point. I think programmers all have an intense desire to get stuff done. We don't all have the same idea of what that means though. When I'm coding, there's stuff I want to do, and stuff I have to do. For developing web apps, Rails maximizes the time you spend doing stuff you want to do by making it quick and painless to do the things you have to do. Writing EJB configs, even "automated" using XDoclet, is stuff I have to do and is certainly not my idea of getting stuff done.

Ruby as a language is beautiful. I just makes sense. To me. Maybe not to you.

The bottom line is that we all have different styles, desires, and motivations. The only way to really figure out what works for you is to try a bunch of different things. Every single really good coder I know has just slightly more projects on his plate than he can handle. That's just the way they are, curious to try out different things. When you code for a living, day in and day out, it makes sense to close to gap between how you work and how you love to work.

Isn't having a low barrier to entry what has caused PHP to have so many incompetent developers? Can this be the outcome for ruby (and rails) as well?

I have been very interested in RoR and I think it is great. However until the application hosting issues get simplified (fastcgi vs mongrel...apache vs nginx...pound...etc.) I cannot comfortably recommend it for my clients without pointing out a handful of possible problems they may encounter with hosting. Whereas with php reliable hosting is readily available. If they have a dedicated server than it is no problem...but most don't.

I also took a quick look at cake and it looks preaty cool too. Will look at it some more when I get some time.

Are frameworks the way development is headed? It seems that everyday some new framework makes a public appearance (a few exist privately before they go public). Will using frameworks be "looked down on" by die-hard programmers as the use of WYSIWYG editors are "looked down on" today?

"You can just hang outside in the sun all day tossing a ball around...
Or you can sit at your computer and do something that matters."
- Cartman

vgarcia: "If you can explain SOA to me without getting all enterprisey and vague I might be able to answer that too", hehe, right. ^^
You're right, web services is a large chunk of it. From what I have decrypted from DDD-publications, it's also about in what way you name variables, methods, services, work-flows etc (ubiquitous lang.) & the service as the coordinator of the domain layer, the application infrastructure and other application building-blocks, as opposed to a more tightly coupled and/or less concise/cohesive application, where individual blocks may 'know' more about themselves than they should. I guess this is architecture, however and as such it doesn't pose a very good question, because I assume full n-tier development is possible? (i.e that you can both dissect the application into horizontal tiers [one possible combo: data, domain, services, gui] and vertical [logging, caching, error/exception management etc]).

"I guess you could but that's so damn complicated I would never let that get past the design phase of any of my projects." - Well, perhaps you are running a huge e-commerce site; there's the MVP pattern on the top (you got customer support as well which use the model in MVP). Then you sell some stuff from third parties; so you fetch that data through a web service. (there's the database as well). That third party may not want to have both the product database and exception/log-store on the same machine -- so they log using remoting . It was a rather 'constructed' example though.

I like that it's dynamic for repetitive task and that it's easy to use MVC with it (right?). The only thing I have against it was that when it was all brand new, I watched a screen cast with it, where the console generated a huge file that made up the site. Are changes still done in huge files, or is this a misconception of mine?

What about O/R-mappers? Any good ones for RoR? Distributed transactions? Asynchronous programming?

vgarcia: "If you can explain SOA to me without getting all enterprisey and vague I might be able to answer that too", hehe, right. ^^
You're right, web services is a large chunk of it. From what I have decrypted from DDD-publications, it's also about in what way you name variables, methods, services, work-flows etc (ubiquitous lang.) & the service as the coordinator of the domain layer, the application infrastructure and other application building-blocks, as opposed to a more tightly coupled and/or less concise/cohesive application, where individual blocks may 'know' more about themselves than they should. I guess this is architecture, however and as such it doesn't pose a very good question, because I assume full n-tier development is possible? (i.e that you can both dissect the application into horizontal tiers [one possible combo: data, domain, services, gui] and vertical [logging, caching, error/exception management etc]).

Yes you can do "full" n-tier development. And for a more decentralized way to develop in Rails, Web services have been dumped (seriously, too complicated for what most people need) in favor of REST and using HTTP as an API. Take a look at Active Resource for some samples of how people are using web service-like functionality in a much simpler manner.

Originally Posted by echoSwe

"I guess you could but that's so damn complicated I would never let that get past the design phase of any of my projects." - Well, perhaps you are running a huge e-commerce site; there's the MVP pattern on the top (you got customer support as well which use the model in MVP). Then you sell some stuff from third parties; so you fetch that data through a web service. (there's the database as well). That third party may not want to have both the product database and exception/log-store on the same machine -- so they log using remoting . It was a rather 'constructed' example though.

If that's about the only example you can think of where Rails might not apply, then I think it's a pretty good endorsement of how well Rails can handle just about anything below that level of complexity.

Originally Posted by echoSwe

I like that it's dynamic for repetitive task and that it's easy to use MVC with it (right?). The only thing I have against it was that when it was all brand new, I watched a screen cast with it, where the console generated a huge file that made up the site. Are changes still done in huge files, or is this a misconception of mine?

The default 'rails' command just generates a webapp's skeleton for you. Yes you can generate other stuff like controllers, scaffolds, migrations, etc. but you don't have to. I use the generators where they make sense to save me some time while developing, but lately I spend most of my time on tests when building Rails apps and not on autogenerated code.

Originally Posted by echoSwe

What about O/R-mappers? Any good ones for RoR? Distributed transactions? Asynchronous programming?

OR mapping: That's what ActiveRecord is, a big ORM layer. It's pretty good, and if you're not satisfied with its performance you can always swap it out or use SQL directly.

Distributed transactions: Never done it (including in Java) so I'm not sure. In any case it's just not done in most Rails apps. But as said earlier Rails can do web services, so if your distributed transaction is exposed via WS Rails can handle it.

Asynchronous programming: I think I need to learn more about this myself because I had to look up a definition just to answer this . I see it has to do with delegation, and Ruby can do that, but that's about all I can say without knowing more.

No, that's not the only thing I can think of which RoR may not be able to handle, but I figured that would be an example that very well could happen and an example that's about web technologies. Other topics may be, threading, sockets, reflection, serialization, thread monitors, attributes, interfaces, static methods and classes, abstract classes etc. Then we can also have the discussion about whether it supports stuff like nullable types, functional programming (lambda functions), currying, stuff like C++ templates/C# generics, closures and so on. No need to get into that though, because as you've said yourself, the average developer doesn't use it and especially so the average 'web' developer.

Alright; ActiveRecord is pretty nice. Asynch. programming is much like the XMLHttpRequest is in Javascript. Call a delegate which executes in another thread, leaving the main thread less occupied to do other work. Good in scenarios of data loading via web services or other slow datasources or when you know that an algorithm will take some time to run. Used a lot in chat server/client.

I agree with that statement. Despite the waffle and the frivolous rantings, I have yet to read any convincing argument as to why I have to ditch PHP in favour of Ruby on Rails. One should give concrete real-world example in regard to when and how Ruby is is easier or more beneficial to use than PHP, .ASP or Java.

I have seen people say that with Ruby you could use Objects and can have cleaner code. You could have the same using other languages too if you are so inclined. Nothing new there. Writing thousands and thousands of code is hardly an easy job anyway, but you could make it clean and maintainable if you think little harder before you start coding. On the other hand, if you code like mindless, you will end up having a mess. It is no brainer to figure that out. This has nothing to do with what language you use. However, take Java as an exmaple. It's advantages in relation to PHP are well-known. Java, for example, is an excellent choice when it comes to writing distributed enterprise as well as desktop applications. Can someone similarly tell me in what situations is Ruby on Rails superior to other programming languages? Specific examples please apart from "it is better, it is cleaner, it is whatever that we have heard so far in this discussion ".

i don't believe anyone here told you to ditch php.

i do have experience with php and, from my experience, when ruby is the right tool, it is dramatically easier to work with when you know what is going on (learn some ruby and and some rails).

who's advice has more of a foundation - the person who has done both and can compare or the person who has done one... and gets offended b/c someone else says there may be a better way for certain applications?

a lot of the criticism here comes from the latter...

btw, i'm not trying to get you to change - and i don't think anyone else here is, either. you don't need to defend your position - it may well be that RoR isn't good for what *you* are doing, especially given you current skillset.

if RoR isn't your thing, that's fine. you ought to be secure in your decision.

Isn't having a low barrier to entry what has caused PHP to have so many incompetent developers? Can this be the outcome for ruby (and rails) as well?

I have been very interested in RoR and I think it is great. However until the application hosting issues get simplified (fastcgi vs mongrel...apache vs nginx...pound...etc.) I cannot comfortably recommend it for my clients without pointing out a handful of possible problems they may encounter with hosting. Whereas with php reliable hosting is readily available. If they have a dedicated server than it is no problem...but most don't.

I also took a quick look at cake and it looks preaty cool too. Will look at it some more when I get some time.

Are frameworks the way development is headed? It seems that everyday some new framework makes a public appearance (a few exist privately before they go public). Will using frameworks be "looked down on" by die-hard programmers as the use of WYSIWYG editors are "looked down on" today?

are you suggesting that all java devs are competent b/c of the high barrier to entry? that seems rather silly, no?

as long as you are competent, why do you care about the compence of others (and yes, a php dev may not be competent, but their mess will be a LOT easier to refactor than a java mess).

the right tool for the right job.

some folks don't know enough to pick their software tools right (i'm not talking baout using asp.net vs RoR, rather, i'm talking about using java for a 5 page web app or using ruby for an operating system - stuff that is just not right). yes, one must know a bit abouty each structure in order to determine its relevance to a given project - hence, the "just try it out, it won't take to long" advice.

your question is akin to asking if objects will go away b/c they make coding easier in many situations - who would want that when we can feel *real* pain, right?

some folks may like doing mind numbing (to me) work or enjoy creating their own bug ridden version of the "wheel" for the 30,000th time.

i'm not saying that asp.net isn't any good. i am saying i prefer ruby (and yes, xp will one day not be supported and you'll effectively have to upgrade and pay up one more time to do so - bill gates' stated goal is to have people pay more for software than for hardware, and he means it!

"I remember saying [...] that people would spend more money on software than on hardware. We certainly haven't passed that milestone by quite a margin. But particularly as software as a service becomes a reality [that might change]." - Bill Gates, Newsweek, September 18th 2000

).

knowing a language is a big plus for the known language. i expect php devs to feel more comfortable with php. same for .net, java and whatever else.

people seem to come to this thread and want someone else to *prove* that ruby is better *for them* without even offering an application - that's impossible, people. even with an application it is impossible to convince the skeptic that RoR is better for some subset of applications and is worth learning..

what is possible, though, is to spend an afternoon playing around with a RoR tutorial. you do like programming, don't you? it isn't wasted time b/c 1. you might enjoy it and see the benefits or 2. you may find it stinks for your application, but may work for a future application or 3. it just stinks.

no, you don't need to switch and you don't even need to try it - and you can be secure in your decision without claiming others are using without proper justification.

However, I think you do yourself a big disservice as a programmer by not at least trying out a new language or framework every once in a while. I'm not saying that it has to be Ruby.
terms.

Vgarcia, as someone else pointed out in this discussion, you cannot go and study a new programming language willy nilly with all your projects being sidelined. While learning a new skill is a must, programmers have to make living and therefore have to prioritise what they learn and when they learn. A big influence as to what to learn is the question that "will it be necessary addition to my skillset?". So I am not against learning new stuff. We are all for that. But you cannot learn everything in the short amount of time you could steal from your busy schedule. That is my whole point.

Vgarcia, as someone else pointed out in this discussion, you cannot go and study a new programming language willy nilly with all your projects being sidelined. While learning a new skill is a must, programmers have to make living and therefore have to prioritise what they learn and when they learn. A big influence as to what to learn is the question that "will it be necessary addition to my skillset?". So I am not against learning new stuff. We are all for that. But you cannot learn everything in the short amount of time you could steal from your busy schedule. That is my whole point.

i'm busy, too - and i did. i'm not ruby expert by any stretch, but i spent enough time to get a general idea and i'm putting together an up to date simple tutorial for folks in situations like mine. i'll probably post it.

it can be done, though, and, imho, you are fooling yourself if you think it can't be done - especially studying enough to get a decent overview as opposed to learning the whole language in and out.**

it all depends on your priorities.

as has been pointed out, RoR excels at database backed web applications. if that is your niche and you are interested in new ways of doing things, RoR is worth learning.

i'm not convinced a paid asp.net dev should learn RoR for business reasons - b/c the business is likely locked into their MS solution tighter than most marriages.

for an asp.net dev, the only reason to learn RoR right now would be to expand their skill set and learn new things b/c 1. it is interesting and 2. it looks good on a resume.

also, the ruby way has taught me a lot about programming in general. for example, reading agile web development with rails helped make me a better php programmer - since i have to support a phpo app i developed.

no, RoR isn't going to take over the world. however, ruby is a pretty cool scripting language in its own right and rails is a pretty cool framework for those applications where a framework makes sense.

iow, the world isn't a death match between asp.net and RoR.

there is a place for both.

** i also set up my own linux box to learn linux at the same time, too.