Parklife é uma biblioteca Ruby para renderizar um aplicativo Rack (Rails/Sinatra/etc) em um site estático para que possa ser servido por Netlify, Now, GitHub Pages, S3 ou outro servidor estático.
Adicione Parklife ao Gemfile do seu aplicativo e execute a instalação do pacote.
gem 'parklife'
Agora gere um arquivo de configuração Parkfile e crie um script. Inclua algumas configurações específicas do Rails ou Sinatra passando --rails
ou --sinatra
, crie um fluxo de trabalho GitHub Actions para gerar sua construção Parklife e envie-a para GitHub Pages passando --github-pages
.
$ bundle exec parklife init
Parklife é configurado com um arquivo chamado Parkfile
na raiz do seu projeto, aqui está um exemplo de Parkfile
para um aplicativo Rails imaginário:
# Load Parklife's Rails-specific integration which, among other things, allows
# you to use URL helpers within the `routes` block below.
require 'parklife/rails'
# Load the Rails application, this gives you full access to the application's
# environment from this file - using models for example.
require_relative 'config/environment'
Parkfile . application . routes do
# Start from the homepage and crawl all links.
root crawl : true
# Some extra paths that aren't discovered while crawling.
get feed_path ( format : :atom )
get sitemap_path ( format : :xml )
# A couple more hidden pages.
get easter_egg_path , crawl : true
# Services typically allow a custom 404 page.
get '404.html'
end
Listar as rotas incluídas no aplicativo Parklife acima com parklife routes
resultaria no seguinte:
$ bundle exec parklife routes
/ crawl=true
/feed.atom
/sitemap.xml
/easter_egg crawl=true
/404.html
Agora você pode executar parklife build
que irá buscar todas as rotas e salvá-las no diretório build
pronto para ser servido como um site estático. A inspeção do diretório de compilação pode ser assim:
$ find build -type f
build/404.html
build/about/index.html
build/blog/index.html
build/blog/2019/03/07/developers-developers-developers/index.html
build/blog/2019/04/21/modern-life-is-rubbish/index.html
build/blog/2019/05/15/introducing-parklife/index.html
build/easter_egg/index.html
build/easter_egg/surprise/index.html
build/index.html
build/location/index.html
build/feed.atom
build/sitemap.xml
Parklife não conhece ativos (imagens, CSS, etc), então você provavelmente também precisará gerá-los e copiá-los para o diretório de construção, consulte o script de construção completo do exemplo do Rails para saber como fazer isso.
Dê uma olhada nos exemplos de trabalho de Rails, Rack e Sinatra neste repositório.
Às vezes, você precisa apontar para o URL completo de um link - talvez para um URL de feed ou de tag social. Você pode dizer ao Parklife para fazer suas solicitações simuladas com um protocolo/host específico, definindo sua base
para que os auxiliares *_url
do Rails apontem para o host correto:
Parklife . application . config . base = 'https://foo.example.com'
O URL base também pode ser passado no momento da construção, o que substituirá a configuração do Parkfile:
$ bundle exec parklife build --base https://benpickles.github.io/parklife
index.html
aninhados) Por padrão, o Parklife armazena arquivos em um arquivo index.html
aninhado no diretório com o mesmo nome do caminho - portanto, a rota /my/nested/route
é armazenada em /my/nested/route/index.html
. Isso é para garantir que os links dentro do aplicativo funcionem sem modificações, tornando mais fácil para qualquer servidor estático hospedar a compilação.
No entanto, é possível desativar isso para que /my/nested/route
seja armazenado em /my/nested/route.html
. Isso permite que você sirva URLs sem barras com GitHub Pages ou com Netlify usando seu recurso Pretty URLs ou com alguma configuração nginx personalizada.
Parklife . application . config . nested_index = false
O diretório de construção não deveria existir e é destruído e recriado antes de cada construção. O padrão é build
.
Parklife . application . config . build_dir = 'my/build/dir'
Por padrão, se o Parklife encontrar uma resposta 404 ao buscar uma rota, ele gerará uma exceção (a configuração :error
) e interromperá a construção. Outros valores são:
:warn
- envia uma mensagem para stderr
, salva a resposta e continua o processamento.:skip
- ignore silenciosamente e não salve a resposta e continue o processamento. Parklife . application . config . on_404 = :warn
Se você não estiver usando a configuração do Rails, você mesmo precisará defini-la, veja os exemplos.
Parklife . application . config . app
A gema está disponível como código aberto sob os termos da licença MIT.
Espera-se que todos que interagem nas bases de código, rastreadores de problemas, salas de bate-papo e listas de discussão do projeto Parklife sigam o código de conduta.