iRSSの日記

はてなダイアリーiRSSの日記の続き

Railsの複数のアプリケーションを同時に動かす

apacheをproxyとして、railsアプリを呼び出すようにした。

  • プロクシの設定
    ProxyPass /hoge http://localhost:3000
    ProxyPassReverse /hoge http://localhost:3000

これで、http://localhost/hoge
とすると、http://localhost:3000で動作中のRailsアプリにつながる。WEBRickで動作している。

  • Railsのパス解決のためにRelative path pluginを導入

Relative Path プラグインを使う場合は、次の手順に従います。

> script/plugin install http://opensvn.csie.org/relative_path/trunk/
> mv vendor/plugins/trunk/ vendor/plugins/relative_path/
> emacs -nw app/controllers/application.rb

class ApplicationController < ActionController::Base
include RelativePath
end

以上で、

こちらで紹介されている、RelativePathが便利


ただしいくつか問題発生
javascript_include_tagの解決ができてない

<%= stylesheet_link_tag 'scaffold' %>
<%= javascript_include_tag :defaults %>

ユニットテスト実行時にエラーになる。
server_softwareがnilなのに、include?をよぼうとして、エラーになる。
module RelativePathのActionController::AbstractRequest#relative_url_rootに問題

      when server_software.include?("lighttpd")
        File.dirname(@env["SCRIPT_NAME"].to_s)

修正後

      when server_software.to_s.include?("lighttpd")
        File.dirname(@env["SCRIPT_NAME"].to_s)


3まったく解決できなくなる、環境がある。

Rails実行環境のためだけにサブドメインを増やすのが面倒だったので、Relative path pluginを導入して、application.rbに、include RelativePathを記述した。

すると、link_toやstart_form_tagの生成するリンク先が、引数に指定されているactionではなく、link_toやstart_form_tag自体が記述されているactionになってしまい、他のactionに遷移できないという現象が発生した。

stylesheetへのリンクは正しく生成されていたので、url_for周りで何か起こっているのではないかと推測し、puts文デバッグ(我ながら最低のやり方だ)でひたすら動作を追っていくと、RelativePath#url_forにおいてsuperを呼び出している箇所から、ActiveRecord::Base#url_forに引数が正しく渡されていないことが判明した。

同様の現象がおきた。
問題がおこった環境はこちら↓

>ruby -v
ruby 1.8.4 (2006-04-14) [i386-mswin32]

>ruby script\about
About your application's environment
Ruby version                 1.8.4 (i386-mswin32)
RubyGems version             0.8.11
Rails version                1.1.6
Active Record version        1.14.4
Action Pack version          1.12.5
Action Web Service version   1.1.6
Action Mailer version        1.2.5
Active Support version       1.3.1
Application root             C:/Documents and Settings/funami/user/wpe
Environment                  development
Database adapter             mysql
Database schema version      5



↓こちらの環境は正常に動いたのですが

$ ruby -v
ruby 1.8.4 (2005-12-24) [i686-linux]
$ ruby ./script/about
About your application's environment
Ruby version                 1.8.4 (i686-linux)
RubyGems version             0.8.11
Rails version                1.1.6
Active Record version        1.14.4
Action Pack version          1.12.5
Action Web Service version   1.1.6
Action Mailer version        1.2.5
Active Support version       1.3.1
Application root             /home/****/
Environment                  development
Database adapter             mysql
Database schema version      5