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:
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.
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 underapp/templates/tasks
. So, window.JST looks something like:Now, you add another directory under
app/templates
, sayapp/templates/user
. Now, all JST references are prefixed with their parent directory name so they are unambiguous: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:
What do you think of either allowing a configurable option? Say, an
assets.yml
entrytemplate_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.