2012-04-12 24 views
6

Tôi đang cố gắng xây dựng một công cụ Rails "quản trị phụ trợ". Giả sử Engine có tài sản sau đây:Quá tải nội dung trên các công cụ Rails: yêu cầu tệp tài sản đá quý phụ không thành công

ENGINE/app/assets 
├── javascripts 
│   └── railsyard 
│    ├── admin.js.coffee 
│    ├── admin_customizations.js.coffee 
... 

Trường hợp admin.js.coffee được yêu cầu admin_customizations.js.coffee, có nghĩa là, một tập tin rỗng sẵn sàng để được ghi đè bởi các ứng dụng Rails lưu trữ.

[ENGINE/app/assets/javascripts/my_engine/admin.js.coffee] 
#= require admin_customizations 
# ...some code... 

[ENGINE/app/assets/javascripts/my_engine/admin_customizations.js.coffee] 
# Override this empty file to add custom JS behaviour! 

Mọi thứ hoạt động tuyệt vời, cho đến khi tôi cố gắng để yêu cầu một số tài sản đến từ một viên ngọc thứ:

[APP/app/assets/javascripts/my_engine/admin_customizations.js.coffee] 
#= require modernizr # this line gets ignored 
alert "Foobar"  # this line works 

Các đá quý modernizr-rails là một sự phụ thuộc của các ứng dụng lưu trữ thay vì sau đó động cơ. Xin lưu ý rằng nếu tôi cố gắng yêu cầu modernizr từ tệp nội dung không ghi đè lên một số tệp nội dung động cơ, mọi thứ hoạt động trở lại.

Có cách nào để khắc phục tình huống này không?

+0

Có lợi thế nào đối với tệp ghi đè không? Ý tôi là, dev chỉ có thể thêm js của riêng mình. – thomasfedb

+0

có thể liên quan đến http://stackoverflow.com/questions/18261116/how-to-change-the-order-that-gems-are-loaded-from-within-one-of-the-gems – montrealmike

Trả lời

0

Tôi tin rằng tôi đã làm chính xác những gì bạn mô tả mà không gặp sự cố bạn nói.

Bạn chắc chắn không có điều gì khác xảy ra? Dòng yêu cầu nhận được bị bỏ qua không có ý nghĩa nhiều - sprockets nên bao gồm các tập tin cần thiết, hoặc nâng cao nếu nó không thể tìm thấy nó. Chỉ im lặng làm không có gì có vẻ không đúng.

Có thể bạn đang kích hoạt một lỗi trong sprockets hoặc đường ray tài sản sử dụng đường ống dẫn của nó - nhưng nhiều khả năng, có cái gì đó khác đang xảy ra.

Bạn chắc chắn bạn đã không vô tình cung cấp tệp 'modernizr.js` trống của riêng mình trong ứng dụng và/hoặc công cụ địa phương, vô tình ghi đè ý bạn muốn yêu cầu từ đá quý modernizr?

sprockets require dòng cần phải có trong các nhận xét đặt trước bất kỳ mã nào trong tệp, chúng phải nằm trong khối nhận xét sơ bộ ban đầu. điều đó có thể giúp bạn được không?

hoặc có thể điều gì đó khác không thực sự là những gì bạn nghĩ.

Tôi không thực sự sử dụng coffeescript bản thân mình, một cái gì đó kỳ lạ với coffeescript bằng cách nào đó?

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