RailsBuild

A very small, very simple, very fast, and bullet proof static site generator built as a Rails 5 engine.

How It Works

RailsBuild bundles all your assets, public directory, and configured urls into a static site suitable for deployment to Netlify, Amazon S3, or your favorite static website hosting solution. It does this by:

  • Booting your application in production mode
  • Precompiling all assets
  • Including every static resource in ./public/
  • GET'ing every configured url via super fast parallel downloading

RailsBuild let's you leverage the entire Rails' ecosystem for your static sites and requires learning practically no new techniques to make super fast building static websites.

Configuration

Configuration is quite simple, typically it will be much less than comparable static site generators. You need to drop a ./config/rails_build.rb looking something like this into your app:


  RailsBuild.configure do |rails_build|

    urls = rails_build.urls

    urls << "/"

    urls << "/about/"

    urls << "/contact/"


    Post.each do |post|
      urls << blog_path(post) 
    end

  end


That's it: simply enumerate the urls - anything additional to your assets and ./public/ directory - that you want to include in your build.

On Trailing Slashes

Most static hosting solutions support Apache style directory indexing will be better behaved with urls that look like


  http://my.site.com/blog/

vs.


  http://my.site.com/blog

RailsBuild tries to help you do this with a little bit of Rails' config that is turned on by default but which can be turned off via


  RailsBuild.configure do |rails_build|

    rails_build.trailing_slash false  # the default is 'true'

  end

The only real impact will be felt if you are using relative urls in your site like './about' vs. '../about'

Optimization and Notes

RailsBuild is fast. Very fast. DOJO4 has seen optimized Middleman builds of > 30 minutes dropped to 60 seconds by simply making basic use of Rails' built-in caching facilites.

You app has to run in production mode to build! Don't forget to setup secrets, or anything else generally required in production mode.

When trying to squeeze out performance just remember that RailsBuild runs in production mode and, therefore, making a build go fast follows the exact same rules as making anything other Rails' application fast. The first place to reach is typically fragment caching of partials used in your app.

Finally, don't forget about ./config/initializers/assets.rb - RailsBuild doesn't do anything special to the asset pipeline and only those assets normally built when


  ~> rake assets:precompile

is run will be included in the build.

Installation

Add this line to your application's Gemfile:


  gem 'rails_build'


And then execute:


$ bundle

$ bundle binstubs rails_build


Building Your Site

After installation and configuration simply run


  ~> ./bin/rails_build


# or, if you prefer, simply

  ~> rails build


Netlify

We love Netlify at DOJO4. RailsBuild works with netlify out of the box and simply requires


  build_command : ./bin/rails_build

  build_directory: build

to be configured as the build command and directory respectively.

License

The gem is available as open source under the terms of the MIT License.