Ramaze.startに関するハマり所

知らないとハマると思います。Ramaze.start(Ramaze.startupの別名です) を呼び出す場所に注意!lib/ramaze.rb から引用。

    def startup options = {}
      runner_from_caller = caller[0][/^(.*?):\d+/, 1]
      runner = options.delete(:runner) || runner_from_caller

      if $0 == runner or options.delete(:force)
        Inform.info("Starting up Ramaze (Version #{VERSION})")
        SEEED.replace(runner)
        APPDIR.replace(File.dirname(File.expand_path(runner)))

        trait[:essentials].each do |obj|
          obj.startup(options)
        end
      else
        Global.startup(options)
      end
    end

となっているので、Ramaze.start を $0(実行中のRubyスクリプトの名前を表す文字列)以外の場所から呼び出す場合には、:force => true しないとサーバが立ち上がりません。Ramaze::Global.startup(options)は各種変数設定を行なうだけで、サーバを起動してくれないのです。start.rbが大きくなってきたから他のファイルに分割しようかなぁ、なんて時には是非ともお気をつけ下さい。

Rakefileから各種設定を取得する目的で start.rb を require する時には、サーバが立ち上がらないのでうまいコトいきます。これも覚えておきますと便利ではないでしょうか。