開発/テスト環境では、基本的にすべてのアプリに対して Thin Web サーバーを実行しています。Rails 2.x で Mongrel を使用したとき、入力する必要があっscript/server
たのは、選択した Web サーバーを実行させることだけでした。しかし Rails 3 では、毎回 Thin を指定する必要があります。rails s
の代わりに入力するだけで、Rails アプリで Thin を実行する方法はありますrails s thin
か?
4 に答える
ええ、これを行うことは可能です。
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'
。新しいファイルは次のようになります。
#!/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'
Mongrel を試すようになり、エラーが発生した場合は Thin を試してから Webrick を使用することに注意してください。入力rails s
すると、目的の動作が得られます。
Rails 3.2rc2 の時点で、Gemfile 内の を呼び出すと、デフォルトで thin が実行されるrails server
ようgem 'thin'
になりました! このプルリクエストに感謝します: https://github.com/rack/rack/commit/b487f02b13f42c5933aa42193ed4e1c0b90382d7
私にとってはうまくいきます。
以下script/rails
の作品でも同様です:
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'
アプリがあるディレクトリにシン cd をインストールし、シン スタートを実行するだけです。ここで完璧に動作します。:)
http://www.softiesonrails.com/2008/4/27/using-thin-instead-of-mongrelを使用して、必要に応じて変更できます。(私が使っていたものです)