未找到Rails / Heroku预编译资产

时间:2012-01-20 00:11:31

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

我是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 %>

3 个答案:

答案 0 :(得分:5)

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

请确保您使用的是Cedar堆栈,而不是Bamboo和take a look at this,然后按照下面的说明进行操作: enter image description here

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

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

否则app/assets/javascripts中的所有JavaScript文件都应自动包含在内,您应该能够在检查开发模式时看到这一点(默认情况下,在heroku的生产模式下,它们将全部缩小为一个应用程序.js文件,但如果它们以开发模式显示,则应为金牌。

答案 1 :(得分:2)

如果您使用默认的Bamboo堆栈,则需要自己按rake assets:precompile预编译资产,并将结果提交到公共/资产并将其推送到Heroku。否则,使用Cedar堆栈可能是一个更容易的选择。

答案 2 :(得分:0)

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