テスト実行環境と便利スクリプト

Railsには自動生成したアプリケーションディレクトリに「script/server」というテスト用のサーバの起動スクリプトが作成されています。
scirptディレクトリにはその他にも、benchmarker、generate、profiler、breakpointerなど開発に便利そうなスクリプトが置いてありました。
これらはカスタマイズすることも可能ですし、このような開発を助けるスクリプトがアプリケーションごとに、コピーされているというアプローチがなかなかおもしろいと思いました。Javaでいうmainを持つクラスなどと比べて、物理的にファイルがあるので、実行できるスクリプト名が明確なのが良いと思います。
しかし、これらのファイルにはなんで拡張子(.rb)がついていないんでしょうか?

webrick_server.rb

上記の「script/server」は「webrick_server」を利用していました。

webrick_server.rb

# Donated by Florian Gross

require 'webrick'
require 'cgi'
require 'stringio'

include WEBrick

ABSOLUTE_RAILS_ROOT = File.expand_path(RAILS_ROOT)

ActiveRecord::Base.threaded_connections = false

class CGI
...
end

class DispatchServlet < WEBrick::HTTPServlet::AbstractServlet
...
def service(req, res)
...
end
...
end

このファイルを見て、分かったこと、分からなかったこと。

  • webrick_server.rbは「(Rubyのインストールディレクトリ)/lib/ruby/gems/1.8/gems/rails-0.13.1/lib」
    • rubygemsでインストールしたものは、ここに入るみたい。
    • 疑問?:Javaでいうところのクラスパスはどうなっているんでしょうかね。rubygemsが解決?
  • 一つのファイルにいくつものクラスを書いてもオッケー
  • WEBrick::HTTPServlet::AbstractServlet・・・Servlet?Why?Rubyなのに。
  • 当たり前だけど、JARのようなバイナリと違ってスクリプトなので、いつでもrailsソースコード読み放題。小さいことだけど、意外とでかい。

Rails で作ったアプリケーションはどういう環境で動かすのが一般的なの?

メモ。http://d.hatena.ne.jp/naoya/20050828/1125201739

僕は Rails のところで、Rails で作ったアプリケーションはどういう環境で動かすのが一般的なの? mod_ruby みたいなのを使うの? という質問をしました。前々からすごい気になってて、質問で積年の疑問が解消されてすっきりしました。答えとしては FastCGI、mod_rubylighttpd、みたいな感じ。