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
とかなってる。おそらくMacのhttpdプロセスのオーナー(_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は注意、ということで。これは解決。