2015-11-17 5 views
1

Я запускаю сайт Middleman на Heroku и использую Contentful для управления контентом. Я хочу использовать веб-узлы Contentful и настроить мое приложение, чтобы использовать новые параметры webhook contentful_middleman gem (на главной ветке).Heroku, Middleman, and Contentful: Rebuilding on webhook

Он работает, восстанавливая активы, запустив «посредник contentful --rebuild», когда он получает уведомление о веб-хосте на «/ receive».

Этот поток обречен на героку из-за его эфемерной файловой системы? Похоже, это из журналов ниже.

Если это так, есть ли способ, способный перестроить средство посредника после его запуска? Или мне нужно будет переключать платформы, чтобы таким образом использовать контентуальные веб-узлы?

2015-11-16T21: 42: 05.776622 + 00: 00 app [web.1]: cache: [POST/receive] pass 2015-11-16T21: 42: 35.818683 + 00: 00 heroku [router] : at = info method = POST path = "/ receive" host = www.mysite.com request_id = some_id fwd = "ip, другой ip" dyno = web.1 connect = 0ms service = 13ms status = 405 bytes = 367 2015 -11-16T21: 42: 35.849264 + 00: 00 приложение [web.1]: /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/fileutils.rb:203:in each' 2015-11-16T21:42:35.849253+00:00 app[web.1]: cache error: Read-only file system - /var/cache 2015-11-16T21:42:35.849435+00:00 app[web.1]: cache: [POST /receive] pass 2015-11-16T21:42:35.849281+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/puma-2.11.3/lib/puma/thread_pool.rb:104:in call ' 2015 -11-16T21: 42: 35.849268 + 00: 00 приложение [web.1]: /app/vendor/bundle/ruby/2.0.0/gems/rack-cache-1.2/lib/rack/cache/storage.rb: 37: in create_store' 2015-11-16T21:42:35.849270+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/rack-cache-1.2/lib/rack/cache/context.rb:149:in invalidate ' 2015-11-16T21: 42: 35.849279 + 00: 00 приложение [web.1]: /app/vendor/bundle/ruby/2.0.0/gems/puma-2.11.3/lib/ puma/configuration.rb: 51: in call' 2015-11-16T21:42:35.849265+00:00 app[web.1]: /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/fileutils.rb:203:in mkdir_p ' 2015-11-16T21: 42: 35.849257 + 00: 00 приложение [web.1]: /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/fileutils.rb:242:in fu_mkdir' 2015-11-16T21:42:35.849267+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/rack-cache-1.2/lib/rack/cache/metastore.rb:261:in новый ' 2015-11-16T21: 42: 35.849277 + 00: 00 приложение [web.1]: /app/vendor/bundle/ruby/2.0.0/gems/rack-cache-1.2/lib/rack/cache/context. rb: 51: in call' 2015-11-16T21:42:35.849280+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/puma-2.11.3/lib/puma/server.rb:262:in блок в запуске ' 2015-11-16T21: 42: 35.849256 + 00: 00 приложение [web.1]: /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/ fileutils.rb: 242: in mkdir' 2015-11-16T21:42:35.849259+00:00 app[web.1]: /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/fileutils.rb:219:in блок (2 уровня) в mkdir_p ' 2015-11-16T21: 42: 35.849266 + 00: 00 приложение [web.1]: /app/vendor/bundle/ruby/2.0.0/ gems/rack-cache-1.2/lib/rack/cache/metastore.rb: 218: in initialize' 2015-11-16T21:42:35.849280+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/puma-2.11.3/lib/puma/server.rb:375:in process_client ' 2015-11-16T21: 42: 35.849263 + 00: 00 приложение [web.1]:/app/vendor/ruby-2.0.0/lib/ruby ​​/ 2.0.0/fileutils.rb: 217: in reverse_each' 2015-11-16T21:42:35.849263+00:00 app[web.1]: /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/fileutils.rb:217:in блок в mkdir_p ' 2015-11-16T 21: 42: 35.849269 + 00: 00 приложение [web.1]: /app/vendor/bundle/ruby/2.0.0/gems/rack-cache-1.2/lib/rack/cache/storage.rb:18:in resolve_metastore_uri' 2015-11-16T21:42:35.849276+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/rack-cache-1.2/lib/rack/cache/context.rb:71:in звоните! ' 2015-11-16T21: 42: 35.849282 + 00: 00 приложение [web.1]: /app/vendor/bundle/ruby/2.0.0/gems/puma-2.11.3/lib/puma/thread_pool.rb: 104: in block in spawn_thread' 2015-11-16T21:42:35.849267+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/rack-cache-1.2/lib/rack/cache/metastore.rb:261:in Решение ' 2015-11-16T21: 42: 35.849269 + 00: 00 приложение [web.1]: /app/vendor/bundle/ruby/2.0.0/gems/rack-cache-1.2/lib/ rack/cache/context.rb: 34: in metastore' 2015-11-16T21:42:35.849278+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/rack-ssl-1.4.1/lib/rack/ssl.rb:27:in call ' 2015-11-16T21: 42: 35.849279 + 00: 00 приложение [web.1]: /app/vendor/bundle/ruby/2.0.0/gems/ puma-2.11.3/lib/puma/server.rb: 507: in `handle_request '

ответ

0

Я нигде рядом с вашим уровнем и не тестировал его, но я искал аналогичные перед настройкой приложения-посредника. Я наткнулся на этот пост, который использует Netlify: http://netengine.com.au/blog/simple-static-sites/

Netlify автоматически размещается сайт, но вы также можете настроить процесс сборки для развертывания в другом месте.

Опять же, я очень много стартера на это, но, надеюсь, есть некоторые ответы ...

Редактировать Если вы получите эту работу, я хотел бы услышать, как .. ,

0

Я очень рекомендую переехать в Netlify. Он уже имеет встроенные веб-камеры и будет генерировать URL-адрес, который вы можете добавить в Contentful. Всякий раз, когда новое сообщение публикуются на содержательном, Netlify уведомлен и следующая команда сборки запускается ...

middleman contentful --rebuild; middleman build --verbose 

Я сделал публичный репозиторий для установки я бег, он все еще на постановки на текущее время Я делаю еще несколько тестов с Middleman v4, а драгоценный камень Contentful немного устарел, поскольку это fork для v4. Но это должно помочь вам в настройке.

https://github.com/thisiscapra/thisiscapra.com/tree/staging

1

К сожалению, нет никакого способа, чтобы обновить статический сайт на Heroku, не делая новый толчок. Это ограничение самого Героку, как вы сказали.

Альтернативы:

  • Netlify (как описано в других ответах)

  • GitHub Pages

  • Forge

  • и, возможно, другой статический сайт хост ...

Я тестировал только страницы GitHub, в то время как другие, как известно, использовались другими, используя своего рода хакерство, но работали.

Позвольте мне перейти объяснить:

  1. Есть сервер предварительного просмотра работает локально.

  2. Run ngrok http $SOME_FREE_PORT

  3. Настройка webhooks целевой $YOUR_NGROK_URL:$SOME_FREE_PORT/receive

  4. ли ваш каталог /build провести новый Git Repo, который имеет pages дистанционное наведение на GitHub Pages

  5. В настоящее время Webhook контроллеры не настраивается (но будет в будущем выпуске). В то же время вы можете сделать следующее:

module ContentfulMiddleman 
     class WebhookHandler 
     def perform(*) 
      super 
      rebuild_and_push = <<-BASH 
      bundle exec middleman contentful --rebuild && \ 
      bundle exec middleman build && \ 
      cd build && \ 
      git commit -ca "Webhook Triggered Rebuild" && \ 
      git push pages master 
      BASH 
      system(rebuild_and_push) 
     end 
     end 
    end 

Это же рабочий процесс может применяться к Heroku, если автоматизировать толчок Heroku вместо GitHub Pages.

Надеюсь, это поможет.

Если возможно, можете ли вы открыть вопрос на нашем GitHub repo, чтобы мы могли добавить подходящий учебник для этого случая использования и получить напоминание для пользовательских обработчиков Webhook?

+0

Каким образом указанный выше код указывает на маршрут/прием? – luke

+0

Это определяется здесь: https://github.com/contentful/contentful_middleman/blob/master/lib/contentful_middleman/webhook_handler.rb.Cheers –

+0

Спасибо за это @david, выяснил это через час или два после того, как я спросил. – luke

 Смежные вопросы

  • Нет связанных вопросов^_^