Rails资产管道不包括application.js清单中的必需文件

rails资产管道不包括application.js中所需的文件。

呈现给浏览器的唯一javascript文件是application.js,并且require行不会被编译为包含标记,因为它们应该是:

// This is a manifest file that'll be compiled into application.js, which will include all the files // listed below. // // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, // or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path. // // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the // the compiled file. // // WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD // GO AFTER THE REQUIRES BELOW. // //= require jquery //= require jquery_ujs //= require twitter/bootstrap //= require bootstrap //= require_tree . ; 

在config / application.rb中我有config.assets.enable = true

我正在使用rails 3.2.8,我尝试使用rvm安装ruby 1.9.3-p398和2.0.0-p0。

如何让application.js包含所需的文件?

编辑:看起来这个问题的锁最近解锁了,活动增加了。 自从我研究这个问题已经有一段时间了,代码不再存在了。 如果我正确记得我重新安装了ruby和rails并解决了这个问题。

我应该关闭这个问题吗? 在这种情况下,正确的程序是什么?

我在这里回答:

Rails 3.2.8 Application.js和Application.css不能正常工作

这是文字:

我也有这个问题,但有更新版本的Rails和Ruby。

检查日志时,我正在从Rails缓存中获取javascript.js,因为服务器没有看到文件中的更改。 我去了并移动了需求线(只有一个)告诉Rails文件有变化并重新编译/使用。 Wellm为我做了!

希望它对某人有帮助。

另一个重要发现是升级Gemfile中的sprockets gem。

我有2.2.1版本并且有问题,在升级到2.2.2之后,它有效

 gem 'sprockets', '2.2.2' 

如果您从3.0.x – 3.1.x升级并运行到此问题升级到3.2.x,它可能会解决此问题。

我最近从3.0 – 3.1.12升级了一个应用程序,发现资产清单无法使用Ruby 1.9.3,Ruby 2.0或Ruby 2.1.1。 然后我继续升级到3.2.17,一切似乎都在使用Ruby 2.1.1正常工作。

希望这有助于其他任何可能遇到此问题升级的人。

这样做的一个常见原因是资产是在公共/资产中编译和找到的,在这种情况下,Rails不会重新编译它们。 如果您在此处拥有资产,并且尚未将config.serve_static_assets设置为false,则Rails将不会重新编译您的资产:

 config.serve_static_assets = false 

因此,如果您在公共/资产中预编译了内容,请删除它们,或将以上行添加到development.rb

您是否将引导文件复制/粘贴到vendor / assets文件夹或app / assets中? 资产管道默认只包含app / assets文件夹,而不包括lib / assets或vendor / assets。 要在管道中包含供应商/资产,请在app / assets / javascript / application.js文件中输入以下命令:

 //= require_tree ../../../vendor/assets/javascripts/ 

要对CSS文件执行相同操作:

 *= require_tree ../../../vendor/assets/stylesheets/ 

我知道它在文件顶部的注释中说应该包含app,lib或vendor文件夹中的任何文件,但我发现情况并非如此。 我无法解释原因,但请参阅此处了解我的来源。 尝试上述命令,或在app / assets文件夹中包含引导程序文件。 希望有所帮助。