Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails javascript_include_标记不一致行为_Ruby On Rails_Ruby On Rails 4_Sprockets - Fatal编程技术网

Ruby on rails javascript_include_标记不一致行为

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

在使用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_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添加到要预编译的资产列表中,但行为保持不变。更新问题以显示我的更改。