Parklife は、Rack アプリ (Rails/Sinatra など) を静的サイトにレンダリングするための Ruby ライブラリで、Netlify、Now、GitHub Pages、S3、または別の静的サーバーでサービスを提供できるようにします。
Parklife をアプリケーションの Gemfile に追加し、バンドル インストールを実行します。
gem 'parklife'
次に、Parkfile 構成ファイルを生成し、スクリプトをビルドします。 --rails
または--sinatra
を渡すことで Rails または Sinatra 固有の設定を組み込み、GitHub Actions ワークフローを作成して Parklife ビルドを生成し、 --github-pages
を渡すことで GitHub Pages にプッシュします。
$ bundle exec parklife init
Parklife は、プロジェクトのルートにあるParkfile
というファイルで構成されます。これは、架空の Rails アプリのParkfile
例です。
# 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
上記の Parklife アプリケーションに含まれるルートをparklife routes
とともにリストすると、次のように出力されます。
$ bundle exec parklife routes
/ crawl=true
/feed.atom
/sitemap.xml
/easter_egg crawl=true
/404.html
これで、すべてのルートをフェッチし、静的サイトとして提供できる準備ができたbuild
ディレクトリに保存するparklife build
実行できるようになります。ビルド ディレクトリを調べると次のようになります。
$ 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 はアセット (画像、CSS など) については認識しないため、それらを生成してビルド ディレクトリにコピーする必要がある可能性があります。これを行う方法については、Rails サンプルの完全なビルド スクリプトを参照してください。
このリポジトリ内の Rails、Rack、Sinatra の動作例をご覧ください。
場合によっては、リンクの完全な URL を指す必要があります (フィードまたはソーシャル タグの URL など)。 Rails *_url
ヘルパーが正しいホストを指すようにbase
設定することで、Parklife に特定のプロトコル/ホストでモック リクエストを作成するように指示できます。
Parklife . application . config . base = 'https://foo.example.com'
ベース URL は、Parkfile 設定をオーバーライドするビルド時に渡すこともできます。
$ bundle exec parklife build --base https://benpickles.github.io/parklife
index.html
オフにする)デフォルトでは、Parklife はパスと同じ名前のディレクトリにネストされたindex.html
ファイルにファイルを保存します。そのため、ルート/my/nested/route
/my/nested/route/index.html
に保存されます。これは、アプリ内のリンクが変更なしで機能することを確認し、静的サーバーがビルドをホストしやすくするためです。
ただし、これをオフにして、 /my/nested/route
/my/nested/route.html
に保存することもできます。これにより、Pretty URL 機能またはカスタム nginx 構成を使用して、GitHub Pages または Netlify で末尾のスラッシュのない URL を提供できるようになります。
Parklife . application . config . nested_index = false
ビルド ディレクトリは存在すべきではないため、各ビルドの前に破棄され、再作成されます。デフォルトはbuild
です。
Parklife . application . config . build_dir = 'my/build/dir'
デフォルトでは、Parklife がルートを取得するときに 404 応答を検出すると、例外 ( :error
設定) が発生し、ビルドが停止します。他の値は次のとおりです。
:warn
- メッセージをstderr
に出力し、応答を保存して、処理を続行します。:skip
- 応答を無視して保存せず、処理を続行します。 Parklife . application . config . on_404 = :warn
Rails 構成を使用していない場合は、これを自分で定義する必要があります。例を参照してください。
Parklife . application . config . app
この gem は、MIT ライセンスの条件に基づいてオープン ソースとして利用できます。
Parklife プロジェクトのコードベース、問題トラッカー、チャット ルーム、メーリング リストでやり取りするすべての人は、行動規範に従うことが期待されます。