The Power of Vendor/Gems
16 Sep 2007 in Programming, Projects, Ruby on Rails by GarrickRight now, I’m heavily reliant on an unsupported (if not completely abandoned) ruby gem library. Historically, I’ve just gem install bizarro-gem and moved on.
A couple of issues have changed my perspective:
- My host, textdrive, doesn’t allow installing bizarro gems on their shared servers and I’ve had difficulty freezing them, so I worked around the desired functionality.
- I needed to make some modification to the library. Not easy to do if it’s installed system wide.
Thankfully, I found Chris Wanstrath’s Vendor Everything , his post makes it trivial to freeze gems in a reliable, testable, hackable way.
The core of Chris’s technique is added this line to your Rails::Initializer.run block:
config.load_paths += Dir["#{RAILS_ROOT}/vendor/gems/**"].map do |dir|
File.directory?(lib = “#{dir}/lib”) ? lib : dir
end
And unpack the required gems into vendor/gems
With that, I was able to make the necessary modifications and make a more portable app.
Thanks Chris.
