Tôi đang cố gắng để Apache diễn giải các tệp Ruby của mình nhưng tôi không hiểu cách thực hiện. Tôi không quan tâm đến Rails ngay bây giờ, chỉ có Ruby. Những gì tôi tìm thấy bởi Googling chỉ làm tôi bối rối. Có lời khuyên nào không?
Tôi đang cố gắng để Apache diễn giải các tệp Ruby của mình nhưng tôi không hiểu cách thực hiện. Tôi không quan tâm đến Rails ngay bây giờ, chỉ có Ruby. Những gì tôi tìm thấy bởi Googling chỉ làm tôi bối rối. Có lời khuyên nào không?
Câu trả lời:
Cách phổ biến nhất để chạy mã ruby trong môi trường máy chủ web là sử dụng mã thực hiện giao diện rack. Đây là một API rất đơn giản cho phép máy chủ web nói chuyện với ứng dụng ruby của bạn. Đối với Apache, trình xử lý rack phổ biến nhất là hành khách (hay còn gọi là mod_rails và mod_rack). Hầu như tất cả các khung web ruby hiện tại (như đường ray, sinatra, cắm trại, ...) kết nối với máy chủ web bằng trình xử lý rack. Bạn có thể sử dụng một trong các khung đó, nhưng bạn cũng có thể viết các ứng dụng rack trực tiếp mà không cần các khung đó. Tất cả các máy chủ ứng dụng ruby (mongrel, mỏng, kỳ lân, cầu vồng, ...) đều thực hiện giao diện rack.
Một cách khác là sử dụng (f) cgi, nhưng tôi khuyên bạn nên tránh xa tuyến đường đó, vì giao diện và giao thức rất khó xử và không thực sự cung cấp các phương tiện quản lý hiện đại.
Tôi đã cố gắng tìm câu trả lời đơn giản cho câu hỏi này một thời gian và nhận ra tất cả những gì bạn phải làm là đặt tập lệnh ruby vào thư mục cgi-bin của máy chủ web của bạn và tải URL tương ứng. Vì vậy, ví dụ, trong CentOS 6.2 mặc định của tôi / httpd cài đặt, tôi đặt một kịch bản gọi là hello.rb trong / var / www / cgi-bin / và sau đó tải lên http: //localhost/cgi-bin/hello.rb trong tôi trình duyệt và nó đã thực thi tập lệnh và chỉ cho tôi những gì đã đi đến STDOUT (tức là từ đặt, v.v.).
Điều xảy ra ở đây là mỗi khi URL được tải, tập lệnh chạy hoàn toàn. Điều này không lý tưởng cho một máy chủ web có dung lượng lớn hoặc tốc độ rất quan trọng - vì vậy một cái gì đó như fastCGI giữ cho tập lệnh luôn chạy, nhưng bạn phải viết tập lệnh để xử lý điều đó.
Hy vọng rằng sẽ giúp.
Bạn có thể thực thi các tập lệnh ruby với cgi nhanh. Nhìn vào dự án fcgi để biết thêm thông tin.
Hãy thử modruby .
Invalid command 'RubyAddPath'
Đây có phải là một số điều bí truyền không ai từng làm? Tôi ngạc nhiên về việc Ruby làm việc với Apache khó như thế nào so với PHP.
AddHandler ruby-object .rbx
, LoadModule ruby_module /path/to/mod_ruby
, RubyRequire apache/ruby-run
, và RubyHandler Apache::RubyRun.instance
để httpd.conf
nên là đủ cho một cấu hình đơn giản.