Mustachers

Providing mustache rendering using Rust by wrapping the mustache crate.

At the moment only a simple render function taking a template file and parameters to interpolate. This does not look to replace or compete with the ruby offering, but provides an alternative seemingly offering a performance enhancement.

Installation

Install the gem and add to the application's Gemfile by executing:

$ bundle add mustachers

If bundler is not being used to manage dependencies, install the gem by executing:

$ gem install mustachers

Usage

Require the gem if needed. Some might be dynamically loaded.

require 'mustachers'

An example of using the gem.

Mustachers::Renderer.render("<h1>{{text}}</h1>", {text: "abc123"})

From the console.

bundle exec ruby -r mustachers -e 'puts Mustachers::Renderer.render("<h1>{{text}}</h1>", {text: "abc123"})'
<h1>abc123</h1>

Benchmark

The script for this can be found in the benchmarks directory.

bundle exec ruby benchmarks/simple.rb
       user     system      total        real
 236.928979   1.059659 237.988638 (239.572824) # ruby
  13.929279   0.069823  13.999102 ( 14.088116) # rust

Development

TODO:

  • [ ] Check Ruby performance such as any memory leaks and garbage collection.
  • [ ] Improve the error handling to raise an appropriate error.
  • [ ] Unit tests in rust to provide faster feedback while developing.
  • [ ] More options for the template rendering such as reading the file.
  • [ ] Benchmarking with different sized inputs.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/samfrench/mustachers.