2009-04-26(Sun) [長年日記]
_ sinatra+cgiが動いた...
やっとこさsinatraのサンプルが手元で動いた。
kog@ubu1:/usr/local/lib/ruby/gems/1.8/gems/rack-0.9.1/lib/rack$ gem18 list | grep -e rack -e sinatra rack (1.0.0, 0.9.1, 0.9.0, 0.4.0) sinatra (0.9.1.1)
#!/usr/local/bin/ruby18 require 'rubygems' require 'sinatra' set :run, false set :environment, :cgi get '' do <<-END <pre> #{$LOAD_PATH.join("\n").to_s} </pre> END end Rack::Handler::CGI.run Sinatra::Application
/usr/local/lib/ruby/gems/1.8/gems/rack-0.9.1/bin /usr/local/lib/ruby/gems/1.8/gems/rack-0.9.1/lib /usr/local/lib/ruby/gems/1.8/gems/sinatra-0.9.1.1/bin /usr/local/lib/ruby/gems/1.8/gems/sinatra-0.9.1.1/lib /usr/local/lib/ruby/site_ruby/1.8 /usr/local/lib/ruby/site_ruby/1.8/i686-linux /usr/local/lib/ruby/site_ruby /usr/local/lib/ruby/1.8 /usr/local/lib/ruby/1.8/i686-linux . /usr/local/lib/ruby/gems/1.8/gems/rack-0.9.1/lib
kog@ubu1:/usr/local/lib/ruby/gems/1.8/gems/rack-0.9.1/lib/rack$ diff -u request.rb.orig request.rb --- request.rb.orig 2009-04-26 10:38:49.000000000 +0900 +++ request.rb 2009-04-26 10:27:29.000000000 +0900 @@ -113,7 +113,10 @@ Utils::Multipart.parse_multipart(env) @env["rack.request.form_vars"] = @env["rack.input"].read @env["rack.request.form_hash"] = Utils.parse_query(@env["rack.request.form_vars"]) - @env["rack.input"].rewind if @env["rack.input"].respond_to?(:rewind) + begin + @env["rack.input"].rewind if @env["rack.input"].respond_to?(:rewind) + rescue Errno::ESPIPE + end end @env["rack.request.form_hash"] else
rack 1.0.0は入れたのだけど、なんで使わんのだろうか?
参考:
_ さくらインターネットでsinatra
やっと動いた... はまりポイントとしては.htaccessのsetenvが利かないということで、スクリプトだけでなんとかしてみる。
#!/usr/local/bin/ruby -I/home/bangbangshoot/local/lib ENV['GEM_HOME'] = '/home/bangbangshoot/local/rubygems' require 'rubygems' require 'sinatra' set :run, false set :environment, :cgi get '' do <<-END <pre> #{$LOAD_PATH.join("\n").to_s} </pre> END end Rack::Handler::CGI.run Sinatra::Application
RUBYLIB相当のを -I で指定し、GEM_HOMEを1行目に。
さくらインターネットでも setenv しろ、的なものは見かけたのだけど、私の使ってるホストでは利かない模様。まあ、サービスも複数あるし、サーバの世代もあるだろうし。
_ さくらインターネットでsinatra 2
いや、こっちのほうがいいかも
#!/usr/local/bin/ruby $LOAD_PATH.unshift '/home/bangbangshoot/local/lib' ENV['GEM_HOME'] = '/home/bangbangshoot/local/rubygems'