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'
[ツッコミを入れる]