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.rbclass ApplicationController < ActionController::Base
include RelativePath
end以上で、
こちらで紹介されている、RelativePathが便利
ただしいくつか問題発生
1javascript_include_tagの解決ができてない
<%= stylesheet_link_tag 'scaffold' %> <%= javascript_include_tag :defaults %>
2ユニットテスト実行時にエラーになる。
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