Are you using YUI Loader with Rails and config.action_controller.asset_host = "http://asset%d.site.com" to distribute your assets? Unhappy with YUI Loader because it has no idea about Rails asset_host? Not anymore!
In your HTML layout:
<script type="text/javascript" charset="utf-8">
var assetHost = <%= controller.asset_host.to_json %>;
</script>
and in your load procedure:
loader = new YAHOO.util.YUILoader();
loader.base = '/yui/';
// ...
if (!assetHost.empty()) {
loader.assetHosts = [0,1,2,3,4].collect(function (i) {return assetHost.replace("%d",i); });
}
loader._url = function(path) {
var u = this.base || "", f=this.filter;
u = u + path;
if (f) {
u = u.replace(new RegExp(f.searchExp), f.replaceStr);
}
if (loader.assetHosts && loader.assetHosts.length > 0) {
this.assetCounter = this.assetCounter || 0;
if (this.assetCounter > this.assetHosts.length - 1) {
this.assetCounter = 0;
}
u = loader.assetHosts[this.assetCounter] + u;
this.assetCounter++;
}
return u;
};
loader.require(...);
//...
Code is somewhat dirty and a kind of monkey patch, but works fine for me so far!





