2013-01-12 19 views
7

Tiêu đề cho biết tất cả.Rails 3.2.11 đột nhiên cần khởi động lại để 'thừa nhận' bất kỳ thay đổi nào trong bộ điều khiển?

Lưu ý rằng đây là không phải về thay đổi trong mô hình hoặc trình khởi tạo. Tôi có thể xóa một biến cá thể trong bộ điều khiển (giả sử @user) và sau đó tải lại chế độ xem và nó sẽ hoạt động - cho đến khi tôi khởi động lại máy chủ, trong trường hợp này, nó sẽ khiếu nại về biến đó là không.

Tôi đã làm việc bình thường và sau đó chuyển sang làm việc trên một bộ hoàn toàn khác nhau của bộ điều khiển và quan điểm và bây giờ nó xảy ra không có lý do gì.

Ứng dụng nằm trong môi trường phát triển.

nội dung development.rb:

Dashboard::Application.configure do 
    config.cache_classes = false 
    config.whiny_nils = true 
    config.consider_all_requests_local  = true 
    config.action_controller.perform_caching = false 
    config.action_mailer.raise_delivery_errors = false 
    config.active_support.deprecation = :log 
    config.action_dispatch.best_standards_support = :builtin 
    config.assets.compress = false 
    config.assets.debug = true 
end 

Làm thế nào tôi có thể tìm hiểu làm thế nào nó đang xảy ra và làm thế nào để sửa chữa nó?

Edit: ** Nó có khả năng liên quan, nhưng tôi dường như không thể sử dụng bất kỳ đường dẫn mà tồn tại khi chạy 'đường cào' trong một phần, chẳng hạn như dashboards_path **

Lô xoắn: thêm

config.reload_classes_only_on_change = false 

để development.rb dường như đã cải tạo vấn đề này. Tôi vẫn muốn biết tại sao nó lại xảy ra, tại sao nó lại xảy ra từ màu xanh và tại sao nó lại xảy ra với một bộ điều khiển nhưng không phải là điều khiển khác.

+1

Chỉ cần làm rõ, đây là sử dụng WEBrick? – bdares

+0

Tôi đang chạy Thin vào lúc này. –

+0

Chỉ cần thử nghiệm nó ra - chuyển sang WEBrick đã không tạo ra sự khác biệt. –

Trả lời

1

Rails sử dụng các đường dẫn autoload cấu hình để xác định những tập tin để tải tự động, và tải lại:

module YourApp 
    class Application < Rails::Application 
    config.autoload_paths += %W(#{config.root}/lib #{config.root}/lib/**/ #{config.root}/app/traits) 

    ... 

    end 
end 

Như bạn có thể thấy tôi đã thêm một thư mục tùy chỉnh, thư mục app/đặc điểm, nơi tôi lưu trữ một số module xác định hành vi được chia sẻ.

Nếu bộ điều khiển bạn bắt đầu làm việc nằm trong thư mục phụ không được theo dõi bởi đường ray hoặc có quyền ngăn chặn đường ray gắn kèm hệ thống tệp, thay đổi sự kiện bạn gặp sự cố này.

Lý do khiến config.reload_classes_only_on_change = false "giải quyết" sự cố là toàn bộ ứng dụng được tải lại trên mọi yêu cầu thay vì dựa vào việc phát hiện thay đổi đối với tệp.

Nhiều khả năng bộ điều khiển không nằm trong danh sách tệp đã xem và đó là lý do tại sao đường ray không tải lại nó khi thay đổi. Lý do chính xác tại sao nó không có trong danh sách có thể thay đổi và tôi cần thêm chi tiết về cấu trúc thư mục và cấu hình của ứng dụng trước khi tôi có thể đưa ra câu trả lời đúng ...

+0

Điều đó nghe có vẻ đúng.Vào thời điểm nó xảy ra khi nó bật ra tôi đã có một số vấn đề với thiết lập hid raid0 của tôi. Tôi đặt cược bạn rằng có một cái gì đó để làm với nó như không có vẻ như nó âm thanh. Có thể mất quyền truy cập vào thư mục hoặc một thứ gì đó. –

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