stache 0.9.1 → 1.0.0.rc

Sign up to get free protection for your applications and to get access to all the features.
data/.rvmrc CHANGED
@@ -1 +1 @@
1
- rvm use --create 1.9.2-p180@stache_gem
1
+ rvm use --create 1.9.3@stache_gem
data/README.md CHANGED
@@ -4,6 +4,12 @@ A Rails 3.x compatible Mustache/Handlebars Template Handler, with support for pa
4
4
 
5
5
  [![Build Status](https://secure.travis-ci.org/agoragames/stache.png)](http://travis-ci.org/agoragames/stache)
6
6
 
7
+ ## 1.0.0.rc
8
+
9
+ Major overhaul to the mustache side of things. Backwards compatibility *should* be intact. If not, file a bug and it will get taken care of.
10
+
11
+ Handlebars can also handle application layouts, and you can use subclasses of Stache::Handlebars::View to define view-specific helpers now.
12
+
7
13
  ## Notice Of Breaking Changes
8
14
 
9
15
  Stache 0.9.x adds handlebars support. In the process, the public API has changed *ever-so-slightly*. Specifically, you'll need to require the mustache or handlebars gems on your own, **and** you'll need to tell Stache which one (or both!) you want to use. Add `config.use :mustache` to your initializer.
data/Rakefile CHANGED
@@ -1,34 +1,14 @@
1
- require 'rubygems'
2
-
3
- begin
4
- require 'bundler'
5
- rescue LoadError
6
- $stderr.puts "You must install bundler - run `gem install bundler`"
7
- end
8
-
9
- begin
10
- Bundler.setup
11
- rescue Bundler::BundlerError => e
12
- $stderr.puts e.message
13
- $stderr.puts "Run `bundle install` to install missing gems"
14
- exit e.status_code
15
- end
1
+ require 'bundler/gem_tasks'
16
2
  require 'rake'
17
-
18
- require 'bueller'
19
- Bueller::Tasks.new
20
-
21
3
  require 'rspec/core/rake_task'
22
- RSpec::Core::RakeTask.new(:examples) do |examples|
23
- examples.rspec_opts = '-Ispec'
24
- end
25
4
 
26
- RSpec::Core::RakeTask.new(:rcov) do |spec|
27
- spec.rspec_opts = '-Ispec'
28
- spec.rcov = true
5
+ RSpec::Core::RakeTask.new(:spec) do |spec|
6
+ spec.pattern = 'spec/**/*_spec.rb'
7
+ spec.rspec_opts = ['--backtrace']
8
+ # spec.ruby_opts = ['-w']
29
9
  end
30
10
 
31
- task :default => :examples
11
+ task :default => :spec
32
12
 
33
13
  require 'rake/rdoctask'
34
14
  Rake::RDocTask.new do |rdoc|
data/lib/stache.rb CHANGED
@@ -2,6 +2,8 @@ require "stache/version"
2
2
  require "stache/config"
3
3
  require "stache/util"
4
4
  require "stache/asset_helper"
5
+ require "stache/view_context"
6
+ require "stache/system"
5
7
 
6
8
  if defined? ::Rails::Railtie and ::Rails::VERSION::MAJOR >= 3
7
9
  require 'stache/railtie'
@@ -12,21 +12,28 @@ module Stache
12
12
 
13
13
  def compile(template)
14
14
  handlebars_class = handlebars_class_from_template(template)
15
-
16
15
  <<-RUBY_CODE
17
16
  handlebars = ::#{handlebars_class}.new
17
+ handlebars.view = self
18
18
 
19
19
  handlebars.register_helper('helperMissing') do |name, *args|
20
20
  meth, *params, options = args
21
- if params.size == 0
22
- ""
21
+
22
+ if handlebars.respond_to?(meth)
23
+ handlebars.send(meth, *params)
23
24
  elsif self.respond_to?(meth)
24
25
  self.send(meth, *params)
26
+ elsif params.size == 0
27
+ ""
25
28
  else
26
29
  raise "Could not find property '\#\{meth\}'"
27
30
  end
28
31
  end
29
32
 
33
+ handlebars.register_helper('yield') do |name, *args|
34
+ content_for(:layout)
35
+ end
36
+
30
37
  template = handlebars.compile('#{template.source.gsub(/'/, "\\\\'")}');
31
38
  vars = {}
32
39
  partial_renderer = @view_renderer.send(:_partial_renderer)
@@ -5,9 +5,11 @@ module Stache
5
5
  #
6
6
  # A Convienent Base Class for the views. Subclass this for autoloading magic with your templates.
7
7
  class View < ::Handlebars::Context
8
+ attr_accessor :view
8
9
 
9
- # crickets. So, this isn't as useful right now since you have to call #register_helper
10
- # and #partial_missing on the instance, but I'm sure we'll find a use for it :).
10
+ def method_missing(method, *args, &block)
11
+ view.send(method, *args, &block)
12
+ end
11
13
 
12
14
  end
13
15
  end
@@ -1,7 +1,9 @@
1
1
  require "stache/mustache/handler"
2
+ require "stache/mustache/layout"
2
3
 
3
4
  module Stache
4
5
  module Mustache; end
5
6
  end
6
7
 
7
- ActionView::Template.register_template_handler :mustache, Stache::Mustache::Handler
8
+ ActionView::Template.register_template_handler :rb, Stache::Mustache::Handler
9
+ ActionView::Template.register_template_handler :mustache, Stache::Mustache::Handler
@@ -20,9 +20,17 @@ module Stache
20
20
  <<-MUSTACHE
21
21
  mustache = ::#{mustache_class}.new
22
22
  mustache.view = self
23
- mustache.template = '#{template.source.gsub(/'/, "\\\\'")}'
23
+
24
+ # If we are rendering an abstract Stache::View class, don't render any template.
25
+ if #{mustache_class} == Stache::Mustache::View
26
+ template_source = '#{template.source.gsub(/'/, "\\\\'")}'
27
+ else
28
+ template_name = mustache.template_name+".#{template.formats.first.to_s}."+mustache.template_extension
29
+ template_source = File.read(File.join(::Stache.template_base_path, template_name))
30
+ end
31
+
32
+ mustache.template = template_source
24
33
  mustache.virtual_path = '#{template.virtual_path.to_s}'
