Every Time, Devise. You Get Me Every Time.

An oft-repeated bit of sage advice is to be cautious and parsimonious when adding dependencies to your project.

This is even double true when the gem/pod/package/etc. you use warns you in the README that you might not need it. I'm looking at you, Devise.

It's not like I'm new to Devise; I've used it several times before. But every time I start up an app and want to add user authentication the same internal conversation happens.

"Look," I tell myself, "I just need something that works. My needs aren't special; user authentication is a solved problem." I'm being reasonable, right?

Well, I've been bitten before, but I start to rationalize. "I know Devise is probably more complex than I need, but it works. Do you really think you can do better in a few hours this afternoon? Probably not." By this point my internal balance scale has tipped and I plunge in; "Oh, heck, just use Devise to get the feature done fast. It'll be OK."

And so begins yet another week of second guessing and regret.

I mean, Devise is a really well done and awesome gem. Utmost respect for the folks behind it. I'm not saying it's bad. I'm saying it a machette with a loose or missing handle.

I always end up at the point where the amount of research and hacking I've had to do to coerce it to do what I want approaches the effort just rolling it myself from the get go would have been.

And here I am again. You win, Devise. Got me again!