Ruby on rails javascript_include_标记不一致行为
在使用Ruby 2.0和Rails 4.0时,我在我的资产管道上看到了不同的行为,我不知道为什么。这里是它的要点 我的./app/assets/javascripts文件夹中有一个application.js.coffee和google_analytics.js.coffee文件 在我的app/views/layouts/application.html.haml中,我有以下两行代码:Ruby on rails javascript_include_标记不一致行为,ruby-on-rails,ruby-on-rails-4,sprockets,Ruby On Rails,Ruby On Rails 4,Sprockets,在使用Ruby 2.0和Rails 4.0时,我在我的资产管道上看到了不同的行为,我不知道为什么。这里是它的要点 我的./app/assets/javascripts文件夹中有一个application.js.coffee和google_analytics.js.coffee文件 在我的app/views/layouts/application.html.haml中,我有以下两行代码: = javascript_include_tag "application" = javascript_inc
= javascript_include_tag "application"
= javascript_include_tag "google_analytics"
一旦部署到生产环境中,将在呈现页面中生成以下内容:
<script src="/assets/application-f15feb4200e0d1db4963a00b28fbe9ca.js"></script>
<script src="/javascripts/google_analytics.js"></script>
我还检查了生产部署,并注意到google\u analytics
没有得到预编译和指纹识别
编辑:在获得以下注释和答案后,将以下内容添加到config/environments/production.rb并尝试另一次部署:
ComingSoon::Application.configure do
config.serve_static_assets = false
config.assets.js_compressor = :uglifier
config.assets.compile = false
config.assets.digest = true
config.assets.version = '1.0'
config.assets.precompile += ['google_analytics.js.coffee']
end
为什么Sprocket assets管道没有预编译
google_analytics
脚本,并像提供应用程序脚本一样提供它?如何修复此问题?您可以将google脚本添加到config.assets.precompile设置的config/environments/production.rb文件中的预编译列表中。更多信息:您可以将google脚本添加到config.assets.precompile设置的config/environments/production.rb文件中的预编译列表中。更多信息:需要将google_分析文件添加到预编译列表中:
config.assets.precompile += ['google_analytics.js.coffee', ..]
根据需要将上述内容添加到应用程序.rb
或生产.rb
注意:除非您在application.js清单文件中通过直接的require
或通过require\u树
需要该文件,否则不会编译js。需要将google\u分析文件添加到预编译列表中:
config.assets.precompile += ['google_analytics.js.coffee', ..]
根据需要将上述内容添加到应用程序.rb
或生产.rb
注意:除非您在application.js清单文件中通过直接require
或通过require\u树
需要该文件,否则js不会被编译。您是如何检查google脚本没有被预编译的?如果它在您的资产文件夹中,并且您有/=require_树。在application.js中,它肯定应该被编译。在application.js.coffee中,这不是必需的,而且,作为一般规则,我不做“require_tree”——这是单独的,因为我只想在生产中使用条件include包含它。如果Rails.env=='production'“为了检查它是否未预编译,我注意到它在cap生产部署期间没有为此文件发出消息,但其他资产发出了消息,我还登录到生产以检查public/assets文件夹,该文件夹也不存在。您如何检查google脚本是否未预编译?如果它在您的资产文件夹中,并且您有/=require_树。在application.js中,它肯定应该被编译。在application.js.coffee中,这不是必需的,而且,作为一般规则,我不做“require_tree”——这是单独的,因为我只想在生产中使用条件include包含它。如果Rails.env=='production'“为了检查它是否未预编译,我注意到它在cap生产部署期间没有为此文件发出消息,但其他资产发出了消息,我还登录到生产以检查public/assets文件夹,并且该文件夹也不存在。根据该文件的文档,因此答案是。。。“编译文件的默认匹配器包括application.js、application.css和所有不以js或css结尾的文件:[/\w+\.(?!js|css)。+/,/application.(css|js)$/]”,意思是“google|u analytics.js.coffee”“应自动拾取。如果不在application.js清单中,则不会。如果不是,则需要将其添加到预编译列表中。按照说明将google_analytics.js.coffee添加到要预编译的资产列表中,但行为不变。capistrano的预编译资产。。。执行“cd--/home/deploy/sites/coming\suon/production/app/releases/201401301074823&&RAILS\u ENV=production RAILS\u GROUPS=assets bundle exec rake assets:precompile”——这还不够吗?已解决!不要在文件名中包含“coffee”扩展名。设置应该是:“config.assets.precompile+=['google|u analytics.js']”根据该答案中的文档,“编译文件的默认匹配器包括application.js、application.css和所有不以js或css结尾的文件:[/\w+\.(?!js|css.+/,/application.(css|js)$/]”,意思是“google u analytics.js coffee”应该自动获取。如果不在application.js清单中,则不会。如果不是,则需要将其添加到预编译列表中。按照说明将google_analytics.js.coffee添加到要预编译的资产列表中,但行为不变。capistrano的预编译资产。。。执行“cd--/home/deploy/sites/coming\suon/production/app/releases/201401301074823&&RAILS\u ENV=production RAILS\u GROUPS=assets bundle exec rake assets:precompile”——这还不够吗?已解决!不要在文件名中包含“coffee”扩展名。设置应该是:“config.assets.precompile+=['google_analytics.js']”按照说明将google_analytics.js.coffee添加到要预编译的资产列表中,但行为不变。更新了问题以显示我的更改。按照说明将google_analytics.js.coffee添加到要预编译的资产列表中,但行为保持不变。更新问题以显示我的更改。