サイトのさまざまな機能領域に適切な JS ファイルのみを提供するために、多数の異なるマニフェスト ファイルが必要ですが、現在、マニフェストが次のようになるように、各ファイルで JS ファイル名とバージョン番号を複製する必要があります。
libs.js
//= require json2
//= require underscore-1.3.1
//= require jquery
//= require jquery-ui-1.8.17.custom.min
//= require jquery_ujs
//= require farbtastic-1.3u.gizmos
//= require bootstrap-2.0.1
//= require highstock-1.1.4.src
//= require exporting-1.1.4.src
//= require modernizr-2.5.3
//= require application
//= require validation
//= require navigation
//= require styles
libs-embedded.js
//= require json2
//= require jquery
//= require highstock-1.1.4.src
//= require exporting-1.1.4.src
これらのマニフェスト ファイルをこれらの .js.erb に相当するものに変更することで、これを修正しようとしました。
libs.js
<%= ManifestHelper.require_json2%>
<%= ManifestHelper.require_underscore%>
<%= ManifestHelper.require_jquery%>
<%= ManifestHelper.require_jquery_ui%>
<%= ManifestHelper.require_jquery_ujs%>
<%= ManifestHelper.require_farbtastic%>
<%= ManifestHelper.require_bootstrap%>
<%= ManifestHelper.require_highstock%>
<%= ManifestHelper.require_exporting%>
<%= ManifestHelper.require_modernizr%>
<%= ManifestHelper.require_application%>
<%= ManifestHelper.require_validation%>
<%= ManifestHelper.require_navigation%>
<%= ManifestHelper.require_styles%>
libs-embedded.js
<%= ManifestHelper.require_json2%>
<%= ManifestHelper.require_jquery%>
<%= ManifestHelper.require_highstock%>
<%= ManifestHelper.require_exporting%>
ManifestHelper クラスには、次のようなメソッドが含まれています。
def self.require_underscore
'//= require underscore-1.3.1'
end
これは、多くのマニフェスト ファイルで使用されている JS ファイルとバージョン番号を 1 か所で管理できるようにすることを目的としています。
ただし、これを実行しようとすると、libs.js ファイルは次のようになります。
//= require json2
//= require underscore-1.3.1
//= require jquery
//= require jquery-ui-1.8.17.custom.min
//= require jquery_ujs
//= require farbtastic-1.3u.gizmos
//= require bootstrap-2.0.1
//= require highstock-1.1.4
//= require exporting-1.1.4
//= require modernizr-2.5.3
//= require application
//= require validation
//= require styles
//= require navigation;
これには 2 つの問題があります。まず、何らかの理由でセミコロンが導入されます。2 つ目は、生成された .js ファイルに //= requires ディレクティブで定義された連結された js ファイルが取り込まれていないことです。マニフェスト ファイルがディレクティブを読み込んだ後に発生します。
私の質問は...誰でもこの問題を解決する方法を提案したり、各マニフェストでjsファイルとバージョン番号の複製を停止するための代替ソリューションを提案したりできますか...
ありがとう、イアン