Heroku Cedar纯机架静态站点

时间:2012-06-13 16:11:18

标签: static heroku rack cedar

我一直在尝试整合两个托管静态网站的教程:

基本上我希望能够在雪松堆上的旧竹教程中做你做的事情。我可以使用雪松教程,但是当我尝试修改它来提供文件时,我收到了一个错误。

我看过following post,但github repo似乎不再出现了,我无法弄清楚我哪里出错了。

当我尝试按照第一个教程在本地运行网站时,我收到以下错误:

martin@crunchbang:~/code/martinrichards.me$ rackup -p 9292 config.ru &
[2] 4065
martin@crunchbang:~/code/martinrichards.me$ /home/martin/.rvm/gems/ruby-1.9.3-p194/gems/rack-1.4.1/lib/rack/builder.rb:40:in `eval':     /home/martin/code/martinrichards.me/config.ru:2: syntax error, unexpected tIDENTIFIER, expecting '}' (SyntaxError)
200, ... |env|"
...

我已经把我到目前为止的内容放在Github上,我们将非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

嗯,首先,你的config.ru几乎完全是空的。看起来你正在遵循与Heroku教程相同的网站结构,所以从这样的config.ru开始:

use Rack::Static, 
  :urls => ["/stylesheets", "/images"],
  :root => "public"

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

由于您使用Cedar,因此使用Procfile启动流程会很有帮助。因此,在您的根目录中添加一个名为Procfile(无扩展名)的文件,并在其中加入以下内容:

web: bundle exec rackup config.ru -p $PORT

应该这样做。

如果您想使用Sinatra,Heroku将为Ced​​ar上的Ruby站点提供逐步的tuturioal:https://devcenter.heroku.com/articles/ruby

修改

事实证明,config.ru中存在行结尾问题。这就是为什么GitHub没有正确显示文件的原因。您的行结尾是^M,它们是DOS / Windows / Mac OS 9行结尾。这就是Ruby在第2行抛出错误的原因 - 这是第一次换行。不确定您使用的文本编辑器,但它可能支持更改行结尾。切换它们Unix,一切都应该正常工作。如果您正在寻找可以执行此操作的文本编辑器,请查看Sublime Text 2。行结尾功能位于“查看”菜单中。

由于您正在构建纯Rack应用程序,因此您实际上不需要Procfile,因为默认的Heroku Cedar buildpack将为您检测config.ru。但是,一旦开始使用其他框架(如Sinatra),Procfile就派上用场了。另外,如果您使用的是Mac,则可以使用Foreman来模拟Heroku的旋转过程。请注意,Profile没有扩展名,大写字母为“P”。