Class: Fewer::App
- Inherits:
-
Object
- Object
- Fewer::App
- Defined in:
- lib/fewer/app.rb
Instance Attribute Summary collapse
-
#cache ⇒ Object
readonly
Returns the value of attribute cache.
-
#engine_klass ⇒ Object
readonly
Returns the value of attribute engine_klass.
-
#root ⇒ Object
readonly
Returns the value of attribute root.
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(options = {}) ⇒ App
constructor
A new instance of App.
Constructor Details
#initialize(options = {}) ⇒ App
Returns a new instance of App.
5 6 7 8 9 10 11 12 |
# File 'lib/fewer/app.rb', line 5 def initialize( = {}) @engine_klass = [:engine] @mount = [:mount] @root = [:root] @cache = [:cache] || 3600 * 24 * 365 raise 'You need to define an :engine class' unless @engine_klass raise 'You need to define a :root path' unless @root end |
Instance Attribute Details
#cache ⇒ Object (readonly)
Returns the value of attribute cache.
3 4 5 |
# File 'lib/fewer/app.rb', line 3 def cache @cache end |
#engine_klass ⇒ Object (readonly)
Returns the value of attribute engine_klass.
3 4 5 |
# File 'lib/fewer/app.rb', line 3 def engine_klass @engine_klass end |
#root ⇒ Object (readonly)
Returns the value of attribute root.
3 4 5 |
# File 'lib/fewer/app.rb', line 3 def root @root end |
Instance Method Details
#call(env) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/fewer/app.rb', line 14 def call(env) names = names_from_path(env['PATH_INFO']) engine = engine_klass.new(root, names) headers = { 'Content-Type' => engine.content_type, 'Cache-Control' => "public, max-age=#{cache}" } [200, headers, [engine.read]] rescue Fewer::MissingSourceFileError => e [404, { 'Content-Type' => 'text/plain' }, [e.]] rescue => e [500, { 'Content-Type' => 'text/plain' }, ["#{e.class}: #{e.}"]] end |