documentcloud / jammit

Industrial Strength Asset Packaging for Rails
http://documentcloud.github.com/jammit/
MIT License
1.16k stars 197 forks source link

Specify template root path #192

Open jasonm opened 12 years ago

jasonm commented 12 years ago

When using Jammit, we run into a slightly sticky issue as an app grows from one template subdirectory to multiple template subdirectories.

Let's say you place templates in app/templates. You work for a while on the "Tasks" feature, placing templates under app/templates/tasks. So, window.JST looks something like:

JST['form']
JST['show']
JST['index']

Now, you add another directory under app/templates, say app/templates/user. Now, all JST references are prefixed with their parent directory name so they are unambiguous:

JST['tasks/form']
JST['tasks/show']
JST['tasks/index']
JST['users/new']
JST['users/show']
JST['users/index']

This breaks existing JST references. We've worked around this in new apps by monkeypatching the jammit base template path to a fixed parent directory from the get-go:

Jammit::Compressor.class_eval do
  private
  def find_base_path(path)
    File.expand_path(Rails.root.join('app','templates'))
  end
end

What do you think of either allowing a configurable option? Say, an assets.yml entry template_base_path which, if present, is always used as the template base path. In the absence of this option, the current logic would be preserved.

shakerlxxv commented 12 years ago

+1 for the configurable option.

jasonm commented 12 years ago

Thoughts from the authors? Would you accept a pull request adding the configurable option?

jashkenas commented 12 years ago

Sounds good to me.