【问题标题】:Heroku not displaying (finding?) .css and .js filesHeroku 不显示(查找?) .css 和 .js 文件
【发布时间】:2012-03-05 18:58:35
【问题描述】:

我最近向 Heroku 添加了一个项目。但是,任何 .css 文件或 .js 文件似乎都不起作用。

我正在使用 Twitter 的 Bootstrap .css 和 .js 文件。我已将这些文件添加到各自的 vendor/assets 目录中。

根据我在这里看到的其他问题,我在 Heroku 上从 Bamboo 升级到了 Cedar。我还尝试了rake assets:precompile RAILS_ENV=production,将application.rb 中的config.assets.enabled = true 更改为config.assets.enabled = false,将production.rb 中的config.assets.compile = false config.assets.compile = true 更改为我能想到的所有上述内容的组合。

本地一切正常。

(添加指向 github 的链接以尝试提供更多信息。) https://github.com/moctopus/sixtydays

【问题讨论】:

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


    【解决方案1】:

    默认情况下assets:precompile 不会处理 /vendor/assets 中的 css/js 文件。在production.rb 中,您可以使用config.assets.precompile 来获取资产预编译处理的其他css/js 文件。

    例如,如果您在/vendor/assets/bootstrap 中有您的 twitter 引导 css/js 文件,请使用:

    config.assets.precompile += %w[ bootstrap/*.css bootstrap/*.js ]
    

    然后rake assets:precompile 将处理它们,它们将在 heroku 上工作。


    见:http://guides.rubyonrails.org/asset_pipeline.html#precompiling-assets

    编译文件的默认匹配器包括application.js, application.css 和所有非 JS/CSS 文件

    【讨论】:

    • 我还是没有运气。我已经预编译了特定的文件并推送了它们。我也这样做了,“config.assets.initialize_on_precompile to false in config/application.rb”
    • 这是我的完整 production.rb 文件的示例:pastebin.com/hVEUvH6G(我使用的是默认未更改的 application.rb)。我在/vendor/assets/blueprint 中有资产并使用config.assets.precompile += %w[ blueprint/*.css ] 在该文件夹中添加css。运行 rake assets:precompile 后,它们在 heroku cedar 上工作。您的资产是否真的被编译/移动到 /public/assets(并提交给版本控制)?
    • 我只是使用默认的 application.rb 尝试了一些不同的东西。我试过config.assets.precompile += %w[ bootstrap.css ]config.assets.precompile += %w[ stylesheets/*.css ]config.assets.precompile += %w[ *.css ]。我已经确认当rake assets:precompile 运行时,文件正在被创建并移动到公共/资产。我还确认他们处于源代码控制中。还是没有运气。
    • 从您的 github 看来,您只是在预编译 .css,因此 bootstrap.js 的 javascript_include_tag 仍然会出错。使用这个:config.assets.precompile += %w[ bootstrap*.css bootstrap.js ] 然后bundle exec rake assets:precompile 添加/提交/推送到heroku。那应该可以,我刚刚测试了完全相同的东西,但是如果不行,您能否发布$ heroku logs的输出
    • 资产现在实际上正在编译,所以这是一个改进。看起来现在的问题是 URL 没有正确生成,因为您没有加载 sprockets 框架(它为 Web 资产提供服务)。在 application.rb 中取消注释 require "sprockets/railtie"
    猜你喜欢
    • 2013-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-03
    • 2021-08-23
    • 1970-01-01
    • 2013-12-09
    • 2019-12-05
    相关资源
    最近更新 更多