There are times when I want to do batch processing or perform other command line activities that don’t fit well into the web-framework. The trouble is, my db connection info is based on what “environement” I’m working in. I could re-create the hooks to set that environment, but I’d rather leverage the existing capabilities in Sinatra to do so. That way if they change how it works in the future, I don’t have to work through all that again.
In Sinatra, there’s a Delegator module that handles passing requests for methods like ‘production?’ or ‘set’ off to the App. With that in mind, I can easily just include the Delegator and let it handle everything from there.
Here a sample of my code:
require 'rubygems'
require 'optparse'
require 'sinatra/base'
include Sinatra::Delegator
options = {}
OptionParser.new do |op|
op.on('-e env') { |val| set :environment, val.to_sym }
end.parse!
You can see this on my github page as well: match_xtns.rb