Ok, so I spent alot of time with my project and ruby on rails this weekend. I ended up going out with my wife Friday night so I didn't really get into things until Saturday. I worked most of Saturday and have been working on it on and off today (football is distracting). I think I got a decent amount of work done, it could have have been alot better (if I knew ruby and rails better) and it could have been alot worse (if I didn't solve a couple of the things I got stuck on). I didn’t have too many problems setting up ruby and rails, they hooked up to SQL Server easily. I ran across one issue with SQL Server and boolean values, but it was really just a scaffolding issue which was easy to fix. I had downloaded Eclipse and configured it for Ruby on Rails earlier in the week, so I was ready to go on that front.
Things started out a little rough. It took me a while to figure out the best ways to do validation, but when I figured it out I was pretty impressed. Basically you use the model to define what is required, it also includes automatic validation of stuff like confirmation fields (for instance when creating a new password). By keeping this all on the model you can completely detach it from the controller and view, which is a beautiful thing. (especially since the errors are automatically displayed to the view through a single line of mark-up)
I got stuck Saturday night on the mailing part of my requirements. I couldn’t for the life of me get the email to send, I kept getting cannot relay errors for the email I was sending to. (which doesn't make any sense to me) This is the same server I send through from .NET, so I know the server and creds were setup correctly.
I briefly considered giving up on Ruby (I was frustrated from some earlier times I got stuck as well) and thought about how easy some of this would be in ASP.NET 2.0. But then I thought about all the work I would have to do to get the same functionality in ASP.NET 2.0. I think if nHibernate was available for .NET 2.0 I might have done it, but I couldn't even think about writing all that DAL/sproc code. I also remembered how much trouble I had with some of the ASP.NET 2.0 controls and getting them to work just the way I wanted. (I would have had to write a custom security provider, etc) When I started to tally up the number of different libraries I would need and the amount of codesmith templates I would need to write I realized I wouldn't have gotten a single line of application logic written by the end of the weekend. (Heck, on an open source project we have spent weeks trying to get all this stuff done) I kept going with Ruby and things got alot better. I figured out the issue with the mail, I actually hadn’t restarted the web server since modifying the configuration file, a complete newbie mistake. Once I got that figured out things got rolling and I got quite a bit done, and am pretty happy with it.
I know I have not been doing everything the best way possible, but the nice thing is it is very easy to refactor so I can get it just right.
Ok, so how much did I get done… here are the things I could cross off my list from this weekend:
Create a new account
Send activation email
Activate account
Login to account
Edit account details
I also got started on some other cases, but none of them are finished. Not bad, I think I could have gotten alot more done if I didn’t get hung up a couple times and if I had a better understanding of Ruby on Rails. So my goal from here is to read up much more on rails (I am only up to Chapter 5 of Agile Web Development with Rails) so I have a better understanding of it and to work on the project when I have time.