passenger + RubyInline (via ImageScience) で exit

これは笑った。

/Library/Ruby/Gems/1.8/gems/RubyInline-3.6.6/lib/inline.rb:74:in `exit'
/Library/Ruby/Gems/1.8/gems/RubyInline-3.6.6/lib/inline.rb:74:in `rootdir'
/Library/Ruby/Gems/1.8/gems/RubyInline-3.6.6/lib/inline.rb:88:in `directory'
/Library/Ruby/Gems/1.8/gems/RubyInline-3.6.6/lib/inline.rb:262:in `so_name'
/Library/Ruby/Gems/1.8/gems/RubyInline-3.6.6/lib/inline.rb:298:in `load_cache'
/Library/Ruby/Gems/1.8/gems/RubyInline-3.6.6/lib/inline.rb:686:in `inline'
/Library/Ruby/Gems/1.8/gems/image_science-1.1.3/lib/image_science.rb:84

該当箇所(inline.rb)をみると

    env = ENV['INLINEDIR'] || ENV['HOME']

    # in case both INLINEDIR and HOME aren't defined, and under Windows
    # default to HOMEDRIVE + HOMEPATH values
    env = ENV['HOMEDRIVE'] + ENV['HOMEPATH'] if env.nil? and WINDOZE

    if env.nil? then
      $stderr.puts "Define INLINEDIR or HOME in your environment and try again"
      exit 1
    end

とかなってる。おそらくMachttpdプロセスのオーナー(_www)にHOMEが割り当てられていないからだと思う。
もう少しコードを読むと、

  def self.directory
    directory = File.join(rootdir, ".ruby_inline")

とかあるので、.ruby_inline というディレクトリを使ってなにやらやるらしい。実際に、/Users/yssk22/.ruby_inline というディレクトリがあって、ImageScienceのコードができていた。

環境変数か。。。SetEnv で割り当てられるもの?と思ったがやっぱりこれはだめ(CGI用だし)。で、envvars で何とかなるかな、と思って試してみたところ、だめ。?? と思ってRailsのControllerにでENVを出力させてみたけど、

PATH : /usr/bin:/bin:/usr/sbin:/sbin
RAILS_ENV : development

だけ、という罠。仕方がないので、environment.rb に頼ることにする。RAILS_ROOT/tmp/inline を作成し、environment.rb で以下のように設定。

ENV["INLINEDIR"] ||= File.join(RAILS_ROOT, "tmp", "inline")

RubyInlineを使うRailsAppは注意、ということで。これは解決。