Ruby off Rails is Retarded
10/30/2013 § Leave a comment
I can’t think of a bigger reason to ditch a tool than because it doesn’t do what you want it to do, or because the user can’t get it to do what he needs it to do. I have no use for nonsense like that. But worse, I have no use for a tool that is pretentious. And that’s how I feel about RoR.
I mean, that the hell is this crap?? EVERYONE is doing RoR, everyone is adding “gems” (or ruby libraries) to its related repositories, every Tom, Dick, and Harvey is writing Tech Articles about the wonders of RoR. Its the new wonder widget for the Web, as far as I can see from the volume of articles on the web regarding it. But I didn’t find it so, and I’ll tell you why.
RoR is pretentious, and presents itself like the second coming. You can see this from the sheer volume and tone of the tech articles written about it. Its not difficult to find example code and how-tos using ruby to accomplish many different things on the web. Its a web language, there’s no doubt about it. But everyone using it seems to me to have a tone of “Well, to do that you just blah blah blah…”, and indeed, there does some to be a “thing” for every “thing” you need done on the web. But the actual application of the solution…
Ruby, in my opinion, is horribly fragmented. You can’t say it any plainer than that. Just following a simple step-by-step for newbs yielded different results for me on different machines, and I could have sworn I installed Ruby the same way on both machines, both the same linux distribution even. Logically speaking, repeating the same actions should yield the same results on the same versions of the platform. But in my case it didn’t. Clearly there were slight differences in *something* regarding the platform (Linux Mint 15 “Olivia”), but any differences in the tool chain or the clib or anything else I couldn’t say, and I shouldn’t have to. Yet on my successful platform I had a simple example web site working, and on the other I had stack traces after issuing “rails server”, or at least what looks like stack traces, I don’t know what they are called in RoR.
“Ok, never mind that.” I said, and proceeded to ask of Ruby a very essential, yet non-trivial, web problem.
Many websites need to be a portal, or a gateway, that protects it’s resources from as-hoc use, that is to say, it needs to recognize it’s registered users. Resource protection is not a trivial problem; how do you keep random Web surfers out of things you don’t want them messing with when the http protocol is stateless? You can access a page on the web by simply typing it’s URL into the browser, and the browser does it’s best to present the page (or resource) you’ve requested. Something else has to keep it from the browser’s request. That “something” is the heart of any web portal, and needs to be designed carefully. It’s inherent complexity makes it a common attack vector for hackers and exploiters.
The point is, that “thing” is very important, and not something you write off-the-cuff. So I proceeded to look for something that had already been written. I didn’t think this a would be a chore with all the add-ons and cruft that’s already been written for Ruby, this should have been a snap, right? And boom, a google search yielded a butt-load of urls with ready to go portal gems, gems that would use mySQL or PostgreSQL authentication, gems that used openID (yay!), and other stuff (radius, for example.) So with a song in my heart I downloaded one that seemed reasonable. *Boom*. Stack trace. Something about the version of ruby, or something in ruby. Or rails. Or a gem. I dunno. So I located another one, and deployed it. *Boom*, stack trace. I repeated this act several times until I finally landed on something that didn’t result in a stack trace. Since there were no instructions to speak of I navigated to the root of the system. I got the default red-trimmed rails server page. Great. After an hour of screwing around with how-tos I got to a point where I wanted to encrypt the user password input. “Just add the bcrypt gem and ta da da da day daaaa.” *Boom*, some kind of version issue with the bcrypt gem.
At that point I gave up. At least for now. Obviously this stuff works, I just don’t have the snuff to make it happen, but this absurd fragmentation in Ruby is for the birds. And I know that’s the problem, I can see from the stack traces. Every problem that comes up is due to something not liking the version of something else. Its plain from the errors. For all the issues I have with PHP at least I was able to get a basic web portal up and running in no time.