Tôi đang tạo ứng dụng Rails 3 nơi người dùng có thể chọn một trong số một số mẫu và xây dựng một trang web nhỏ. Tôi đang cố gắng khởi tạo tất cả các mẫu có sẵn khi ứng dụng bắt đầu. Về cơ bản đó là một tệp để tôi xác định tất cả, sau đó gọi Template.add(template)
cho mỗi một trong số chúng, do đó lưu trữ chúng trong @@templates
và tôi có thể truy cập chúng qua Template.find(name)
.Tải lại Rails 3 initializer trong chế độ phát triển
Vấn đề ở chế độ phát triển, trình khởi tạo tôi đã thực hiện cuộc gọi đến Template.add
đang được tải theo yêu cầu đầu tiên, sau đó bị xóa trên reload!
. Tôi đã đọc về config.to_prepare
, nhưng nó không phải đang làm việc cho tôi, rất có thể vì tôi yêu cầu các mẫu như thế này:
# template config at app/templates/template_name/template_name.rb
path = File.expand_path(Rails.root + 'app/templates')
Dir[File.join(path, '/*')].each do |template|
name = File.basename(template)
require File.join(path, name, "#{name}.rb")
end
tôi có thể làm gì để một trong hai lại những tập tin sau khi reload!
hoặc giữ chúng khỏi bị thùng rác ở tất cả? Ngoài ra, nếu bạn có một đề nghị cho một cách tốt hơn để xử lý này, tôi là tất cả các tai. Tôi vẫn nhận được chân của tôi với Rails, đặc biệt là liên quan đến công cụ cấu hình.
Tôi tạm thời tránh sự cố này bằng cách tải dữ liệu trong lớp. Cứu tôi khỏi tình trạng xấu xí, phi mô-đun này.
Tôi không chắc mình có câu hỏi của bạn. Vì vậy, chỉ là một gợi ý: tại sao bạn không tự động tải các tập tin của bạn? http: // hemju.com/2010/09/22/rails-3-quicktip-autoload-lib-directory-bao gồm-tất cả-thư mục con/ – apneadiving
Thiếu sự quen thuộc với quy trình, thực sự, nhưng nó không giải quyết được vấn đề của tôi. Mô hình Mẫu được tải lại trên mọi yêu cầu (cache_classes = false trong phát triển) và tệp mẫu của tôi sẽ không được tải lại, do đó, yêu cầu thứ hai không có bất kỳ mẫu nào được "đăng ký" với mẫu Mẫu. – coreyward
Bạn có thể giải thích thêm một chút về lý do bạn cho rằng điều này không hiệu quả với to_prepare không? – johnmcaliley