Configure Parklife
Parklife is configured via the Parkfile file in the root of your project.
Routes
The final build is a collection of static web pages so only GET requests can be registered – via the #get method. There’s also #root which is a shortcut for get '/'.
Additionally crawl: true can be passed to the route (it’s false by default) in which case Parklife will discover, follow, and save every link (<a> tag) it encounters until there are no new paths to follow from that starting route. It’s quite possible that a single root crawl: true route will build your whole site.
Parklife.application.routes do
# Starting at the root crawl and save every page encountered.
root crawl: true
# Also crawl these pages that aren't linked to from within the main site.
get '/hidden/pages', crawl: true
end
Whilst Parklife follows links (<a> tags) within an HTML page it doesn’t know about other types of links so these must be added to the routes block:
Parklife.application.routes do
get '/feed.atom'
get '/sitemap.xml'
end
Settings
You’ll likely encounter settings via the block form:
Parklife.application.configure do |config|
config.build_dir = 'build'
end
They’re also available on the Parklife application:
Parklife.application.config.build_dir = 'build'
Here’s the full list of settings:
app
If you’re using the Rails integration this is already done for you but otherwise you’ll need to define the app yourself. See some framework examples in the Parklife repository.
Parklife.application.config.app = my_rack_app
base
By default Parklife makes requests to your app at a base URL of http://example.com and although most of the time you won’t have to think about it there are a number of scenarios where your app will need to know its eventual production URL.
Frameworks typically provide URL helpers that – via Rack – are compatible with Parklife’s base setting. This means that, for instance, Rails *_url helpers and the Sinatra url helper will construct correct URLs based on this value.
Linking to full URLs
Sometimes you need to construct a full URL and not just an absolute path – perhaps within a feed or an Open Graph meta tag – in which case your app will need to know its domain and protocol.
Parklife.application.config.base = 'https://parklife.dev'
Hosting at a subpath (ala GitHub Pages)
When developing your app locally it’ll be served from / but that’s not necessarily the case for the production build – for instance a GitHub Pages repository project site is hosted at a subpath of the repository’s name (unless a custom domain is configured). In this case your app needs to be aware that instead of linking to /foo it should link to /subpath/foo.
To tell your app that it will be served from a subpath include it when setting the base:
Parklife.application.config.base = 'https://benpickles.github.io/parklife'
You can also pass just the subpath so in the following example the full base will be http://example.com/subpath:
Parklife.application.config.base = '/parklife'
build_dir
Where Parklife saves its build files. Defaults to build.
Parklife.application.config.build_dir = 'my/build/dir'
nested_index
By default Parklife stores all files in an index.html file nested in a directory with the same name as the path – so content from /my/nested/route will be stored in the file /my/nested/route/index.html. This helps maximise compatibiity with a standard web server by helping to make sure that links within the app work without modification. However, it’s possible to turn this off so that /my/nested/route is stored in /my/nested/route.html.
Parklife.application.config.nested_index = false
Many modern static hosting providers support mapping the URL /my/nested/route to the file /my/nested/route.html – which can sometimes be referred to as friendly/pretty URLs – and it tends to match the common behaviour of server-side Ruby web frameworks.
Here’s a handy table of how various providers handle trailing slashes and the .html file extension.
on_404
By default if Parklife encounters a 404 response when fetching a route it will raise an exception and stop the build (the :error setting). Possible values are:
:error- raise an exception and stop the build.:warn- output a message tostderr, save the response, and continue processing.:skip- silently ignore and not save the response, and continue processing.
Parklife.application.config.on_404 = :warn