2011-01-31 15 views
13

私は、dev/test環境で基本的にすべてのアプリケーション用のシンウェブサーバーを実行します。 MongrelをRails 2.xと一緒に使用したとき、私が入力しなければならなかったのはscript/serverだったので、私が選んだWebサーバを動かすことができました。しかし、Rails 3では毎回Thinを指定する必要があります。 rails s thinの代わりにrails sと入力するだけで、RailsアプリケーションでThinを実行する方法はありますか?Rails 3.0.xがデフォルトでThinを使用する方法はありますか?

答えて

0

あなたのアプリがあるディレクトリにthinをインストールして、シン・スタートを実行してください。完璧にここで動作します。 :)

http://www.softiesonrails.com/2008/4/27/using-thin-instead-of-mongrelを使用して、必要に応じて変更することができます。 (私が使ったもの)

+1

アップデートとして、thin -V startは、各接続から端末に出力が表示されている場所で、通常はrailsサーバーを起動したときに表示される動作を模倣します。 – ddd

+2

それはクールです。レールは薄いスタートを走らせるものは何もない? – tubbo

21

これは可能です。

rails sコマンドは、1日の終わりに動作しますが、これはRackに落ちてサーバーを選択させることです。デフォルトではRackハンドラはmongrelを使用しようとし、mongrelが見つからない場合はwebrickとなります。ハンドラを少し修正するだけです。パッチをrailsスクリプト自体に挿入する必要があります。あなたがしていることは次のとおりです。script/railsファイルを開けてください。デフォルトでは、次のようになります。

#!/usr/bin/env ruby 
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application. 

APP_PATH = File.expand_path('../../config/application', __FILE__) 
require File.expand_path('../../config/boot', __FILE__) 
require 'rails/commands' 

我々は右require 'rails/commands'ラインになる前に、当社のパッチを挿入します。私たちの新しいファイルには、次のようになります。それは今雑種をしようとするとがある場合は、エラーが薄いためにしようとするだけにしてWEBrickに一緒に行くことを

#!/usr/bin/env ruby 
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application. 

APP_PATH = File.expand_path('../../config/application', __FILE__) 
require File.expand_path('../../config/boot', __FILE__) 
require 'rack/handler' 
Rack::Handler.class_eval do 
    def self.default(options = {}) 
    # Guess. 
    if ENV.include?("PHP_FCGI_CHILDREN") 
     # We already speak FastCGI 
     options.delete :File 
     options.delete :Port 

     Rack::Handler::FastCGI 
    elsif ENV.include?("REQUEST_METHOD") 
     Rack::Handler::CGI 
    else 
     begin 
     Rack::Handler::Mongrel 
     rescue LoadError 
     begin 
      Rack::Handler::Thin 
     rescue LoadError 
      Rack::Handler::WEBrick 
     end 
     end 
    end 
    end 
end 
require 'rails/commands' 

お知らせ。今度はrails sと入力すると、私たちは後の動作を取得します。 script/rails

1

次は同様に動作します:Railsの3.2rc2のよう

APP_PATH = File.expand_path('../../config/application', __FILE__) 
require File.expand_path('../../config/boot', __FILE__) 

require 'rack/handler' 
Rack::Handler::WEBrick = Rack::Handler::Thin 

require 'rails/commands' 
関連する問題