2011-12-18 28 views
7

Trình khởi tạo trong ứng dụng Rails có chạy mỗi khi có ai đó truy cập trang web không?Tần suất các trình khởi tạo chạy trong Rails?

Ví dụ: nếu máy chủ của tôi bắt đầu ở Texas lúc 10 giờ sáng và một người nào đó truy cập trang web của tôi từ New York lúc 1 giờ chiều. và một người nào đó đến từ Los Angeles lúc 10 giờ sáng, các nhà khởi tạo trong một ứng dụng đường ray có chạy khi những người đến từ New York và Los Angeles truy cập hay những người khởi chạy chỉ chạy khi tôi khởi động máy chủ ở Texas?

Lý do tôi hỏi là vì tôi đang sử dụng biểu thức chữ hoa trong tệp khởi tạo để thay đổi cài đặt email tùy thuộc vào thời gian trong ngày mà ứng dụng được truy cập. Điều này sẽ chỉ có ý nghĩa tất nhiên nếu initializers chạy khi ai đó truy cập vào trang web. Nếu chúng chỉ chạy khi máy chủ được khởi động thì nó sẽ chỉ là một trường hợp ...

Nếu đó không phải là nơi thích hợp để thực hiện, hoặc nếu khởi chạy chỉ chạy khi máy chủ được khởi động ở Texas (ví dụ) thì bạn sẽ đặt mã này ở đâu?

case 

    when Time.now.hour == 0 


    ActionMailer::Base.smtp_settings = { 
     :user_name => "[email protected]", 
     :password => "blahblah", 
     :address => "smtp.examplel.com", 
     :port => 25, 
     :tls => true 
    } 

    when Time.now.hour == 1 

    ActionMailer::Base.smtp_settings = { 
     :user_name => "[email protected]", 
     :password => "eatshit", 
     :address => "smtp.example.com", 
     :port => 25, 
     :tls => true 
    } 

end 

Trả lời

6

Trình khởi chạy được tải bất cứ khi nào bạn khởi động hành khách/mongrel hoặc bất kỳ thứ gì bạn đang sử dụng.

Để thiết lập các thiết lập khi chạy hãy nhìn vào Rails: Runtime configuration of ActionMailer?

13

Một câu trả lời rất đơn giản và thẳng là: Chỉ cần một lần, khi máy chủ của bạn đá lên.

Bạn có thể bị xâm nhập trong bài viết này The Rails Initialization Process

Các vấn đề liên quan