2011-05-26 73 views

回答

3

Sprockets加載路徑中的每個資源都可以在運行時訪問。你可以看到在Rails中的負載路徑與

Rails.application.config.assets.paths

控制檯,您可以在初始化加載荷路徑:

Rails.application.config.assets.paths << your_load_path

默認情況下,在應用程序/資產/和供應商的所有資產/資產/自動加載。這些資產必須位於目錄內。資產/目錄中的文件本身未加載。

您可以通過訪問http://mydomain.com/assets/myscripts/hello.js加載位於apps/assets/javascripts/myscripts/hello.js的資產。

並置是一個單獨的問題。鏈輪將在加載路徑中查找您使用鏈輪requireprovide指令指定的資產,並從它們構建連接的文件。

1

似乎沒有一種簡單的方法來實現這一點。在Rails 3.1中,JavaScript和CSS文件現在連接成單個文件發送給瀏覽器。這是通過使用Sprockets庫來完成的。

實現此目的的機制涉及解析./app/assets/javascripts/application.js文件並查找將告訴Sprockets在哪裏查找相關文件的Sprockets指令。

新生成的Rails應用程序中的一個全新的application.js文件看起來像這樣:

// FIXME: Tell people that this is a manifest file, real code should go into discrete files 
// FIXME: Tell people how Sprockets and CoffeeScript works 
// 
//= require jquery 
//= require jquery_ujs 
//= require_tree . 

這些看起來像註釋JavaScript,但由鏈輪的指令,告訴它如何構建單一的應用程序處理。 js將被交付給客戶。您大概可以猜到,這是添加到JavaScript文件中的require_tree行。

似乎沒有關於Sprockets指令的大量文檔。但是,source code已有詳細記錄,並很好地解釋了可用的指令。

require_tree指令遞歸地包含app/assets/javascripts目錄中的所有文件。因此,您可以通過創建一個子目錄並將不希望包含在其中的文件放在那裏來實現您想要的目標。然後您可以將require_tree更改爲require_path

此替代方法是手動管理單獨包含在鏈輪中的文件,對每個必需的JavaScript文件使用require filename