1

我刚刚使用本教程向 Heroku 加载了一个静态应用程序,一切正常,除了我的图像没有显示。当同一个站点作为纯静态站点(不是通过 Heroku)托管在我自己的服务器上时,所有资产都可以毫无问题地加载。

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

我的图像在 public/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)
  ]
}
4

1 回答 1

2

要诊断这样的问题,您认为您的 dyno 上的文件内容与源中的文件内容不匹配,请使用heroku run bash登录到远程的开关 dyno。这将使您进入一个 bash shell,您可以在其中探索您的 dyno 所看到的文件系统(尽管您的 shell 所附加的 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

从这里你应该能够看到:

  • 如果图像文件甚至存在于测功机上
  • 如果它们的内容是您所期望的(文件大小是否与您在本地环境中看到的相匹配?)
于 2013-02-15T19:56:38.827 回答