Tôi có một số middleware for announcing my application on the local network app using Bonjour, nhưng nó cũng thông báo dịch vụ khi Rails được gọi từ rake hoặc thông qua bàn điều khiển.Làm thế nào để xác định xem Rails đang chạy từ CLI, giao diện điều khiển hoặc máy chủ?
Tôi muốn loại trừ các trường hợp này và chỉ sử dụng phần mềm trung gian Bonjour khi Rails đang chạy dưới dạng máy chủ.
Cấu hình trung gian chấp nhận một proc để loại trừ middlewares dưới những điều kiện nhất định sử dụng một proc
:
config.middleware.insert_before ActionDispatch::Static, Rack::SSL, :exclude => proc { |env|
env['HTTPS'] != 'on'
}
Nhưng làm thế nào để xác định xem Rails được gọi từ CLI, giao diện điều khiển hoặc như một máy chủ?
Cảm ơn! Sử dụng điều này trong application.rb bên trong một khối "config.after_initialize do", và nó hoạt động hoàn hảo! –
Điều thú vị là, điều này chỉ hoạt động nếu các lệnh "rails s" hoặc "rails c" được gọi. Nếu bạn đang chạy máy chủ thông qua một lệnh khác (ví dụ: "unicorn_rails"), các hằng số này không bao giờ được xác định. Rails :: Server có vẻ như nó được định nghĩa là một phần của quá trình phân tích lệnh, mặc dù nó kế thừa từ :: Rack :: Server. –
Điều này không làm việc cho tôi với Rails 4 ngay cả với đường ray c. Tôi đang nhận Server và Console được định nghĩa trong giao diện điều khiển. –