From 7ce0968a52a5bc013e49865205a8998881884c02 Mon Sep 17 00:00:00 2001 From: Connor Shea Date: Thu, 23 Jun 2016 10:33:38 -0600 Subject: [PATCH 1/7] Re-implement page-specific JS in a better way. This makes larger libraries more cacheable and will allow us to use SRI with the dynamically included libraries. --- app/assets/javascripts/application.js.coffee | 2 +- app/assets/javascripts/graphs/application.js.coffee | 1 - app/assets/javascripts/lib/chart/application.js.coffee | 1 + app/assets/javascripts/lib/d3/application.js.coffee | 1 + app/assets/javascripts/lib/raphael/application.js.coffee | 3 +++ app/assets/javascripts/users/application.js.coffee | 6 ------ app/views/layouts/_head.html.haml | 7 ++----- app/views/projects/graphs/_head.html.haml | 4 +++- app/views/projects/network/show.html.haml | 4 +++- app/views/users/show.html.haml | 4 +++- 10 files changed, 17 insertions(+), 16 deletions(-) create mode 100644 app/assets/javascripts/lib/chart/application.js.coffee create mode 100644 app/assets/javascripts/lib/d3/application.js.coffee create mode 100644 app/assets/javascripts/lib/raphael/application.js.coffee diff --git a/app/assets/javascripts/application.js.coffee b/app/assets/javascripts/application.js.coffee index 0206db461da..07b45eae9bb 100644 --- a/app/assets/javascripts/application.js.coffee +++ b/app/assets/javascripts/application.js.coffee @@ -50,7 +50,7 @@ #= require_directory ./ci #= require_directory ./commit #= require_directory ./extensions -#= require_directory ./lib +#= require_directory ./lib/. #= require_directory ./u2f #= require_directory . #= require fuzzaldrin-plus diff --git a/app/assets/javascripts/graphs/application.js.coffee b/app/assets/javascripts/graphs/application.js.coffee index 91f81a5d249..e0f681acf0b 100644 --- a/app/assets/javascripts/graphs/application.js.coffee +++ b/app/assets/javascripts/graphs/application.js.coffee @@ -4,5 +4,4 @@ # It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the # the compiled file. # -#= require Chart #= require_tree . diff --git a/app/assets/javascripts/lib/chart/application.js.coffee b/app/assets/javascripts/lib/chart/application.js.coffee new file mode 100644 index 00000000000..82217fc5107 --- /dev/null +++ b/app/assets/javascripts/lib/chart/application.js.coffee @@ -0,0 +1 @@ +#= require Chart diff --git a/app/assets/javascripts/lib/d3/application.js.coffee b/app/assets/javascripts/lib/d3/application.js.coffee new file mode 100644 index 00000000000..74f0a0bb06a --- /dev/null +++ b/app/assets/javascripts/lib/d3/application.js.coffee @@ -0,0 +1 @@ +#= require d3 diff --git a/app/assets/javascripts/lib/raphael/application.js.coffee b/app/assets/javascripts/lib/raphael/application.js.coffee new file mode 100644 index 00000000000..ab8e5979b87 --- /dev/null +++ b/app/assets/javascripts/lib/raphael/application.js.coffee @@ -0,0 +1,3 @@ +#= require raphael +#= require g.raphael +#= require g.bar diff --git a/app/assets/javascripts/users/application.js.coffee b/app/assets/javascripts/users/application.js.coffee index 647ffbf5f45..91cacfece46 100644 --- a/app/assets/javascripts/users/application.js.coffee +++ b/app/assets/javascripts/users/application.js.coffee @@ -1,8 +1,2 @@ -# This is a manifest file that'll be compiled into including all the files listed below. -# Add new JavaScript/Coffee code in separate files in this directory and they'll automatically -# be included in the compiled file accessible from http://example.com/assets/application.js -# It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the -# the compiled file. # -#= require d3 #= require_tree . diff --git a/app/views/layouts/_head.html.haml b/app/views/layouts/_head.html.haml index d5965a6ec99..bc3118f70aa 100644 --- a/app/views/layouts/_head.html.haml +++ b/app/views/layouts/_head.html.haml @@ -30,11 +30,8 @@ = javascript_include_tag "application", integrity: true - -# FIXME: SRI doesn't apply to the dynamically-generated per-page - -# JavaScript due to a bug in sprockets-rails. - -# See https://github.com/rails/sprockets-rails/issues/359 - - if page_specific_javascripts - = javascript_include_tag page_specific_javascripts, {"data-turbolinks-track" => true} + - if :page_specific_javascripts + = yield :page_specific_javascripts = csrf_meta_tags diff --git a/app/views/projects/graphs/_head.html.haml b/app/views/projects/graphs/_head.html.haml index a388d9a0a61..5ea4adcd0fa 100644 --- a/app/views/projects/graphs/_head.html.haml +++ b/app/views/projects/graphs/_head.html.haml @@ -1,7 +1,9 @@ .nav-links.sub-nav %ul{ class: (container_class) } - - page_specific_javascripts asset_path("graphs/application.js") + - content_for :page_specific_javascripts do + = javascript_include_tag 'lib/chart/application.js', {integrity: true, "data-turbolinks-track" => true} + = javascript_include_tag 'graphs/application.js', {integrity: true, "data-turbolinks-track" => true} = nav_link(action: :show) do = link_to 'Contributors', namespace_project_graph_path = nav_link(action: :commits) do diff --git a/app/views/projects/network/show.html.haml b/app/views/projects/network/show.html.haml index 593af319a47..749afe6b6ab 100644 --- a/app/views/projects/network/show.html.haml +++ b/app/views/projects/network/show.html.haml @@ -1,5 +1,7 @@ - page_title "Network", @ref -- page_specific_javascripts asset_path("network/application.js") +- content_for :page_specific_javascripts do + = javascript_include_tag 'lib/raphael/application.js', {integrity: true, "data-turbolinks-track" => true} + = javascript_include_tag 'network/application.js', {integrity: true, "data-turbolinks-track" => true} = render "projects/commits/head" = render "head" %div{ class: (container_class) } diff --git a/app/views/users/show.html.haml b/app/views/users/show.html.haml index 92305594a81..9ca351e5147 100644 --- a/app/views/users/show.html.haml +++ b/app/views/users/show.html.haml @@ -1,6 +1,8 @@ - page_title @user.name - page_description @user.bio -- page_specific_javascripts asset_path("users/application.js") +- content_for :page_specific_javascripts do + = javascript_include_tag 'lib/d3/application.js', {integrity: true, "data-turbolinks-track" => true} + = javascript_include_tag 'users/application.js', {integrity: true, "data-turbolinks-track" => true} - header_title @user.name, user_path(@user) - @no_container = true From 4cca9a3e0f388210883ea2e3be97e92ac0576b38 Mon Sep 17 00:00:00 2001 From: Connor Shea Date: Thu, 23 Jun 2016 10:55:40 -0600 Subject: [PATCH 2/7] Reorganize the lib directory. --- app/assets/javascripts/application.js.coffee | 2 +- .../lib/{chart/application.js.coffee => chart.js.coffee} | 0 .../javascripts/lib/{d3/application.js.coffee => d3.js.coffee} | 0 .../lib/{raphael/application.js.coffee => raphael.js.coffee} | 0 app/assets/javascripts/lib/{ => utils}/animate.js.coffee | 0 app/assets/javascripts/lib/{ => utils}/common_utils.js.coffee | 0 .../javascripts/lib/{ => utils}/datetime_utility.js.coffee | 0 .../javascripts/lib/{ => utils}/emoji_aliases.js.coffee.erb | 0 app/assets/javascripts/lib/{ => utils}/jquery.timeago.js | 0 app/assets/javascripts/lib/{ => utils}/md5.js | 0 app/assets/javascripts/lib/{ => utils}/notify.js.coffee | 0 app/assets/javascripts/lib/{ => utils}/text_utility.js.coffee | 0 app/assets/javascripts/lib/{ => utils}/type_utility.js.coffee | 0 app/assets/javascripts/lib/{ => utils}/url_utility.js.coffee | 0 app/assets/javascripts/lib/{ => utils}/utf8_encode.js | 0 app/assets/javascripts/network/application.js.coffee | 3 --- app/views/projects/graphs/_head.html.haml | 2 +- app/views/projects/network/show.html.haml | 2 +- app/views/users/show.html.haml | 2 +- 19 files changed, 4 insertions(+), 7 deletions(-) rename app/assets/javascripts/lib/{chart/application.js.coffee => chart.js.coffee} (100%) rename app/assets/javascripts/lib/{d3/application.js.coffee => d3.js.coffee} (100%) rename app/assets/javascripts/lib/{raphael/application.js.coffee => raphael.js.coffee} (100%) rename app/assets/javascripts/lib/{ => utils}/animate.js.coffee (100%) rename app/assets/javascripts/lib/{ => utils}/common_utils.js.coffee (100%) rename app/assets/javascripts/lib/{ => utils}/datetime_utility.js.coffee (100%) rename app/assets/javascripts/lib/{ => utils}/emoji_aliases.js.coffee.erb (100%) rename app/assets/javascripts/lib/{ => utils}/jquery.timeago.js (100%) rename app/assets/javascripts/lib/{ => utils}/md5.js (100%) rename app/assets/javascripts/lib/{ => utils}/notify.js.coffee (100%) rename app/assets/javascripts/lib/{ => utils}/text_utility.js.coffee (100%) rename app/assets/javascripts/lib/{ => utils}/type_utility.js.coffee (100%) rename app/assets/javascripts/lib/{ => utils}/url_utility.js.coffee (100%) rename app/assets/javascripts/lib/{ => utils}/utf8_encode.js (100%) diff --git a/app/assets/javascripts/application.js.coffee b/app/assets/javascripts/application.js.coffee index 07b45eae9bb..5c5a4ca7670 100644 --- a/app/assets/javascripts/application.js.coffee +++ b/app/assets/javascripts/application.js.coffee @@ -50,7 +50,7 @@ #= require_directory ./ci #= require_directory ./commit #= require_directory ./extensions -#= require_directory ./lib/. +#= require_directory ./lib/utils #= require_directory ./u2f #= require_directory . #= require fuzzaldrin-plus diff --git a/app/assets/javascripts/lib/chart/application.js.coffee b/app/assets/javascripts/lib/chart.js.coffee similarity index 100% rename from app/assets/javascripts/lib/chart/application.js.coffee rename to app/assets/javascripts/lib/chart.js.coffee diff --git a/app/assets/javascripts/lib/d3/application.js.coffee b/app/assets/javascripts/lib/d3.js.coffee similarity index 100% rename from app/assets/javascripts/lib/d3/application.js.coffee rename to app/assets/javascripts/lib/d3.js.coffee diff --git a/app/assets/javascripts/lib/raphael/application.js.coffee b/app/assets/javascripts/lib/raphael.js.coffee similarity index 100% rename from app/assets/javascripts/lib/raphael/application.js.coffee rename to app/assets/javascripts/lib/raphael.js.coffee diff --git a/app/assets/javascripts/lib/animate.js.coffee b/app/assets/javascripts/lib/utils/animate.js.coffee similarity index 100% rename from app/assets/javascripts/lib/animate.js.coffee rename to app/assets/javascripts/lib/utils/animate.js.coffee diff --git a/app/assets/javascripts/lib/common_utils.js.coffee b/app/assets/javascripts/lib/utils/common_utils.js.coffee similarity index 100% rename from app/assets/javascripts/lib/common_utils.js.coffee rename to app/assets/javascripts/lib/utils/common_utils.js.coffee diff --git a/app/assets/javascripts/lib/datetime_utility.js.coffee b/app/assets/javascripts/lib/utils/datetime_utility.js.coffee similarity index 100% rename from app/assets/javascripts/lib/datetime_utility.js.coffee rename to app/assets/javascripts/lib/utils/datetime_utility.js.coffee diff --git a/app/assets/javascripts/lib/emoji_aliases.js.coffee.erb b/app/assets/javascripts/lib/utils/emoji_aliases.js.coffee.erb similarity index 100% rename from app/assets/javascripts/lib/emoji_aliases.js.coffee.erb rename to app/assets/javascripts/lib/utils/emoji_aliases.js.coffee.erb diff --git a/app/assets/javascripts/lib/jquery.timeago.js b/app/assets/javascripts/lib/utils/jquery.timeago.js similarity index 100% rename from app/assets/javascripts/lib/jquery.timeago.js rename to app/assets/javascripts/lib/utils/jquery.timeago.js diff --git a/app/assets/javascripts/lib/md5.js b/app/assets/javascripts/lib/utils/md5.js similarity index 100% rename from app/assets/javascripts/lib/md5.js rename to app/assets/javascripts/lib/utils/md5.js diff --git a/app/assets/javascripts/lib/notify.js.coffee b/app/assets/javascripts/lib/utils/notify.js.coffee similarity index 100% rename from app/assets/javascripts/lib/notify.js.coffee rename to app/assets/javascripts/lib/utils/notify.js.coffee diff --git a/app/assets/javascripts/lib/text_utility.js.coffee b/app/assets/javascripts/lib/utils/text_utility.js.coffee similarity index 100% rename from app/assets/javascripts/lib/text_utility.js.coffee rename to app/assets/javascripts/lib/utils/text_utility.js.coffee diff --git a/app/assets/javascripts/lib/type_utility.js.coffee b/app/assets/javascripts/lib/utils/type_utility.js.coffee similarity index 100% rename from app/assets/javascripts/lib/type_utility.js.coffee rename to app/assets/javascripts/lib/utils/type_utility.js.coffee diff --git a/app/assets/javascripts/lib/url_utility.js.coffee b/app/assets/javascripts/lib/utils/url_utility.js.coffee similarity index 100% rename from app/assets/javascripts/lib/url_utility.js.coffee rename to app/assets/javascripts/lib/utils/url_utility.js.coffee diff --git a/app/assets/javascripts/lib/utf8_encode.js b/app/assets/javascripts/lib/utils/utf8_encode.js similarity index 100% rename from app/assets/javascripts/lib/utf8_encode.js rename to app/assets/javascripts/lib/utils/utf8_encode.js diff --git a/app/assets/javascripts/network/application.js.coffee b/app/assets/javascripts/network/application.js.coffee index cb9eead855b..f75f63869c5 100644 --- a/app/assets/javascripts/network/application.js.coffee +++ b/app/assets/javascripts/network/application.js.coffee @@ -4,9 +4,6 @@ # It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the # the compiled file. # -#= require raphael -#= require g.raphael -#= require g.bar #= require_tree . $ -> diff --git a/app/views/projects/graphs/_head.html.haml b/app/views/projects/graphs/_head.html.haml index 5ea4adcd0fa..ca04a782fcf 100644 --- a/app/views/projects/graphs/_head.html.haml +++ b/app/views/projects/graphs/_head.html.haml @@ -2,7 +2,7 @@ %ul{ class: (container_class) } - content_for :page_specific_javascripts do - = javascript_include_tag 'lib/chart/application.js', {integrity: true, "data-turbolinks-track" => true} + = javascript_include_tag 'lib/chart.js', {integrity: true, "data-turbolinks-track" => true} = javascript_include_tag 'graphs/application.js', {integrity: true, "data-turbolinks-track" => true} = nav_link(action: :show) do = link_to 'Contributors', namespace_project_graph_path diff --git a/app/views/projects/network/show.html.haml b/app/views/projects/network/show.html.haml index 749afe6b6ab..8bfda9776c7 100644 --- a/app/views/projects/network/show.html.haml +++ b/app/views/projects/network/show.html.haml @@ -1,6 +1,6 @@ - page_title "Network", @ref - content_for :page_specific_javascripts do - = javascript_include_tag 'lib/raphael/application.js', {integrity: true, "data-turbolinks-track" => true} + = javascript_include_tag 'lib/raphael.js', {integrity: true, "data-turbolinks-track" => true} = javascript_include_tag 'network/application.js', {integrity: true, "data-turbolinks-track" => true} = render "projects/commits/head" = render "head" diff --git a/app/views/users/show.html.haml b/app/views/users/show.html.haml index 9ca351e5147..0fabc2a7714 100644 --- a/app/views/users/show.html.haml +++ b/app/views/users/show.html.haml @@ -1,7 +1,7 @@ - page_title @user.name - page_description @user.bio - content_for :page_specific_javascripts do - = javascript_include_tag 'lib/d3/application.js', {integrity: true, "data-turbolinks-track" => true} + = javascript_include_tag 'lib/d3.js', {integrity: true, "data-turbolinks-track" => true} = javascript_include_tag 'users/application.js', {integrity: true, "data-turbolinks-track" => true} - header_title @user.name, user_path(@user) - @no_container = true From 40db56a26c62286febdb0656b9cc862dca99cfae Mon Sep 17 00:00:00 2001 From: Connor Shea Date: Thu, 23 Jun 2016 11:05:02 -0600 Subject: [PATCH 3/7] Add precompilation for relevant assets. --- config/application.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/application.rb b/config/application.rb index 05fec995ed3..2b0595ede2b 100644 --- a/config/application.rb +++ b/config/application.rb @@ -84,6 +84,8 @@ module Gitlab config.assets.precompile << "graphs/application.js" config.assets.precompile << "users/application.js" config.assets.precompile << "network/application.js" + config.assets.precompile << "lib/utils/*.js" + config.assets.precompile << "lib/*.js" # Version of your assets, change this if you want to expire all your assets config.assets.version = '1.0' From 5321f817854b2d2c6b96fe4e4f14560458940692 Mon Sep 17 00:00:00 2001 From: Connor Shea Date: Thu, 23 Jun 2016 11:09:46 -0600 Subject: [PATCH 4/7] Readability. --- app/views/layouts/_head.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/layouts/_head.html.haml b/app/views/layouts/_head.html.haml index bc3118f70aa..2d020e9c222 100644 --- a/app/views/layouts/_head.html.haml +++ b/app/views/layouts/_head.html.haml @@ -30,7 +30,7 @@ = javascript_include_tag "application", integrity: true - - if :page_specific_javascripts + - if content_for?(:page_specific_javascripts) = yield :page_specific_javascripts = csrf_meta_tags From f82278c49cdda0db28c45143f6b19b3c4ca90f3e Mon Sep 17 00:00:00 2001 From: Connor Shea Date: Thu, 23 Jun 2016 11:21:35 -0600 Subject: [PATCH 5/7] Fix teaspoon tests. --- spec/javascripts/application_spec.js.coffee | 2 +- spec/javascripts/issue_spec.js.coffee | 2 +- spec/javascripts/project_title_spec.js.coffee | 2 +- spec/javascripts/search_autocomplete_spec.js.coffee | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/spec/javascripts/application_spec.js.coffee b/spec/javascripts/application_spec.js.coffee index 8af39c41f2f..4b6a2bb5440 100644 --- a/spec/javascripts/application_spec.js.coffee +++ b/spec/javascripts/application_spec.js.coffee @@ -1,4 +1,4 @@ -#= require lib/common_utils +#= require lib/utils/common_utils describe 'Application', -> describe 'disable buttons', -> diff --git a/spec/javascripts/issue_spec.js.coffee b/spec/javascripts/issue_spec.js.coffee index 71f0c1076c5..d84d80f266b 100644 --- a/spec/javascripts/issue_spec.js.coffee +++ b/spec/javascripts/issue_spec.js.coffee @@ -1,4 +1,4 @@ -#= require lib/text_utility +#= require lib/utils/text_utility #= require issue describe 'Issue', -> diff --git a/spec/javascripts/project_title_spec.js.coffee b/spec/javascripts/project_title_spec.js.coffee index 9be29097f4c..f0d26fb5446 100644 --- a/spec/javascripts/project_title_spec.js.coffee +++ b/spec/javascripts/project_title_spec.js.coffee @@ -1,6 +1,6 @@ #= require bootstrap #= require select2 -#= require lib/type_utility +#= require lib/utils/type_utility #= require gl_dropdown #= require api #= require project_select diff --git a/spec/javascripts/search_autocomplete_spec.js.coffee b/spec/javascripts/search_autocomplete_spec.js.coffee index e77177783a7..1c1faca3333 100644 --- a/spec/javascripts/search_autocomplete_spec.js.coffee +++ b/spec/javascripts/search_autocomplete_spec.js.coffee @@ -1,8 +1,8 @@ #= require gl_dropdown #= require search_autocomplete #= require jquery -#= require lib/common_utils -#= require lib/type_utility +#= require lib/utils/common_utils +#= require lib/utils/type_utility #= require fuzzaldrin-plus From ff01ca9c96dc001fabf5e5a1200bc3355c61a3ca Mon Sep 17 00:00:00 2001 From: Connor Shea Date: Thu, 23 Jun 2016 11:42:52 -0600 Subject: [PATCH 6/7] Trying to make this work with sprockets in production. --- app/helpers/javascript_helper.rb | 6 ++---- app/views/projects/graphs/_head.html.haml | 4 ++-- app/views/projects/network/show.html.haml | 4 ++-- app/views/users/show.html.haml | 4 ++-- 4 files changed, 8 insertions(+), 10 deletions(-) diff --git a/app/helpers/javascript_helper.rb b/app/helpers/javascript_helper.rb index 91dd91718dc..4bdc8e516ac 100644 --- a/app/helpers/javascript_helper.rb +++ b/app/helpers/javascript_helper.rb @@ -1,7 +1,5 @@ module JavascriptHelper - def page_specific_javascripts(js = nil) - @page_specific_javascripts = js unless js.nil? - - @page_specific_javascripts + def page_specific_javascript_tag(js) + javascript_include_tag asset_path(js), {integrity: true, "data-turbolinks-track" => true} end end diff --git a/app/views/projects/graphs/_head.html.haml b/app/views/projects/graphs/_head.html.haml index ca04a782fcf..ca347406dfe 100644 --- a/app/views/projects/graphs/_head.html.haml +++ b/app/views/projects/graphs/_head.html.haml @@ -2,8 +2,8 @@ %ul{ class: (container_class) } - content_for :page_specific_javascripts do - = javascript_include_tag 'lib/chart.js', {integrity: true, "data-turbolinks-track" => true} - = javascript_include_tag 'graphs/application.js', {integrity: true, "data-turbolinks-track" => true} + = page_specific_javascript_tag('lib/chart.js') + = page_specific_javascript_tag('graphs/application.js') = nav_link(action: :show) do = link_to 'Contributors', namespace_project_graph_path = nav_link(action: :commits) do diff --git a/app/views/projects/network/show.html.haml b/app/views/projects/network/show.html.haml index 8bfda9776c7..3ca30b4ba6b 100644 --- a/app/views/projects/network/show.html.haml +++ b/app/views/projects/network/show.html.haml @@ -1,7 +1,7 @@ - page_title "Network", @ref - content_for :page_specific_javascripts do - = javascript_include_tag 'lib/raphael.js', {integrity: true, "data-turbolinks-track" => true} - = javascript_include_tag 'network/application.js', {integrity: true, "data-turbolinks-track" => true} + = page_specific_javascript_tag('lib/raphael.js') + = page_specific_javascript_tag('network/application.js') = render "projects/commits/head" = render "head" %div{ class: (container_class) } diff --git a/app/views/users/show.html.haml b/app/views/users/show.html.haml index 0fabc2a7714..68665858c3e 100644 --- a/app/views/users/show.html.haml +++ b/app/views/users/show.html.haml @@ -1,8 +1,8 @@ - page_title @user.name - page_description @user.bio - content_for :page_specific_javascripts do - = javascript_include_tag 'lib/d3.js', {integrity: true, "data-turbolinks-track" => true} - = javascript_include_tag 'users/application.js', {integrity: true, "data-turbolinks-track" => true} + = page_specific_javascript_tag('lib/d3.js') + = page_specific_javascript_tag('users/application.js') - header_title @user.name, user_path(@user) - @no_container = true From 3e363a5a79dd0f03e7b0feb8c028f34e7ad45330 Mon Sep 17 00:00:00 2001 From: Connor Shea Date: Thu, 23 Jun 2016 11:58:20 -0600 Subject: [PATCH 7/7] Appease Rubocop. --- app/helpers/javascript_helper.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/helpers/javascript_helper.rb b/app/helpers/javascript_helper.rb index 4bdc8e516ac..5109356941d 100644 --- a/app/helpers/javascript_helper.rb +++ b/app/helpers/javascript_helper.rb @@ -1,5 +1,5 @@ module JavascriptHelper def page_specific_javascript_tag(js) - javascript_include_tag asset_path(js), {integrity: true, "data-turbolinks-track" => true} + javascript_include_tag asset_path(js), { integrity: true, "data-turbolinks-track" => true } end end