Showing posts with label rails. Show all posts
Showing posts with label rails. Show all posts

20070524

Going off cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Rails on a Groovy Train - Part 1

Link

No, this was not an entry in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "Blog Post with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Most Puns or References of Ozzy Songs" contest.

Many of my colleagues are (as is a lot of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 web development world) really high on Ruby on Rails. And I can understand why. Really cool Web 2.0 sounding statements like "convention over configuration" or DRY (Don't Repeat Yourself - which I just did by telling you what cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 acronym meant right after cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 acronym) are not just words, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y're baked in to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 way Rails operates. Rails makes cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 every day of web application development uber-easy. And heck, Ruby has closures which almost any legitimate scripting language really needs.

But I've always had some problems with Rails. Some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se are admittedly probably based on my fear of change, but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 four most substantial ones are:

  • Lack of libraries: to really make your life easier, a good scripting language or framework needs to have lots of libraries to do what you need. Ruby does have lots of libraries. But when I started trying to learn it, I had two needs, and I could not find libraries for eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 two. My Rails-uber-guru colleagues couldn't find cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r. That doesn't mean cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y don't exist, but in Perl - you go to CPAN. In PHP, you go to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 centrail PEAR repo. In Java, if it's not cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re already, Apache already wrote it. In Ruby, it might be on Rubyforge. Or cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re might be thirty of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m hosted on various people's blogs - no telling which ones are bulletproof. This will get better with time.
  • Lack of documentation: which is probably a legitimate complaint for anything FLOSS. And this goes hand-in-hand with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 lack of libraries (or lack of a couple of de facto standard repo's). With Java, you know cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 doc is good.
  • Inability to leverage existing work: For new applications, Rails is fantastic. But because Rails runs on Ruby, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re's not (yet) a way for me to leverage my existing work in existing VM's without turning my existing work into web services (shame on me for not doing it right cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first time - but did you?)
  • Key exposure: Part of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 convention over configuration cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365me turns into key exposure. URL's say things like http://server/blog/post/edit/832 - where 832 is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 primary key field of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 post I'm editing. Now, key exposure is not that big of a deal if 1) cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 key by itself has no meaning, which if you follow convention, it doesn't, 2) cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re's no SQL injection, which ActionRecord deals with nicely, and 3) you do permission checking for that object on every action - but that check is up to you.
That being said, Ruby on Rails is a really big and good step in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 right direction. However, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first three items are killer for me - it doesn't matter if I can "scaffold" a really complex schema in 8.3 seconds if I'm going to spend 8 weeks writing my own XSL translator or re-inventing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 toaster oven.

In cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 next couple of posts, I'll explain why I looked (back) into Groovy and why I'm (currently) geeking on Grails.