Sau khi triển khai ứng dụng Rails 2.3.x -> 3.1 (rc4) được nâng cấp lên môi trường thử nghiệm của chúng tôi chiều nay, tất cả các tệp định kiểu và tệp JavaScript của chúng tôi đều trả về lỗi 404. Chúng tôi đã thêm các tài sản rake: biên dịch trước nhiệm vụ của kịch bản hậu triển khai của chúng tôi và mất một thời gian để xác định lý do tại sao thư mục tài sản không có các tệp được biên dịch trước mà chúng tôi mong đợi.Đường ray 3.1 đường dẫn nội dung - thiếu tệp từ công khai/nội dung - tại sao đây không phải là mặc định?
Cuối cùng, các tệp không được biên dịch vì dường như chỉ các tệp application.css và application.js (+ non JS/CSS) được xử lý theo mặc định.
Chúng tôi cần phải thay đổi giá trị cấu hình sau đây như sau:
config.assets.precompile += %w(*.js *.css)
Câu hỏi: tại sao không phải là này mặc định?
Tôi đã dự kiến rằng mọi thứ không cần thiết để xử lý dưới dạng tệp kê khai sẽ chỉ được sao chép vào công khai/tài sản. Phần lớn những gì tôi đã đọc trên đường ống nội dung về cơ bản là "gắn tài sản của bạn vào ứng dụng/tài sản, định cấu hình tệp kê khai và nó chỉ hoạt động". Kể từ khi các tài sản: nhiệm vụ biên dịch trước đã không tiết lộ bất kỳ thông tin về những gì nó đã làm, phải mất một thời gian để xác định rằng nó chỉ là không nhìn vào các tập tin, chúng tôi nghĩ rằng nó sẽ.
Có bất kỳ lý do nào khiến đây không phải là một giá trị tốt cho cấu hình biên dịch trước không?
Cảm ơn!
Cảm ơn, Chris, đã trả lời. Tôi hiểu rằng việc cắt giảm các yêu cầu HTTP về hiệu quả là rất có ý nghĩa, nhưng tôi nghĩ hầu hết các ứng dụng đều có CSS được phân đoạn thành ít nhất các bảng định kiểu nội bộ/bên ngoài và các tệp JavaScript mô-đun. Nó chỉ có vẻ như một sự thay đổi thực sự từ cách mà phần còn lại của khung Rails đề cập đến mọi thứ, nhưng dựa trên các giá trị mặc định, nó chắc chắn xuất hiện mà phải là suy nghĩ. – shedd
Vâng, người ta chắc chắn sẽ muốn cắt các tệp của họ thành các tệp mô-đun. Ý tưởng là app.js và application.css có "bao gồm" kéo tất cả javascript và css cụ thể vào các thư mục đó (nếu bạn nhìn vào các tệp đó, bạn sẽ tìm thấy chỉ thị 'require_tree.' mọi thứ trong thư mục đó và tất cả đều là trẻ em). –
Hầu hết các ứng dụng Rails thực sự không có CSS được phân đoạn thành các bảng định kiểu khác nhau - ít nhất là được phân phối tới máy khách. CSS nguồn (và JS) riêng biệt được biên dịch thành một application.css (hoặc .js) tổng hợp theo đường ống nội dung. Tuy nhiên, tôi có xu hướng đồng ý với bạn về những gì Rails mặc định là - nếu (* .js * .css) là mặc định, nó vẫn hoạt động tốt hoặc cách được đề xuất để thực hiện, nhưng cũng sẽ hoạt động những gì bạn đang cố gắng làm. Tôi nghĩ các phiên bản trước của Rails thực sự đã hoạt động như bạn đề nghị, nhưng họ đã thay đổi nó gần đây hơn, có lẽ vì những lý do tốt mà chúng tôi không nghĩ đến. – jrochkind