将Heroku用于静态站点:资产不会显示

时间:2013-02-14 20:58:13

标签: ruby image heroku rack static-site

我刚刚使用this tutorial向Heroku加载了一个静态应用程序,除了我的图像没有显示外,一切都运行良好。当同一站点作为纯静态站点(不是通过Heroku)托管在我自己的服务器上时,所有资产都会加载而没有问题。

目前,我的存储库中有一个Gemfile,Gemfile.lock,app.rb,config.ru和public(静态站点目录),我通过git push heroku master加载到Heroku以推送到Heroku。< / p>

我的图片是公开的/ img,甚至直接从html引用的资源也没有显示出来。当我在Chrome中使用firebug lite来检查资产目录时,似乎图像文件就在那里,但它们似乎没有图像数据(据我所知)。

我没有任何进一步的ruby / rails文件。我应该在某个地方有一个production.rb文件吗?我错过了什么吗?

目前,我在Heroku上的设置是免费套餐。我是否需要升级到付费包以查看我的资产(我只有2MB的资产)?我已经尝试在“public”目录中创建一个“assets”目录并将img目录放在那里,但仍然没有运气。

这是我的config.ru

use Rack::Static, 
  :urls => ["/img", "/js", "/css"],
  :root => "public"

run lambda { |env|
  [
    200, 
    {
      'Content-Type'  => 'text/html', 
      'Cache-Control' => 'public, max-age=86400' 
    },
    File.open('public/index.html', File::RDONLY)
  ]
}

1 个答案:

答案 0 :(得分:2)

要诊断此类问题,您认为dyno上的文件内容与源中的文件内容不匹配,请使用heroku run bash登录远程on-off dyno。这将使您进入一个bash shell,您可以在其中浏览dyno所看到的文件系统(尽管您的shell附加的dyno不是主动为您提供请求的dyno,它将具有相同的文件系统内容)。

$ heroku run bash
Running `bash` attached to terminal... up, run.4065
~ $ ls
pubic Gemfile Gemfile.lock app.rb config.ru
~ $ cd public/img
~/public/img $ ls -l
total 40
-rw------- 1 u36831 36831  2743 2013-02-15 18:54 facebook-1652d049.png
-rw------- 1 u36831 36831  2291 2013-02-15 18:54 feed-e8d78a2f.png

从这里你应该可以看到:

  • 如果图像文件甚至存在于dyno
  • 如果他们的内容符合您的期望(文件大小是否与您在本地环境中看到的内容相匹配?)