About a month ago I posted that I had started on a Ruby on Rails project. It was my first RoR project and I spent a couple weeks working on it, learning as I went. One of the things I had deferred working on was User registration. I had some done some reading and it looked like there were several viable Gems I could integrate fairly easily.
I have gotten into the habbit of taking my iPad to the gym in the morning and reading up on whatever project I am noodling on. So I’ve done a lot of RoR reading while on the elliptical machine and came to the conclusion that AuthLogic would suit my rather simple needs. So I kept working on the functionality I needed for the App, deferring User management for a later day.
I had to put my RoR project aside for 3-4 weeks while working on a Tcl based project for work but got back to it over the weekend. I decided it was time to tackle the User login module. Initially everything seemed to be ok, I could follow the examples and make things work but I kept running into little issues and I never got it to work reliably. The lack of Rails 4 examples to use as a reference got me thinking (and concerned). Maybe I should have picked Devise (the other Gem which seems pretty popular).
I created a simple RoR App solely to test Devise and it will very simple to setup and configure. Great, let me fold it into the App I am working on. Uh-oh. Not so easy. I am not sure if it was because Authlogic also defines a User model and there were some leftover pieces of it that were confusing Devise or it was something else in my App but after a couple hours of playing with it, I concluded what I was trying to do was a fool’s errand.
This got me thinking – was it time to start over? Should I consider all of the work I’ve done to date a “learning experience”? The more I thought about it the more I knew starting again was the right answer. But I had so much other functionality already working I hated to throw it away. Decisions, decisions.
In the end I decided to start over and being with the Devise user module. I decided to make use of the Rails-Devise example application as a starting point as it will walk through a configuration processs where by answering questions it will generate the basis for a Rails App. It is pretty slick. I ran it a couple times to understand the impact of some of the choices but settled on a final configuration which has become my starting point.
I was very quickly able to add some of the functionality I had worked out previously so as painful as it was, I am pretty sure that starting over was the right answer in this situation. Granted my problem was much smaller in scope than many projects and more importantly, it hadn’t been deployed yet so other than a release delay, my decision has not impacted the end user at all. That isn’t always the case.