Tue Aug 9 22:21:29 2016 Zachary Scott email@example.com
*puts on his bi-focals*
This story dates back to before probably most of you reading this ever touched a Rails project. Otherwise, I'm happy to send some waves of nostalgia as we go way back...
To a time when Rails extensions were called "plugins", and they were installed using
Before the time of "gems", and certainly before rubygems.org ever existed.
There was no bundler, in these dark times, and often we found ourselves struggling to keep our dependencies compatible with the latest version of Rails.
Just to give you an idea, since there was no such thing as a
We had to use the
script/plugin command that came with Rails to install extensions, such as:
ruby script/plugin source http://techno-weenie.net/svn/projects/plugins ruby script/plugin install acts_as_paranoid
This would actually clone the given subversion repository, and copy the plugin contents into your Rails application source directory.
Essentially, it would vendor the plugin in your source tree where Rails could add to the
$LOAD_PATH, although I can't quite remember in that great detail.
Anyways, it was epic.
This plugin came from a time when Naming Things Was Hard, since then however that problem has already been solved thanks to
But really, there were a ton of plugins that used this naming scheme.
To this date, the 6th most downloaded
acts_as_* plugin is
Being originally created by the godfather of Rails plugins, and first released back when Rails was at TODO: ask Rick when this gem was originally released lol.
As far as I can tell, the first released version of this gem on rubygems.org was version 0.1.3 in 2005. Back before Rails was even at one point oh.
And I Know For Sure, this plugin existed before that, because no one starts at
Ah, so yeah.
This gem has seen some things, man.
After recently pushing version 0.5.0, I can't without good conscience release the gem without telling of it's life long journey.
I love this title, btw. hehe
So what does it take? To bring a Rails extension from pre-1.0 to 5.0?
To put it simply, and spare a 30k word blog post which you can read the
git log if you really want to know.. it takes people. OMG!
Since I've "become" maintainer of this gem over 2 years ago, support for Rails 5 all the way from version 3.2 has been added!
I can't take all of the credit, if any to be completely honest.
It's really amazing how time and time again, someone always stood up to contribute updated support for this gem!
Before we get to that.
About 2 years ago, I spoke (very poorly in Japanese) about adopting unmaintained projects in order to better the community and your own personal well-being.
You see, the company I worked for was using the gem, but they needed to upgrade Rails in their application.
Turns out, this gem wasn't actively maintained, and so we had to patch it to run the newest Rails on our system.
This is actually a great reason to contribute back, and with the support of my manager, and after a few emails, we took over maintenance of the gem to release updated Rails version support.
And to be honest, this is a great excuse to contribute to open-source on your company's time!
Thanks to the great Ruby community, most of the work was already done for us!
While yours truly merged, tested, and released versions compatible with all of these Rails and move the repository from a fractured 3rd-party to it's own github organization.
To be honest, I'm not really sure how to end this blog post.
Thanks to all of the awesome people I mentioned and more, who helped contribute to this gem.
Even after 10+ years of life, this library still gets love and is still being used by people.
I don't care if it doesn't work for your use-case. My company was kind enough to let me help wrangle a couple releases on their dime, and I'm more than happy if you or your company also uses this gem and appreciates the work that I put in.
By seeing the support it has received by the community over these years, I realize that as long as people are opening issues and submitting patches.. a project is never truly dead.