Heroku Cedar pure rack статичен сайт

Опитвам се да консолидирам два урока за хостване на статични сайтове:

По принцип искам да мога да правя това, което правите вие ​​в стария урок за бамбук върху стека от кедър. Мога да накарам урока по cedar да работи, но когато се опитам да го модифицирам, за да обслужва файлове, получавам грешка.

Разгледах следната публикация, но репото в github не Изглежда вече не съм буден и не мога да разбера къде съм сгрешил.

Когато се опитам да стартирам сайта локално според първия урок, получавам следната грешка:

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, всяка помощ ще бъде много оценен.


person Martinffx    schedule 13.06.2012    source източник


Отговори (1)


Е, първо, вашето 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 има инструкции стъпка по стъпка за Ruby сайтове на Cedar: 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 по подразбиране ще открие config.ru вместо вас. Въпреки това, Procfile е полезен, след като започнете да използвате други рамки (като Sinatra). Плюс това, ако сте на Mac, можете да използвате Foreman, за да симулирате завъртането на Heroku процес. Имайте предвид, че Profile е без разширение и с главно "P".

person redhotvengeance    schedule 13.06.2012
comment
Благодаря за отговора, моят config.ru беше идентичен с вашия, просто не изглежда да показва пълния файл при преглед в github. Трябва да редактирате този файл и ще видите пълното съдържание. Грешка в github? - person Martinffx; 13.06.2012
comment
Актуализирах въпроса си с резултата, който получавам, когато се опитам да го стартирам локално. - person Martinffx; 13.06.2012
comment
Оказва се, че проблемът ви е в края на реда във вас config.ru. Актуализирах отговора си, за да обясня. - person redhotvengeance; 13.06.2012
comment
Благодаря ви, изглежда проблемът е в края на реда. - person Martinffx; 14.06.2012