【问题标题】:Rails/Heroku precompiled assets not being found未找到 Rails/Heroku 预编译资产
【发布时间】:2012-01-20 00:11:31
【问题描述】:

我对 Rails 和 Heroku 还很陌生,我正在尝试部署一个使用 jQuery UI 库的应用程序。我的app/assets 文件夹中有 jQuery UI Javascript 和 CSS 文件,并且我将其设置为预编译资产(我必须这样做才能让我的应用程序在 Heroku 上实际运行)。但是,当我加载页面时找不到 jQuery UI 文件(jQuery UI 不工作)。根据我收集的信息,它将文件重命名为<filename>-<md5 hash>.js/css。如何让它引用正确的文件?

app/views/layouts/application.html.erb:

  <%= stylesheet_link_tag    "application" %>
  <%= javascript_include_tag "application" %>
  <%= javascript_include_tag "http://code.jquery.com/jquery-1.7.1.min.js" %>
  <%= javascript_include_tag "jquery-ui-1.8.16.custom.min" %>
  <%= stylesheet_link_tag "jquery-ui-1.8.16.custom" %>
  <%= stylesheet_link_tag "http://fonts.googleapis.com/css?family=Open+Sans:300italic,400,300" %>
  <%= csrf_meta_tags %>

【问题讨论】:

  • 能否展示包含 jQuery UI 文件的代码?
  • 编辑帖子以包含它

标签: jquery ruby-on-rails jquery-ui heroku assets


【解决方案1】:

我实际上会建议删除预编译资产功能并允许 Heroku 为您执行此操作。我最初像你一样开始,但很快发现这是一种优越的方法,并且 Heroku 支持建议在 slug 编译期间进行资产编译。

确保您使用的是 Cedar 堆栈而不是 Bamboo 和 take a look at this,然后按照下面的问题排查部分进行操作:

附注特别重要:“如果在您的应用中检测到public/assets/manifest.yml,Heroku 将假定您正在自己处理资产编译,并且不会尝试编译您的资产。”

确保您删除了预编译创建的 public/assets/* 文件夹下的所有内容,包括 manifest.yml 文件。

否则,app/assets/javascripts 中的所有 JavaScript 文件都应该自动包含在内,并且您应该能够在检查开发模式时看到这一点(默认情况下,在 heroku 的生产模式下,它们将全部压缩为一个 application.js文件,但如果它们以开发模式出现,你应该是黄金)。

【讨论】:

  • 您可以使用以下命令清除您的公共/资产文件夹:bundle exec rake assets:clean。然后提交并推送,你应该是对的。
  • 部署时,检查Detected manifest.yml, assuming assets were compiled locally 的输出对我来说,我不小心提交了我的资产一次,虽然我在本地删除了文件,但我忘记了git rm public/assets/* 所以还有一个清单Heroku 服务器上的 .yml 文件。
  • 我没有 manifest.yml 文件,也没有 public/assets 文件夹。当我执行 git push 到 heroku 时,它不会编译我的 application.css 或 .js 文件。我在我的 application.rb 中有它写的:config.assets.initialize_on_precompile = falseconfig.assets.precompile &lt;&lt; 'application.css',等等.. 仍然没有。有什么想法吗?
【解决方案2】:

如果您在默认的 Bamboo 堆栈上,您需要自己通过 rake assets:precompile 预编译资产并将结果提交到 public/assets 并将它们推送到 Heroku。否则,使用Cedar 堆栈可能是更简单的选择。

【讨论】:

    【解决方案3】:

    如这里 (https://devcenter.heroku.com/articles/ruby-support#static-assets) 所述,您 应该将“rails_serve_static_assets”gem 添加到您的 Gemfile 中,问题将得到解决。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-12
      • 2014-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多