【问题标题】:Rails asset pipeline not including required files in application.js manifestRails 资产管道不包括 application.js 清单中的必需文件
【发布时间】:2013-02-26 00:55:10
【问题描述】:

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 并解决了问题。

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

【问题讨论】:

  • @iRichLau 我该如何解决?我不想 application.js 将文件包含在清单中
  • 我知道他们应该,但他们没有被加载。发送到浏览器的唯一资产是 application.css 和 application.js,它们的清单中都不包含任何文件。
  • 这里有同样的问题。很遗憾这被关闭了..
  • 啊,有趣。我也一样
  • 遇到同样的问题!为什么 casperOne 关闭了这个??

标签: ruby-on-rails ruby asset-pipeline


【解决方案1】:

您是否将引导文件复制/粘贴到 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/

我知道文件顶部的 cmets 中说应用程序、lib 或供应商文件夹中的任何文件都将包含在内,但我发现情况并非如此。我无法解释原因,但请参阅 here 了解我的来源。试试上面的命令,或者在你的 app/assets 文件夹中包含引导文件。希望对您有所帮助。

【讨论】:

  • 这个问题最近被重新打开,我没有代码了,所以我不能再做诊断了。在这种情况下,什么是适当的礼仪?
  • 对不起,什么是正确的礼仪?授予答案、赞成/反对票或其他什么?如果您的意思是其中之一,我想选择是您的,因为问题是您的。您的行为表明您对答案的看法。 :-)
【解决方案2】:

一个常见的原因是资源被编译并在 public/assets 中找到,在这种情况下 Rails 不会重新编译它们。如果您在此处有资产,并且没有将 config.serve_static_assets 设置为 false,那么 Rails 将不会重新编译您的资产:

config.serve_static_assets = false

所以如果你在 public/assets 中有预编译的东西,要么删除它们,要么将上面的行添加到 development.rb 中

【讨论】:

    【解决方案3】:

    我在这里回答了这个问题:

    Rails 3.2.8 Application.js and Application.css are not working as expcted

    这是正文:

    我也遇到了这个问题,但使用的是较新版本的 Rails 和 红宝石。

    检查日志,我从 Rails 缓存中获得了 javascript.js 因为服务器没有看到文件的变化。我去移动了 需要围绕(只有一个)行来告诉 Rails 有变化 文件并重新编译/使用。 Wellm 为我做的!

    希望它对某人有所帮助。

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

    我有版本 2.2.1 并且有问题,升级到 2.2.2 后,它可以工作

    gem 'sprockets', '2.2.2' 
    

    【讨论】:

    • 工作就像一个魅力! TXS @Isaffie
    • @everett1992 你认为这回答了你的问题吗?如果是这样,你能把它标记为这样吗?谢谢
    • 将链轮从 2.2.1 更新到 ~> 2.2.2 对我有用。谢谢。
    【解决方案4】:

    如果您从 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 似乎一切正常。

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

    【讨论】:

    • 我可以确认这似乎已经成功了 - 从 ruby​​ 1.9.3 升级到 2.1.5,并且在我升级到 rails 3.2.21 时修复了 rails 3.2.6 的问题。跨度>
    • 似乎也对我有用。可能与上面的链轮有关(安装链轮2.2.3(原为2.1.4))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 2016-06-25
    • 2017-12-27
    • 2012-03-04
    • 2014-08-28
    • 1970-01-01
    • 2012-02-07
    相关资源
    最近更新 更多