Project

lesmok

0.0
No commit activity in last 3 years
No release in over 3 years
Collection of utility classes, tags etc for use with the Liquid templating system.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.5
~> 0
~> 3.0

Runtime

 Project Readme

Lesmok

Liquid ExtentionS for MOre Komfort

Liquid markup language

Read about Liquid at:

Using Lesmok

Drop the Base...

Make any class "meltable" quickly:

class FilmFanatic::Movie
  include ::Lesmok::Acid::Meltable
end

... and you can start using it in your Liquid templates immediately.

NOTE: All methods are now delegated (ACID - All Content Is Delegated), so you don't want to do this if your liquid templates are "untrustworthy" or your object has potentially destructive methods.

Control the Beat...

The Lesmok::Acid::Drop liquid-drop class is used by default unless you:

  • specify a to_liquid method explicitly in your class,
  • override liquify_drop_klass to return your preferred sub-class of Liquid::Drop,
  • or create an adjacent *Drop class with same naming as your model class.
class FilmFanatic::MovieDrop < ::Lesmok::Acid::Drop    # Quick-n-dirty start.
  alias :movie :source_object                          # For readability.
  def rave                                             # Start adding presenter methods you need.
    "OMG! #{movie.title} is so awesome!"
  end
end

As you clean up, you may want to have more explicit drop control and migrate away from using Acid Drop:

class FilmFanatic::MovieDrop < ::Liquid::Drop
  include ::Lesmok::Acid::Droppable        # To keep compatible with Acid::Drop
  alias :movie :source_object
end

Keep your cache

Given that your object has a cache key, you can use the cached_include tag in your liquid templates:

class FilmFanatic::Movie
  include ::Lesmok::Acid::Meltable
  def cache_key
    "fantastic-movie-#{self.imdb_id}"
  end
end

Then from your template:

{% cached_include 'my/movie/reviews/liquid/template' for { cache_on: fantastic_movie } %}

Installation

Get tha gem...

Add this line to your application's Gemfile:

gem 'lesmok'

And then execute:

$ bundle

Or install it yourself as:

$ gem install lesmok

Initialization and configuration

Lesmok.configure do |conf|
  conf.logger = Rails.logger
  conf.available_cache_stores = {
    default: Rails.cache,
    redis:   $redis        # Using Redis is entirely optional.
  }
  conf.debugging_enabled   =  Rails.env.development?
  conf.caching_enabled     =  proc { Rails.env.production? }
  conf.raise_errors_enabled = Rails.env.development?
end
Lesmok::Liquid::Tags.register_tags

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request