2

我在 Heroku cedar 堆栈上托管基于 Jekyll 的博客github 代码)。

我通过我的 Rakefile 构建 jekyll文件:

namespace :assets do
  desc 'Precompile assets'
  task :precompile do
    sh "bundle exec sass --update _scss:_css --style compressed"
    sh "bundle exec jekyll"
  end
end

这会将文件输出到一个_site目录中,Rack 将从该目录中提供文件。

这已经工作了一年多,并且在我博客的当前实时版本(两周前发布)上运行良好:

$ heroku run ls _site                                                                                                 
Running `ls _site` attached to terminal... up, run.9360
2012  404  apple-touch-icon.png  back-end  css          front-end  index.html  politics    public-domain.txt  rss.xml
2013  410  assets                config    favicon.ico  go.sh      personal    postsbytag  robots.txt         sitemap.xml

但是,每当我现在尝试发布任何内容或将相同版本的代码发布到新应用程序_site时,似乎都没有创建该目录:

$ git push git push git@heroku.com:robinwinslow-dev.git
...
http://robinwinslow-dev.herokuapp.com deployed to Heroku
...
$ heroku run ls _site --app robinwinslow-dev
Running `ls _site` attached to terminal... up, run.2577
ls: cannot access _site: No such file or directory

网站显示

Internal Server Error
No such file or directory - _site/404/index.html

有谁知道为什么这会改变?Heroku 有什么变化吗?还是我突然做了什么蠢事?

4

1 回答 1

0

我不知道为什么这首先会起作用,因为Heroku 有一个只读文件系统。解决方案是在本地编译您的站点,包括所有资产,将它们签入 Git,然后将完整的 _site 目录推送到 Heroku。

于 2013-12-15T14:20:34.347 回答