«前の日(04-15) 最新 次の日(04-17)» 追記

これ日記なん?


2002-04-16(Tue) この日を編集

_ 今日の阪神

...負けてしまったようだ。残念。でもまだ首位!


2003-04-16(Wed) 17:30 - この日を編集

_ 今日は

疲れてしまったのでとっとと帰った。

_ 日韓戦

とりあえず見てたけど、最後の永井のゴールで会場がしーんとなったのにはびっくり。いや、観客のほうがびっくりしたんだろうけどさ。


2005-04-16(Sat) この日を編集

_ [Ruby] artonさんを囲む会

2次会にて邪道編にサインを戴きました。きゃー。

しかし、あおきさんのサインをもらいそこねたな...次回チャンスはあるだろうか。あとレシピブックに高橋さんのサインも戴かないと。


2006-04-16(Sun) この日を編集

_ [Rails]Ajp-Railsを試す

以下の環境で試して動いたヽ(´ー`)ノ

  • ruby1.8.4(ASR1.8.4.0)
  • ajp-rails (0.1.0)
  • Apache2.0.55(win32)
  • mod_jk(1.2.15)
  • rails(rev 4206)

インスコ

> gem install ajp-rails -y

httpd.conf

include "c:/home/www/conf.d/*.conf"

mod_jk.conf

<IfModule !mod_jk.c>
  LoadModule jk_module "C:/Program Files/Apache Group/Apache2/modules/mod_jk.so"
  JkWorkersFile "c:/home/www/conf.d/workers.properties"
  JkLogFile "c:/home/www/logs/mod_jk.log"
  JkLogLevel info
  JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
  JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
  JkRequestLogFormat "%w %V %T"

  JkMount /ajp-mounted/* ajprails
</IfModule>
Alias /todo "c:/home/kog/prj/todo/public"
<Directory "c:/home/kog/prj/todo/public">
  Options ExecCGI FollowSymlinks
  AllowOverride All
</Directory>

workers.properties

# Comma separated worker names
worker.list=jkstatus,ajprails
# Definition for Ajp13 worker
#
worker.ajprails.type=ajp13
worker.ajprails.port=3009
worker.ajprails.host=localhost
worker.jkstatus.type=status

public/.htaccess

RewriteEngine On
RewriteBase /todo
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /ajp-mounted/$1 [QSA,L]
RewriteRule ^([^.]+)$ $1.html [QSA]
ErrorDocument 500 "<h2>Application error</h2>Rails application failed to start properly"

config/production.rb

ActionController::AbstractRequest.relative_url_root = '/todo'

config/ajp.yaml

host: localhost
port: 3009
location: /todo
prefix: /ajp-mounted
directory: "c:/home/kog/prj/todo"

パッチ(!)

--- ajp_rails_dispatcher.rb.orig	2006-04-15 23:58:12.904643200 +0900
+++ ajp_rails_dispatcher.rb	2006-04-16 02:30:28.410856000 +0900
@@ -15,18 +15,18 @@
       response = AjpRailsResponse.new
       prepare_application
       ActionController::Routing::Routes.recognize!(request).process(request, response)
-      ajp_req.output_cookies.each do |cookie|
-        if cookie.name == 'JSESSIONID'
-	  case cookie.value
-	  when String
-	    cookie.value << '.' << server_environments['LOAD_BALANCE_ID']
-	  when Array
-	    cookie.value.each do |item|
-	      item << '.' << server_environments['LOAD_BALANCE_ID']
-	    end
-	  end
-	end
-      end
+#      ajp_req.output_cookies.each do |cookie|
+#        if cookie.name == 'JSESSIONID'
+#	  case cookie.value
+#	  when String
+#	    cookie.value << '.' << server_environments['LOAD_BALANCE_ID']
+#	  when Array
+#	    cookie.value.each do |item|
+#	      item << '.' << server_environments['LOAD_BALANCE_ID']
+#	    end
+#	  end
+#	end
+#      end
       response.to_ajp_response(ajp_req.output_cookies)
     rescue Object => exception
       puts exception.message + ":" + exception.backtrace.join("\n")

最後のパッチはどうしても下の状況が解決できなかったので無理やり。mod_jk初めてなので何がどういかんのかがわかりませんでした。orz

C:\home\kog\prj\todo>ajp-rails -c config/ajp.yaml
processing /ajp-mounted/task
can't convert nil into String:c:/ruby/lib/ruby/gems/1.8/gems/ajp-rails-0.1.0/lib
/ajp-rails/ajp_rails_dispatcher.rb:25:in `<<'
c:/ruby/lib/ruby/gems/1.8/gems/ajp-rails-0.1.0/lib/ajp-rails/ajp_rails_dispatche
r.rb:25:in `dispatch'
c:/ruby/lib/ruby/gems/1.8/gems/ajp-rails-0.1.0/lib/ajp-rails/ajp_rails_dispatche
r.rb:24:in `dispatch'
c:/ruby/lib/ruby/gems/1.8/gems/ajp-rails-0.1.0/lib/ajp-rails/ajp_rails_dispatche
r.rb:18:in `dispatch'
c:/ruby/lib/ruby/gems/1.8/gems/ajp-rails-0.1.0/lib/ajp-rails/rails-runner.rb:38:
in `process_request'
c:/ruby/lib/ruby/gems/1.8/gems/ruby-ajp-0.2.1/lib/net/ajp13/server.rb:171:in `pr
ocess_forward_request'
c:/ruby/lib/ruby/gems/1.8/gems/ruby-ajp-0.2.1/lib/net/ajp13/server.rb:145:in `pr
ocess'
c:/ruby/lib/ruby/gems/1.8/gems/ruby-ajp-0.2.1/lib/net/ajp13/server.rb:138:in `pr
ocess'
c:/ruby/lib/ruby/gems/1.8/gems/ruby-ajp-0.2.1/lib/net/ajp13/server.rb:103:in `st
art'
c:/ruby/lib/ruby/gems/1.8/gems/ruby-ajp-0.2.1/lib/net/ajp13/server.rb:100:in `st
art'
c:/ruby/lib/ruby/gems/1.8/gems/ajp-rails-0.1.0/lib/ajp-rails/rails-runner.rb:185

c:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.3.1/lib/active_support/dependenci
es.rb:140:in `load'
c:/ruby/lib/ruby/gems/1.8/gems/ajp-rails-0.1.0/bin/ajp-rails:4
c:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.3.1/lib/active_support/dependenci
es.rb:140:in `load'
c:/ruby/bin/ajp-rails:18
processed /ajp-mounted/task: 200 OK

無理やりパッチしたところ、どうにかしたいなあ。

これで、fastcgi, scgi, ajpと3つ常駐させる技法が使えるようになった(と言い切れないか^^;)ので、かなり安心。特にajpについてはmod_jkのメンテナンスが期待できそうなので安心感がある。うまくやればIISとの連携でもいけるかもしれない。先にmod_rewriteをなんとかしなきゃなんないか。

あと、今回実験に使ったアプリがrailsのtrunkを参照してるので、rails1系でも試してみよう。