Rails 资产管道:将资产包含在 public 文件夹而不是资产文件夹中是否是一种好的做法?
Rails asset pipeline: Can it be good practice to include asset in public folder instead of asset folder?
我一直在努力将 Google Analytics 添加到我的 Rails 4 应用程序(参见 )。
我通过在 /public/assets/google-analytics.js
的新文件中添加 Google 提供的 JavaScript 代码来让它工作。在 application.html.erb
我包括了:
<%= javascript_include_tag 'google-analytics' if Rails.env.production? %>
这有效,但我没有将 JavaScript 文件包含在 app/assets/javascripts/
中,而是将其放在 public 文件夹中。 JavaScript 文件因此不会被编译。
您认为这是一种好的做法/Rails 方式吗?
我选择这个解决方案是因为如果我将 Rails.application.config.assets.precompile += ['google-analytics.js']
也添加到 config/environments/production.rb 中,我只能让它工作(如果我将它添加到初始化程序 assets.rb).我发现这比上面的解决方案更混乱。
在您的情况下,最好将分析脚本添加到 views/layouts/application 的头部部分。html.erb
另一种选择是创建一个 view/shared 目录,其中包含一个名为 _analytics.hml.erb 的文件,然后将分析标签粘贴到其中,然后在您需要的视图中执行此操作:
<%= render 'shared/analytics' %>
如果只是局部渲染,根本不需要预编译。什么是 'best practice' 取决于意见,但如果您以部分方式呈现它,您将节省一些时间来配置和解决您尝试执行此操作的方式。
在我看来,部分是更 'Railsy' 的方式,除非你特别需要某人能够访问 www.your-site.com/analytics.js
我一直在努力将 Google Analytics 添加到我的 Rails 4 应用程序(参见
我通过在 /public/assets/google-analytics.js
的新文件中添加 Google 提供的 JavaScript 代码来让它工作。在 application.html.erb
我包括了:
<%= javascript_include_tag 'google-analytics' if Rails.env.production? %>
这有效,但我没有将 JavaScript 文件包含在 app/assets/javascripts/
中,而是将其放在 public 文件夹中。 JavaScript 文件因此不会被编译。
您认为这是一种好的做法/Rails 方式吗?
我选择这个解决方案是因为如果我将 Rails.application.config.assets.precompile += ['google-analytics.js']
也添加到 config/environments/production.rb 中,我只能让它工作(如果我将它添加到初始化程序 assets.rb).我发现这比上面的解决方案更混乱。
在您的情况下,最好将分析脚本添加到 views/layouts/application 的头部部分。html.erb
另一种选择是创建一个 view/shared 目录,其中包含一个名为 _analytics.hml.erb 的文件,然后将分析标签粘贴到其中,然后在您需要的视图中执行此操作:
<%= render 'shared/analytics' %>
如果只是局部渲染,根本不需要预编译。什么是 'best practice' 取决于意见,但如果您以部分方式呈现它,您将节省一些时间来配置和解决您尝试执行此操作的方式。
在我看来,部分是更 'Railsy' 的方式,除非你特别需要某人能够访问 www.your-site.com/analytics.js