25
- mustache[:yield] = content_for(:layout)
26
34
  mustache.context.update(local_assigns)
27
35
  variables = controller.instance_variable_names
28
36
  variables -= %w[@template]
@@ -52,6 +60,13 @@ module Stache
52
60
 
53
61
  # suss out a constant name for the given template
54
62
  def mustache_class_from_template(template)
63
+ # If we don't have a source template to render, return an abstract view class.
64
+ # This is normally used with rspec-rails. You probably never want to normally
65
+ # render a bare Stache::View
66
+ if template.source.empty?
67
+ return Stache::Mustache::View
68
+ end
69
+
55
70
  const_name = ActiveSupport::Inflector.camelize(template.virtual_path.to_s)
56
71
  begin
57
72
  const_name.constantize
@@ -67,4 +82,4 @@ module Stache
67
82
 
68
83
  end
69
84
  end
70
- end
85
+ end
@@ -0,0 +1,34 @@
1
+ module Stache
2
+ module Mustache
3
+ # This class is for providing layouts in a better way.
4
+ # Your page class should extend this class.
5
+ class Layout < ::Stache::Mustache::View
6
+ attr_writer :layout
7
+
8
+ def layout
9
+ @layout ||= :layout
10
+ end
11
+
12
+ # template here would be the pages' template, not the layout.
13
+ def render(data = template, ctx = {})
14
+ # Store the current template, we'll need to stuff it inside the layout
15
+ page_template = data
16
+
17
+ # Grab the layout template, to render it at the end
18
+ layout_template = partial(layout)
19
+
20
+ # Render the page_template using this class's context
21
+ # (which will be combined with the layout context)
22
+ rendered_template = super(page_template, ctx)
23
+
24
+ # stick that rendered template as :yield into the layout template
25
+ # (which will be combined with the current context)
26
+ if (!ctx.is_a?(::Mustache::Context))
27
+ rendered_template = super(layout_template, :yield => rendered_template)
28
+ end
29
+
30
+ rendered_template
31
+ end
32
+ end
33
+ end
34
+ end
@@ -32,6 +32,17 @@ module Stache
32
32
  template.source
33
33
  end
34
34
 
35
+ def helpers
36
+ self.class.helpers
37
+ end
38
+ alias :h :helpers
39
+
40
+ class << self
41
+ def helpers
42
+ Stache::ViewContext.current
43
+ end
44
+ alias :h :helpers
45
+ end
35
46
  end
36
47
  end
