将rails app上传到heroku跳过资产

时间:2012-12-02 21:31:52

标签: ruby-on-rails heroku push commit

我正在尝试将我的rails应用程序上传到我的heroku帐户,因为我之前做了几次(成功)

heroku login (email and pass)
    rake assets:precompile 
    bundle install --without production
    git add --all
    git commit -am "commit_desc2"
    git push heroku master

我得到了我的应用程序,没有所有的CSS和js包含在标题中。我认为这是一个资产提交问题。我不记得做任何不同的事情,除了使用bootstrap改变设计。

这是heroku的头

<link href="/assets/application-6dc3bf401e7f79f69a2a156bdeeb7a00.css" media="all" rel="stylesheet" type="text/css" />
  <script src="/assets/application-14e3dc5612ffc200db37e141e57c5af2.js" type="text/javascript"></script>

这是localhost上的头

 <link href="/assets/application.css?body=1" media="all" rel="stylesheet" type="text/css" />
<link href="/assets/bootstrapStyle.css?body=1" media="all" rel="stylesheet" type="text/css" />
<link href="/assets/bootstrap_and_overrides.css?body=1" media="all" rel="stylesheet" type="text/css" />
<link href="/assets/ratings.css?body=1" media="all" rel="stylesheet" type="text/css" />
<link href="/assets/scaffolds.css?body=1" media="all" rel="stylesheet" type="text/css" />
  <script src="/assets/jquery.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery_ujs.js?body=1" type="text/javascript"></script>
<script src="/assets/twitter/bootstrap/bootstrap-transition.js?body=1" type="text/javascript"></script>
<script src="/assets/twitter/bootstrap/bootstrap-alert.js?body=1" type="text/javascript"></script>
<script src="/assets/twitter/bootstrap/bootstrap-modal.js?body=1" type="text/javascript"></script>
<script src="/assets/twitter/bootstrap/bootstrap-dropdown.js?body=1" type="text/javascript"></script>
<script src="/assets/twitter/bootstrap/bootstrap-scrollspy.js?body=1" type="text/javascript"></script>
<script src="/assets/twitter/bootstrap/bootstrap-tab.js?body=1" type="text/javascript"></script>
<script src="/assets/twitter/bootstrap/bootstrap-tooltip.js?body=1" type="text/javascript"></script>
<script src="/assets/twitter/bootstrap/bootstrap-popover.js?body=1" type="text/javascript"></script>
<script src="/assets/twitter/bootstrap/bootstrap-button.js?body=1" type="text/javascript"></script>
<script src="/assets/twitter/bootstrap/bootstrap-collapse.js?body=1" type="text/javascript"></script>
<script src="/assets/twitter/bootstrap/bootstrap-carousel.js?body=1" type="text/javascript"></script>
<script src="/assets/twitter/bootstrap/bootstrap-typeahead.js?body=1" type="text/javascript"></script>
<script src="/assets/twitter/bootstrap/bootstrap-affix.js?body=1" type="text/javascript"></script>
<script src="/assets/twitter/bootstrap.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap.js?body=1" type="text/javascript"></script>
<script src="/assets/index.js?body=1" type="text/javascript"></script>
<script src="/assets/ratings.js?body=1" type="text/javascript"></script>
<script src="/assets/application.js?body=1" type="text/javascript"></script>

1 个答案:

答案 0 :(得分:0)

来自 Rails Guide

  

在开发模式下,资产按照清单文件中指定的顺序作为单独的文件提供。

您实际上并未提出问题,但要明确:您的资产不会被跳过。

您在localhost中看到的内容(列出的所有文件)都包含在生产中(在单个application.cssapplication.js文件中。

config/evironments/development.rb你有

config.assets.debug = true

这会导致

<%= stylesheet_link_tag "application" %>
<%= javascript_include_tag "application" %>

要扩展,为每个javascript和样式表创建单独的脚本和链接标记,这些标记将通过Sprockets和Rails资产管道通过//=require行包含在内。

在生产中(在heroku上),上面的debug config选项设置为false,提供样式表和javascripts的单个连接/压缩版本。

我确定您是否检查了Javascript控制台中是否存在您在localhost <head>中列出的任何Javascript文件中可用的变量/方法,您会发现它们存在。生产中的application.css文件的内容也是如此。

推荐阅读: http://guides.rubyonrails.org/asset_pipeline.html