【问题标题】:Not all of my assets are being precompiled并非我的所有资产都被预编译
【发布时间】:2014-12-21 00:04:52
【问题描述】:

我在 Rails 4 应用程序中预编译资产时遇到问题。我按照this question 中的步骤在我的资产管道中设置了两个不同的文件,它们充当资产清单文件。特别是,在我的/app/assets/javascript 目录中,我有两个文件,application.jsmeeting_handout.js,它们充当清单文件。然而,当我运行rake assets:precompile 时,只有从application.js 引用的资产被预编译。我最终生成了文件public/assets/application-HASH.css,但没有生成文件public/assets/meeting-handout-HASH.css。我该怎么做才能解决这个问题?

到目前为止,我所做的研究表明要确保在 config/application.rb 中包含以下行:

config.assets.precompile += %w( meeting_handout.js )

我的appliation.rb 确实有这条线,但我仍然没有得到我期望的行为。

【问题讨论】:

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


    【解决方案1】:

    如果您还没有,您还应该确保按照链接答案中的建议修改application.js(修改为存根meeting_handout.js,或重新排列共享资产,作为链接答案详细信息中的附加链接)。

    【讨论】:

    • 我按照链接问题中的步骤写了一个 T。(实际上,我是在弄清楚如何自己做所有事情之后才写的。之后,我写了我所做的,部分原因是我有一个总结我所做的事情的简单方法,以防我将来需要解释自己!)
    • 那么application.js肯定被修改了? (您的问题中没有包含该来源,仅包含application.rb,因此请确保!如果是这样,您可能也希望将其包含在您的帖子中。)
    • application.js 已被修改,但 meeting_handout.cssmeeting_handout.js 引用的带有 //=require 行的文件也已被修改。我希望当我运行rake assets:precompile 时,我更新的meeting_handout.css 被预编译成public/meeting_handout-HASH.css
    • 我明白你在说什么。是的,application.js 已修改为包含 //= stub meeting_handout
    【解决方案2】:

    config/application.rb,我变了

    config.assets.precompile += %w( meeting_handout.js )
    

    config.assets.precompile += %w( meeting_handout.css )
    

    除了引用meeting_handout.css 之外,我没有使用meeting_handout.js 文件做任何事情,在仔细查看之后,看起来rake assets:precompile 只是编译了.js 文件。告诉 Rails 编译 .css 文件就像我想要的那样工作。

    【讨论】:

    • 感谢您的帮助,@TK! =)
    猜你喜欢
    • 1970-01-01
    • 2014-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多