Routing and utilities for static pages creation in Rails.
Add this line to your Rails application's Gemfile:
gem "endleaf"
- Use with Ruby on Rails only.
- Create pages in
app/views/pages
with filenames corresponding to their routes. - Add routes to
config/routes.rb
# Simple usage
scope module: 'endleaf' do
get '/pages/:page', to: 'pages#show', as: :page
end
# Use scope and constraints to achieve routes into sub directories
scope "/pages", constraints: { path: /pages\/.*/ } do
get "*page", to: "endleaf/pages#show"
end
# With custom path and layout
# path: app/views/posts
# layout: app/views/layouts/posts.html.erb
scope "/posts", constraints: { path: /posts\/.*/ } do
get "*page", to: "endleaf/pages#show", as: :endleaf_posts_post, defaults: { path: "posts", layout: "posts" }
end
# can be used in specific routes e.g. homepage
# this route is rendered from app/view/pages/home.html.erb (or any supported extensions)
root 'endleaf/pages#show' , page: 'home'
# this route is rendered from app/view/pages/about.html.erb (or any supported extensions)
get 'endleaf/pages#show' , page: 'about'
- Pre-render pages into the
public
directory. Pre-rendered pages can be served by a web server and are more cache-friendly.
bundle exec rake endleaf:render:generate_html
# custom path, layout, output with variables [path,layout,output]
# Example:
# path: app/views/posts
# layout: app/views/layouts/posts.html.erb
# output: public/static/posts
bundle exec rake endleaf:render:generate_html\[posts,posts,static\/posts\]
The gem is available as open source under the terms of the MIT License.