2011-01-05 34 views
5

Tôi có một ứng dụng đường ray tôi muốn sử dụng cho nhiều trang web, mỗi trang có các thiết kế khác nhau.Nhiều thư mục công cộng, cài đặt đường ray đơn

Tôi muốn thay đổi cài đặt đường ray/thư mục công khai thành một thứ khác (động cuối cùng). Tuy nhiên, tôi đã gặp sự cố (lỗi?) Đang thay đổi các thư mục ...

Trong tệp application.rb của mình, tôi thay đổi đường dẫn path.public thành một thứ khác "công khai" (giả sử "site_one"). Đây là mã:

puts paths.public.paths 
paths.public = "site_one" 
puts paths.public.paths 

Hai lệnh "đặt" là để gỡ lỗi. Bây giờ chạy "rails s" và bạn sẽ thấy:

/home/macklin/app/public 
/home/macklin/app/site_one 

Điều này xác minh đường dẫn được thay đổi chính xác. Tuy nhiên, ngay sau đó, đường ray ném các lỗi sau (cho tôi biết nếu bạn cần đầy đủ các dấu vết):

Exiting 
/usr/lib/ruby/gems/1.8/gems/railties-3.0.3/lib/rails/paths.rb:16:in `method_missing': undefined method `javascripts' for #<Rails::Paths::Path:0x7f422bd76f58> (NoMethodError) from /usr/lib/ruby/gems/1.8/gems/actionpack-3.0.3/lib/action_controller/railtie.rb:47 

tôi đoán là nó không thể tìm thấy javascripts thư mục mặc dù nó đang ngồi rõ ràng trong thư mục "site_one" .

Có ai biết tại sao tôi nhận được điều này không?

Trả lời

2

Duh. Chỉ cần thêm 2 quy tắc cho stylesheets và javascripts (tôi đoán họ nhận được lau khi bạn thay đổi đường dẫn cha mẹ)

paths.public.stylesheets = "site_one/stylesheets" 
paths.public.javascripts = "site_one/javascripts" 
2

Tôi biết câu hỏi này là khá cũ, nhưng tôi nghĩ rằng tôi đã tìm thấy một câu trả lời cho điều này trong Rails 4.2.

Bạn chỉ đơn giản là phải đặt dòng này trong config/application.rb của bạn:

middleware.use ::ActionDispatch::Static, "#{Rails.root}/another_public_folder_name", index: 'index', headers: config.static_cache_control 

Điều này làm cho tất cả các file trong /another_public_folder_name để được phục vụ bởi Rails.

Đây là cách Rails sử dụng để thiết lập thư mục tiêu chuẩn /public. Tôi thấy nó kiểm tra các nguồn:

https://github.com/rails/rails/blob/52ce6ece8c8f74064bb64e0a0b1ddd83092718e1/railties/lib/rails/application/default_middleware_stack.rb#L24

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