37
- end
48
+ end
@@ -7,5 +7,11 @@ module Stache
7
7
  config.to_prepare do
8
8
  ApplicationController.send(:append_view_path, Stache.template_base_path)
9
9
  end
10
+
11
+ initializer 'stache.extend_action_controller_base' do
12
+ ActiveSupport.on_load(:action_controller) do
13
+ Stache::System.setup
14
+ end
15
+ end
10
16
  end
11
17
  end
@@ -0,0 +1,7 @@
1
+ module Stache
2
+ class System
3
+ def self.setup
4
+ ActionController::Base.send(:include, Stache::ViewContextFilter)
5
+ end
6
+ end
7
+ end
@@ -1,3 +1,3 @@
1
1
  module Stache
2
- VERSION = "0.9.1"
2
+ VERSION = "1.0.0.rc"
3
3
  end
@@ -0,0 +1,21 @@
1
+ module Stache
2
+ module ViewContext
3
+ def self.current
4
+ Thread.current[:current_view_context]
5
+ end
6
+
7
+ def self.current=(input)
8
+ Thread.current[:current_view_context] = input
9
+ end
10
+ end
11
+
12
+ module ViewContextFilter
13
+ def set_current_view_context
14
+ Stache::ViewContext.current = self.view_context
15
+ end
16
+
17
+ def self.included(source)
18
+ source.send(:before_filter, :set_current_view_context) if source.respond_to?(:before_filter)
19
+ end
20
+ end
21
+ end
@@ -4,7 +4,7 @@ describe StacheController do
4
4
  render_views
5
5
 
6
6
  before do
7
- Stache.template_base_path = ::Rails.root.join('app', 'views')
7
+ #Stache.template_base_path = ::Rails.root.join('app', 'views')
8
8
  end
9
9
 
10
10
  it "can get to index and render a Mustache" do
@@ -31,5 +31,18 @@ describe StacheController do
31
31
  response.body.should =~ /link href="\/assets\/test\.css"/
32
32
  end
33
33
 
34
+ it "uses a layout" do
35
+ get :with_layout
36
+ assert_response 200
37
+
38
+ response.body.should == "Wrap\nThis is wrapped in a layout\n\nEndWrap\n"
39
+ end
34
40
 
41
+ it "can get render a mustache with rails helpers", :type => :stache do
42
+ get :helper
43
+ assert_response 200
44
+
45
+ response.should render_template 'helper' # view
46
+ response.body.should == "/stache\n"
47
+ end
35
48
  end
@@ -1,8 +1,7 @@
1
1
  class StacheController < ApplicationController
2
+ layout false
2
3
 
3
4
  def index
4
- @user = params[:user] || "Matt"
5
- # index.html.mustache
6
5
  end
7
6
 
8
7
  def with_partials
@@ -15,4 +14,12 @@ class StacheController < ApplicationController
15
14
  # with_asset_helpers.html.mustache
16
15
  end
17
16
 
18
- end
17
+ def with_layout
18
+
19
+ end
20
+
21
+ def helper
22
+ Stache::ViewContext.current = self.view_context
23
+ end
24
+
25
+ end
@@ -0,0 +1 @@
1
+ {{url}}
@@ -0,0 +1,7 @@
1
+ module Stache
2
+ class Helper < Stache::Mustache::View
3
+ def url
4
+ h.stache_path
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Stache
2
+ class Index < Stache::Mustache::View
3
+ def user
4
+ 'Matt'
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,3 @@
1
+ Wrap
2
+ {{yield}}
3
+ EndWrap
@@ -0,0 +1 @@
1
+ This is wrapped in a layout
@@ -0,0 +1,5 @@
1
+ module Stache
2
+ class WithLayout < Stache::Mustache::Layout
3
+
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module Stache
2
+ class WithPartials < Stache::Mustache::View
3
+
4
+ end
5
+ end
@@ -1,5 +1,7 @@
1
1
  # Load the rails application
2
2
  require File.expand_path('../application', __FILE__)
3
3
 
4
+ Dummy::Application.config.autoload_paths << Rails.root + 'app/views'
5
+
4
6
  # Initialize the rails application
5
7
  Dummy::Application.initialize!
@@ -1,6 +1,10 @@
1
1
  Dummy::Application.routes.draw do
2
2
  get 'stache', :to => 'stache#index', :as => 'stache'
3
3
 
