Tôi có một đoạn mã khởi tạo tương đối nhỏ mà tôi muốn chạy bất cứ khi nào rails server
chạy, nhưng không phải khi tôi chạy rails generate
, rails console
hoặc bất kỳ lệnh rails khác (bao gồm các nhiệm vụ cào yêu cầu tác vụ môi trường). Đoạn mã này trước lấp đầy một số bộ nhớ đệm và là tương đối đắt tiền vì vậy tôi thực sự không muốn nó chạy trên bất cứ điều gì nhưng rails s
Rails 3 initializers chỉ chạy trên `rails server` chứ không phải` rails generate`, vv
Giải pháp mà không đạt yêu cầu:
Foreman et al. sẽ có nghĩa là nó sẽ chạy trên một tiến trình khác (a) trên đầu trang cho đoạn mã nhỏ đó, (b) yêu cầu truyền thông interprocess thay vì cách tiếp cận đơn giản trong bộ nhớ được tạo bởi bộ khởi tạo.
Trên máy chủ tôi đã giải quyết vấn đề này bằng cách định cấu hình hành khách chuyển một biến môi trường đặc biệt thành đường ray, cho biết nó đang chạy trong ngữ cảnh máy chủ. Tuy nhiên tôi muốn nó nếu có thể làm việc ra khỏi hộp trên tất cả các máy của nhà phát triển mà không cần nhớ để chạy máy chủ đường ray theo cách cũng sẽ cung cấp biến môi trường đó (ví dụ: IN_SERVER=true rails server
).
Câu hỏi này luôn được hỏi trước khi chạy trình khởi tạo khi chạy trong rails server
và không ở số rake
. Tuy nhiên tôi muốn nó chạy đặc biệt chỉ trong khởi tạo máy chủ - sửa chữa cho rake là tuyệt vời nhưng không phải là toàn diện.
Tôi thích nó rất nhiều, vì vậy cái gì đó như '$ IN_SERVER = true nếu argv [0] == 'server'' trong kịch bản/đường ray là một giải pháp tuyệt vời. –
Tôi không chắc chắn rằng hành khách khởi động Rails với 'script/rails'. Có ai thực sự có phương pháp này để làm việc với hành khách không? – jordanpg