I've got a Sinatra app that I'm trying to run on Dreamhost that makes use of pony to send email. In order to get the application up and running at the very beginning (before adding pony), I had to gem unpack rack
and gem unpack sinatra
into the vendor/ directory, so this was my config.ru:
require 'vendor/rack/lib/rack'
require 'vendor/sinatra/lib/sinatra'
set :run, false
set :environment, :production
set :views, "views"
require 'public/myapp.rb'
run Sinatra::Application
I have already done gem install pony
and gem unpack pony
(into vendor/). Afterwards, I tried adding require 'vendor/sinatra/lib/pony'
to config.ru only to have Passenger complain about pony's dependencies (mime-types, tmail) not being found either!
There has to be a better way to use other gems and tone down those long, ugly, redundant requires
. Any thoughts?
It took me ages to find that you can simply use "gem install sinatra" and gem will figure out (because the system directories are read-only) that you will need to use a local gem install directory. As of now, there seems to be no need to set any special environment at all. It figures out to use $HOME/.gem as the local gem path and everything just works. No need for require 'vendor/stuff' at all. I did find I had to add $HOME/.gem/ruby/1.8/bin to my path in order to execute binaries installed by gems.
Here's my config.ru (for Dreamhost)
Later edit: This is all well and fine, but there remains the issue that Passenger can't find my gems when the job initially starts up.
I'd recommend creating your own gem path "somewhere" then adding it in your
config.ru
like:then install your gems into that
My config.ru is just simple as:
and app.rb head:
Install Ruby gems on dreamhost
http://c.kat.pe/post/installing-ruby-gems-on-dreamhost/
Change config.ru (works for Sinatra 1.0)
require 'rubygems'
require 'vendor/sinatra/lib/sinatra.rb'
Hope it helps someone.
I am using pony and a lot of other gems for my Sinatra. It should work well for you too. It's just those two lines (GEM_HOME and GEM_PATH) you have to add on your config.