4
+ get 'stache/with_layout', :to => 'stache#with_layout'
5
+
6
+ get 'stache/helper', :to => 'stache#helper'
7
+
4
8
  get 'stache/with_partials', :to => 'stache#with_partials'
5
9
 
6
10
  get 'stache/with_asset_helpers', :to => 'stache#with_asset_helpers'
data/stache.gemspec CHANGED
@@ -30,7 +30,6 @@ Gem::Specification.new do |s|
30
30
  s.add_development_dependency 'rspec'
31
31
  s.add_development_dependency 'rspec-rails'
32
32
  s.add_development_dependency 'bundler'
33
- s.add_development_dependency 'bueller'
34
33
  s.add_development_dependency 'rake'
35
34
  end
36
35
 
metadata CHANGED
@@ -1,115 +1,136 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: stache
3
- version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.9.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0.rc
5
+ prerelease: 6
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Matt Wilson
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2012-05-17 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
12
+ date: 2012-11-09 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
16
15
  name: mustache
17
- prerelease: false
18
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
19
17
  none: false
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
24
22
  type: :development
25
- version_requirements: *id001
26
- - !ruby/object:Gem::Dependency
27
- name: handlebars
28
23
  prerelease: false
29
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: handlebars
32
+ requirement: !ruby/object:Gem::Requirement
30
33
  none: false
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
- version: "0"
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
35
38
  type: :development
36
- version_requirements: *id002
37
- - !ruby/object:Gem::Dependency
38
- name: rails
39
39
  prerelease: false
40
- requirement: &id003 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
41
41
  none: false
42
- requirements:
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rails
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
43
51
  - - ~>
44
- - !ruby/object:Gem::Version
52
+ - !ruby/object:Gem::Version
45
53
  version: 3.2.0
46
54
  type: :development
47
- version_requirements: *id003
48
- - !ruby/object:Gem::Dependency
49
- name: rspec
50
55
  prerelease: false
51
- requirement: &id004 !ruby/object:Gem::Requirement
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 3.2.0
62
+ - !ruby/object:Gem::Dependency
63
+ name: rspec
64
+ requirement: !ruby/object:Gem::Requirement
52
65
  none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- version: "0"
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
57
70
  type: :development
58
- version_requirements: *id004
59
- - !ruby/object:Gem::Dependency
60
- name: rspec-rails
61
71
  prerelease: false
62
- requirement: &id005 !ruby/object:Gem::Requirement
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: rspec-rails
80
+ requirement: !ruby/object:Gem::Requirement
63
81
  none: false
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: "0"
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
68
86
  type: :development
69
- version_requirements: *id005
70
- - !ruby/object:Gem::Dependency
71
- name: bundler
72
87
  prerelease: false
73
- requirement: &id006 !ruby/object:Gem::Requirement
88
+ version_requirements: !ruby/object:Gem::Requirement
74
89
  none: false
75
- requirements:
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- version: "0"
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: bundler
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
79
102
  type: :development
80
- version_requirements: *id006
81
- - !ruby/object:Gem::Dependency
82
- name: bueller
83
103
  prerelease: false
84
- requirement: &id007 !ruby/object:Gem::Requirement
104
+ version_requirements: !ruby/object:Gem::Requirement
85
105
  none: false
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: "0"
90
- type: :development
91
- version_requirements: *id007
92
- - !ruby/object:Gem::Dependency
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
93
111
  name: rake
94
- prerelease: false
95
- requirement: &id008 !ruby/object:Gem::Requirement
112
+ requirement: !ruby/object:Gem::Requirement
96
113
  none: false
97
- requirements:
98
- - - ">="
99
- - !ruby/object:Gem::Version
100
- version: "0"
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
101
118
  type: :development
102
- version_requirements: *id008
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
103
126
  description: A rails 3.x compatible template handler, configurable.
104
127
  email: mhw@hypomodern.com
105
128
  executables: []
106
-
107
129
  extensions: []
108
-
109
- extra_rdoc_files:
130
+ extra_rdoc_files:
110
131
  - LICENSE
111
132
  - README.md
112
- files:
133
+ files:
113
134
  - .document
114
135
  - .gitignore
115
136
  - .rspec
@@ -128,10 +149,13 @@ files:
128
149
  - lib/stache/handlebars/view.rb
129
150
  - lib/stache/mustache.rb
130
151
  - lib/stache/mustache/handler.rb
