redmine試し…で、CGIが動かなかった
10月 14
ちょっと試しで、redmineを動かしてみることにした。
いろいろとgem関連をインストールするのは面倒だったので、全部まとまっているパッケージを落としてきて試したのだけど…エラーで動かない
/home/redmine/vendor/rails/actionpack/lib/action_controller/cgi_process.rb:22:in `__send__’: undefined method `env_table’ for nil:NilClass (NoMethodError)
cgi_process.rbでenv_tableメソッド呼び出しが落ちているとのエラー。まぁそもそもsenderオブジェクトがnilなら呼び出せるわけもないんですが。
でもなぜ?
ざっとネットで調べると、「CGI版は動かないよ」との様子。
スタックトレースを元にソースを眺めると「DEPRECATE: Remove CGI support」の文字が…ええと、DEPRECATEの意味は「非難」「反対」…困るのでがんばって反対してください。よろしくお願いします。
ともかく、このままじゃ動かない。Passengerやfcgiを導入することは今回のテストでは意味が無いので困った。
仕方が無いので無理矢理対応すること考えた。
FastCGI版なら動く。ではダミーのfcgi.rbでCGI動作をラッピングすればいいと(笑)
で、ダミーfcgi.rbのソース。
FastCGIではないので、Recordとかいろいろ考えなくていいのでシンプル。
#ダミーfcgi
class FCGI
def self::each(&block)
req = Request.new
yield req
end
def self::each_request(&block)
each(&block)
end
class Request
def initialize()
@env = Hash.new
ENV.each {|k, v| @env[k]=v}
@in = STDIN
@out = STDOUT
@err = STDERR
@data = StringIO.new
end
attr_reader :env
attr_reader :in
attr_reader
ut
attr_reader :err
attr_reader :data
def finish
end
end
end
これをLOAD_PATHの通っているところにおいて、dispatch.fcgiを呼び出せば動いた。 railsが必要とするだけのメソッドしか入っていないのでどこでも使えるとは限らないけどね。
Twitter
RSS
最近のコメント