2011-01-31 26 views
13

Tôi chạy máy chủ web mỏng về cơ bản mọi ứng dụng trong môi trường thử nghiệm/dev của tôi. Khi tôi sử dụng Mongrel với Rails 2.x, tất cả những gì tôi phải gõ là script/server để làm cho nó chạy máy chủ web mà tôi chọn. Nhưng với Rails 3, tôi phải chỉ định Thin mỗi lần. Có cách nào để có được Thin chạy trên các ứng dụng Rails của tôi bằng cách chỉ cần gõ rails s thay vì rails s thin?Có cách nào Rails 3.0.x có thể mặc định để sử dụng Thin không?

Trả lời

0

Chỉ cần cài đặt mỏng, cd vào thư mục mà ứng dụng của bạn đang chạy và chạy khởi động mỏng. Hoạt động hoàn hảo ở đây. :)

Bạn có thể sử dụng http://www.softiesonrails.com/2008/4/27/using-thin-instead-of-mongrel để thay đổi khi cần. (Cái mà tôi đã sử dụng)

+1

Là bản cập nhật, mỏng -V bắt đầu hoạt động để bắt chước hành vi bạn thường thấy khi bạn khởi động máy chủ đường ray, hay còn gọi là nơi bạn thấy đầu ra trong thiết bị đầu cuối từ mỗi kết nối. – ddd

+2

thật tuyệt. nhưng không có gì làm cho 'rails s' chạy' thin start'? – tubbo

21

Có thể thực hiện điều này.

Cách lệnh rails s hoạt động vào cuối ngày là bằng cách chuyển sang Rack và cho phép chọn máy chủ. Theo mặc định, trình xử lý Rack sẽ cố gắng sử dụng mongrel và nếu nó không thể tìm thấy mongrel nó sẽ đi với webrick. Tất cả những gì chúng ta phải làm là vá nhẹ trình xử lý. Chúng tôi sẽ cần chèn bản vá của chúng tôi vào chính kịch bản rails. Đây là những gì bạn làm, mở tập tin script/rails của bạn. Theo mặc định, nó sẽ trông giống như sau:

#!/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' 

Chúng tôi chèn bản vá của chúng tôi ngay trước vạch require 'rails/commands'. Tệp mới của chúng tôi sẽ trông giống như sau:

#!/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' 

Lưu ý rằng bây giờ nó sẽ thử Mongrel và nếu có lỗi, hãy thử Thin và chỉ sau đó đi với Webrick. Bây giờ, khi bạn nhập rails s, chúng tôi sẽ nhận được hành vi mà chúng tôi đang thực hiện.

1

Trong script/rails các công trình sau đây cũng như:

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' 
Các vấn đề liên quan