152
+ - lib/stache/mustache/layout.rb
131
153
  - lib/stache/mustache/view.rb
132
154
  - lib/stache/railtie.rb
155
+ - lib/stache/system.rb
133
156
  - lib/stache/util.rb
134
157
  - lib/stache/version.rb
158
+ - lib/stache/view_context.rb
135
159
  - spec/controllers/handlebars_controller_spec.rb
136
160
  - spec/controllers/stache_controller_spec.rb
137
161
  - spec/dummy/Rakefile
@@ -147,9 +171,16 @@ files:
147
171
  - spec/dummy/app/views/handlebars/with_partials.html.hbs
148
172
  - spec/dummy/app/views/layouts/application.html.erb
149
173
  - spec/dummy/app/views/stache/_eaten_by_a.html.mustache
174
+ - spec/dummy/app/views/stache/helper.html.mustache
175
+ - spec/dummy/app/views/stache/helper.rb
150
176
  - spec/dummy/app/views/stache/index.html.mustache
177
+ - spec/dummy/app/views/stache/index.rb
178
+ - spec/dummy/app/views/stache/layout.html.mustache
151
179
  - spec/dummy/app/views/stache/with_asset_helpers.html.mustache
180
+ - spec/dummy/app/views/stache/with_layout.html.mustache
181
+ - spec/dummy/app/views/stache/with_layout.rb
152
182
  - spec/dummy/app/views/stache/with_partials.html.mustache
183
+ - spec/dummy/app/views/stache/with_partials.rb
153
184
  - spec/dummy/config.ru
154
185
  - spec/dummy/config/application.rb
155
186
  - spec/dummy/config/boot.rb
@@ -193,32 +224,32 @@ files:
193
224
  - stache.gemspec
194
225
  homepage: http://github.com/agoragames/stache
195
226
  licenses: []
196
-
197
227
  post_install_message:
198
228
  rdoc_options: []
199
-
200
- require_paths:
229
+ require_paths:
201
230
  - lib
202
- required_ruby_version: !ruby/object:Gem::Requirement
231
+ required_ruby_version: !ruby/object:Gem::Requirement
203
232
  none: false
204
- requirements:
205
- - - ">="
206
- - !ruby/object:Gem::Version
207
- version: "0"
208
- required_rubygems_version: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - ! '>='
235
+ - !ruby/object:Gem::Version
236
+ version: '0'
237
+ segments:
238
+ - 0
239
+ hash: 2542393094037451014
240
+ required_rubygems_version: !ruby/object:Gem::Requirement
209
241
  none: false
210
- requirements:
211
- - - ">="
212
- - !ruby/object:Gem::Version
242
+ requirements:
243
+ - - ! '>='
244
+ - !ruby/object:Gem::Version
213
245
  version: 1.3.7
214
246
  requirements: []
215
-
216
247
  rubyforge_project:
217
- rubygems_version: 1.8.10
248
+ rubygems_version: 1.8.24
218
249
  signing_key:
219
250
  specification_version: 3
220
251
  summary: Configurable Mustache Handler and Helpers for Rails
221
- test_files:
252
+ test_files:
222
253
  - spec/controllers/handlebars_controller_spec.rb
223
254
  - spec/controllers/stache_controller_spec.rb
224
255
  - spec/dummy/Rakefile
@@ -234,9 +265,16 @@ test_files:
234
265
  - spec/dummy/app/views/handlebars/with_partials.html.hbs
235
266
  - spec/dummy/app/views/layouts/application.html.erb
236
267
  - spec/dummy/app/views/stache/_eaten_by_a.html.mustache
268
+ - spec/dummy/app/views/stache/helper.html.mustache
269
+ - spec/dummy/app/views/stache/helper.rb
237
270
  - spec/dummy/app/views/stache/index.html.mustache
271
+ - spec/dummy/app/views/stache/index.rb
272
+ - spec/dummy/app/views/stache/layout.html.mustache
238
273
  - spec/dummy/app/views/stache/with_asset_helpers.html.mustache
274
+ - spec/dummy/app/views/stache/with_layout.html.mustache
275
+ - spec/dummy/app/views/stache/with_layout.rb
239
276
  - spec/dummy/app/views/stache/with_partials.html.mustache
277
+ - spec/dummy/app/views/stache/with_partials.rb
240
278
  - spec/dummy/config.ru
241
279
  - spec/dummy/config/application.rb
242
280
  - spec/dummy/config/boot.rb