nyny 3.2.2 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/.travis.yml +0 -1
 - data/CHANGELOG +5 -0
 - data/README.md +45 -0
 - data/lib/nyny.rb +0 -32
 - data/lib/nyny/app.rb +38 -23
 - data/lib/nyny/primitives.rb +38 -0
 - data/lib/nyny/{core-ext/templates.rb → templates.rb} +0 -0
 - data/lib/nyny/version.rb +1 -1
 - data/spec/config_spec.rb +46 -0
 - data/spec/inheritance_spec.rb +9 -0
 - data/spec/initialize_hooks_spec.rb +25 -0
 - data/spec/nyny_spec.rb +2 -2
 - data/spec/request_scope_spec.rb +1 -1
 - data/spec/runner_spec.rb +1 -1
 - metadata +7 -4
 - data/lib/nyny/core-ext/runner.rb +0 -11
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 107d11189a291b7486db035f572921ff75946129
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 484670541b44ee3c37e59c219a5769a489caccce
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: a130aa58b46327176465becf3d4d030bdaad6bb6b681ca0c8be4f55658b6fe72351e06050c9d1eafc7a98e4319629045697ea55b09f02725023082453e27fa8c
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 5fb16a4139ac277a4cea7da8320f2e3ead517d8bcaa54c5ae0b71aa20c5dbb7cfe1c75fe5462d33f7b8aa71a3adc85affb562e4997978d634563db9d8f3405db
         
     | 
    
        data/.travis.yml
    CHANGED
    
    
    
        data/CHANGELOG
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | 
         @@ -40,6 +40,7 @@ Open the browser at [http://localhost:9292](http://localhost:9292) 
     | 
|
| 
       40 
40 
     | 
    
         
             
            - [Why use NYNY instead of Sinatra](#why-use-nyny-instead-of-sinatra)
         
     | 
| 
       41 
41 
     | 
    
         
             
            - [Usage](#usage)
         
     | 
| 
       42 
42 
     | 
    
         
             
                - [Environment](#environment)
         
     | 
| 
      
 43 
     | 
    
         
            +
                - [Configuration](#configuration)
         
     | 
| 
       43 
44 
     | 
    
         
             
                - [Running](#running)
         
     | 
| 
       44 
45 
     | 
    
         
             
                - [Defining routes](#defining-routes)
         
     | 
| 
       45 
46 
     | 
    
         
             
                - [Request scope](#request-scope)
         
     | 
| 
         @@ -105,6 +106,50 @@ production 
     | 
|
| 
       105 
106 
     | 
    
         
             
            true
         
     | 
| 
       106 
107 
     | 
    
         
             
            ```
         
     | 
| 
       107 
108 
     | 
    
         | 
| 
      
 109 
     | 
    
         
            +
            ## Configuration
         
     | 
| 
      
 110 
     | 
    
         
            +
            You can configure your app by attaching arbitrary properties to config object:
         
     | 
| 
      
 111 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 112 
     | 
    
         
            +
            class App << NYNY::App
         
     | 
| 
      
 113 
     | 
    
         
            +
              config.foo = 'bar'
         
     | 
| 
      
 114 
     | 
    
         
            +
            end
         
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
      
 116 
     | 
    
         
            +
            App.config.foo #=> 'bar'
         
     | 
| 
      
 117 
     | 
    
         
            +
            ```
         
     | 
| 
      
 118 
     | 
    
         
            +
             
     | 
| 
      
 119 
     | 
    
         
            +
            Or, you can use the configure block:
         
     | 
| 
      
 120 
     | 
    
         
            +
             
     | 
| 
      
 121 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 122 
     | 
    
         
            +
            class App < NYNY::App
         
     | 
| 
      
 123 
     | 
    
         
            +
              configure do
         
     | 
| 
      
 124 
     | 
    
         
            +
                config.always = true
         
     | 
| 
      
 125 
     | 
    
         
            +
              end
         
     | 
| 
      
 126 
     | 
    
         
            +
             
     | 
| 
      
 127 
     | 
    
         
            +
              configdure :production do
         
     | 
| 
      
 128 
     | 
    
         
            +
                config.prod = true
         
     | 
| 
      
 129 
     | 
    
         
            +
              end
         
     | 
| 
      
 130 
     | 
    
         
            +
             
     | 
| 
      
 131 
     | 
    
         
            +
              configure :test, :development do
         
     | 
| 
      
 132 
     | 
    
         
            +
                config.unsafe = true
         
     | 
| 
      
 133 
     | 
    
         
            +
              end
         
     | 
| 
      
 134 
     | 
    
         
            +
            end
         
     | 
| 
      
 135 
     | 
    
         
            +
            ```
         
     | 
| 
      
 136 
     | 
    
         
            +
             
     | 
| 
      
 137 
     | 
    
         
            +
            Also, NYNY provides a simple api for hooking into the app's initialization:
         
     | 
| 
      
 138 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 139 
     | 
    
         
            +
            class App < NYNY::App
         
     | 
| 
      
 140 
     | 
    
         
            +
              before_initialize do |app|
         
     | 
| 
      
 141 
     | 
    
         
            +
                #this will be executed just before the Rack app is compiled
         
     | 
| 
      
 142 
     | 
    
         
            +
                #'app' is the a App instance
         
     | 
| 
      
 143 
     | 
    
         
            +
              end
         
     | 
| 
      
 144 
     | 
    
         
            +
             
     | 
| 
      
 145 
     | 
    
         
            +
              after_initialize do |app, rack_app|
         
     | 
| 
      
 146 
     | 
    
         
            +
                #this will be executed after the Rack app is compiled
         
     | 
| 
      
 147 
     | 
    
         
            +
                #'app' is the a App instance
         
     | 
| 
      
 148 
     | 
    
         
            +
                #'rack_app' is the main block which will be called on any request
         
     | 
| 
      
 149 
     | 
    
         
            +
              end
         
     | 
| 
      
 150 
     | 
    
         
            +
            end
         
     | 
| 
      
 151 
     | 
    
         
            +
            ```
         
     | 
| 
      
 152 
     | 
    
         
            +
             
     | 
| 
       108 
153 
     | 
    
         
             
            ## Running
         
     | 
| 
       109 
154 
     | 
    
         
             
            There are two ways to run a NYNY app __directly__ [[?]](#middleware):
         
     | 
| 
       110 
155 
     | 
    
         | 
    
        data/lib/nyny.rb
    CHANGED
    
    | 
         @@ -1,34 +1,2 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'rack'
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
1 
     | 
    
         
             
            require 'nyny/version'
         
     | 
| 
       4 
2 
     | 
    
         
             
            require 'nyny/app'
         
     | 
| 
       5 
     | 
    
         
            -
            require 'nyny/core-ext/runner'
         
     | 
| 
       6 
     | 
    
         
            -
            require 'nyny/core-ext/templates'
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            module NYNY
         
     | 
| 
       9 
     | 
    
         
            -
              class EnvString < String
         
     | 
| 
       10 
     | 
    
         
            -
                [:production, :development, :test].each do |env|
         
     | 
| 
       11 
     | 
    
         
            -
                  define_method "#{env}?" do
         
     | 
| 
       12 
     | 
    
         
            -
                    self == env.to_s
         
     | 
| 
       13 
     | 
    
         
            -
                  end
         
     | 
| 
       14 
     | 
    
         
            -
                end
         
     | 
| 
       15 
     | 
    
         
            -
              end
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
              class PathString < String
         
     | 
| 
       18 
     | 
    
         
            -
                def join other
         
     | 
| 
       19 
     | 
    
         
            -
                  File.join(self, other)
         
     | 
| 
       20 
     | 
    
         
            -
                end
         
     | 
| 
       21 
     | 
    
         
            -
              end
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
              def self.root
         
     | 
| 
       24 
     | 
    
         
            -
                @root ||= PathString.new(Dir.pwd)
         
     | 
| 
       25 
     | 
    
         
            -
              end
         
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
              def self.env
         
     | 
| 
       28 
     | 
    
         
            -
                @env ||= EnvString.new(ENV['RACK_ENV'] || 'development')
         
     | 
| 
       29 
     | 
    
         
            -
              end
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
              App.register NYNY::Runner
         
     | 
| 
       32 
     | 
    
         
            -
              App.register NYNY::Templates
         
     | 
| 
       33 
     | 
    
         
            -
            end
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
    
        data/lib/nyny/app.rb
    CHANGED
    
    | 
         @@ -1,32 +1,24 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'rack'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'better_errors'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'ostruct'
         
     | 
| 
       1 
4 
     | 
    
         
             
            require 'nyny/primitives'
         
     | 
| 
       2 
5 
     | 
    
         
             
            require 'nyny/request_scope'
         
     | 
| 
       3 
6 
     | 
    
         
             
            require 'nyny/router'
         
     | 
| 
      
 7 
     | 
    
         
            +
            require 'nyny/templates'
         
     | 
| 
       4 
8 
     | 
    
         | 
| 
       5 
9 
     | 
    
         
             
            module NYNY
         
     | 
| 
       6 
10 
     | 
    
         
             
              class App
         
     | 
| 
      
 11 
     | 
    
         
            +
                include NYNY::Inheritable
         
     | 
| 
       7 
12 
     | 
    
         
             
                HTTP_VERBS = [:delete, :get, :head, :options, :patch, :post, :put, :trace]
         
     | 
| 
       8 
13 
     | 
    
         | 
| 
       9 
     | 
    
         
            -
                 
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
                 
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
                 
     | 
| 
       17 
     | 
    
         
            -
                  @_inheritables.each do |attr|
         
     | 
| 
       18 
     | 
    
         
            -
                    subclass.send "#{attr}=", self.send(attr).clone
         
     | 
| 
       19 
     | 
    
         
            -
                    subclass.instance_variable_set "@_inheritables", @_inheritables.clone
         
     | 
| 
       20 
     | 
    
         
            -
                  end
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
                  super
         
     | 
| 
       23 
     | 
    
         
            -
                end
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
                inheritable :builder,       Rack::Builder.new
         
     | 
| 
       26 
     | 
    
         
            -
                inheritable :route_defs,    []
         
     | 
| 
       27 
     | 
    
         
            -
                inheritable :before_hooks,  []
         
     | 
| 
       28 
     | 
    
         
            -
                inheritable :after_hooks,   []
         
     | 
| 
       29 
     | 
    
         
            -
                inheritable :scope_class,   Class.new(RequestScope)
         
     | 
| 
      
 14 
     | 
    
         
            +
                inheritable :builder,           Rack::Builder.new
         
     | 
| 
      
 15 
     | 
    
         
            +
                inheritable :scope_class,       Class.new(RequestScope)
         
     | 
| 
      
 16 
     | 
    
         
            +
                inheritable :config,            OpenStruct.new
         
     | 
| 
      
 17 
     | 
    
         
            +
                inheritable :route_defs,        []
         
     | 
| 
      
 18 
     | 
    
         
            +
                inheritable :before_hooks,      []
         
     | 
| 
      
 19 
     | 
    
         
            +
                inheritable :after_hooks,       []
         
     | 
| 
      
 20 
     | 
    
         
            +
                inheritable :before_init_hooks, []
         
     | 
| 
      
 21 
     | 
    
         
            +
                inheritable :after_init_hooks,  []
         
     | 
| 
       30 
22 
     | 
    
         | 
| 
       31 
23 
     | 
    
         
             
                def initialize app=nil
         
     | 
| 
       32 
24 
     | 
    
         
             
                  self.class.builder.run Router.new({
         
     | 
| 
         @@ -37,7 +29,9 @@ module NYNY 
     | 
|
| 
       37 
29 
     | 
    
         
             
                    :fallback       => app
         
     | 
| 
       38 
30 
     | 
    
         
             
                  })
         
     | 
| 
       39 
31 
     | 
    
         | 
| 
      
 32 
     | 
    
         
            +
                  self.class.before_init_hooks.each {|h| h.call(self)}
         
     | 
| 
       40 
33 
     | 
    
         
             
                  @app = self.class.builder.to_app
         
     | 
| 
      
 34 
     | 
    
         
            +
                  self.class.after_init_hooks.each {|h| h.call(self, @app)}
         
     | 
| 
       41 
35 
     | 
    
         
             
                end
         
     | 
| 
       42 
36 
     | 
    
         | 
| 
       43 
37 
     | 
    
         
             
                def call env
         
     | 
| 
         @@ -67,9 +61,8 @@ module NYNY 
     | 
|
| 
       67 
61 
     | 
    
         | 
| 
       68 
62 
     | 
    
         
             
                  def namespace url, &block
         
     | 
| 
       69 
63 
     | 
    
         
             
                    scope  = self.scope_class
         
     | 
| 
       70 
     | 
    
         
            -
                    parent = self.superclass
         
     | 
| 
       71 
64 
     | 
    
         | 
| 
       72 
     | 
    
         
            -
                    klass = Class.new  
     | 
| 
      
 65 
     | 
    
         
            +
                    klass = Class.new self.superclass do
         
     | 
| 
       73 
66 
     | 
    
         
             
                      self.scope_class = scope
         
     | 
| 
       74 
67 
     | 
    
         
             
                      class_eval(&block)
         
     | 
| 
       75 
68 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -85,6 +78,20 @@ module NYNY 
     | 
|
| 
       85 
78 
     | 
    
         
             
                    after_hooks << Proc.new(&blk)
         
     | 
| 
       86 
79 
     | 
    
         
             
                  end
         
     | 
| 
       87 
80 
     | 
    
         | 
| 
      
 81 
     | 
    
         
            +
                  def before_initialize &blk
         
     | 
| 
      
 82 
     | 
    
         
            +
                    before_init_hooks << Proc.new(&blk)
         
     | 
| 
      
 83 
     | 
    
         
            +
                  end
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
                  def after_initialize &blk
         
     | 
| 
      
 86 
     | 
    
         
            +
                    after_init_hooks << Proc.new(&blk)
         
     | 
| 
      
 87 
     | 
    
         
            +
                  end
         
     | 
| 
      
 88 
     | 
    
         
            +
             
     | 
| 
      
 89 
     | 
    
         
            +
                  def configure *envs, &block
         
     | 
| 
      
 90 
     | 
    
         
            +
                    if envs.map(&:to_sym).include?(NYNY.env.to_sym) or envs.empty?
         
     | 
| 
      
 91 
     | 
    
         
            +
                      instance_eval(&block)
         
     | 
| 
      
 92 
     | 
    
         
            +
                    end
         
     | 
| 
      
 93 
     | 
    
         
            +
                  end
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
       88 
95 
     | 
    
         
             
                  def use middleware, *args, &block
         
     | 
| 
       89 
96 
     | 
    
         
             
                    builder.use middleware, *args, &block
         
     | 
| 
       90 
97 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -93,6 +100,14 @@ module NYNY 
     | 
|
| 
       93 
100 
     | 
    
         
             
                    args << Module.new(&block) if block_given?
         
     | 
| 
       94 
101 
     | 
    
         
             
                    args.each {|m| scope_class.send :include, m }
         
     | 
| 
       95 
102 
     | 
    
         
             
                  end
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
      
 104 
     | 
    
         
            +
                  def run! port=9292
         
     | 
| 
      
 105 
     | 
    
         
            +
                    use Rack::CommonLogger
         
     | 
| 
      
 106 
     | 
    
         
            +
                    use BetterErrors::Middleware unless NYNY.env.production?
         
     | 
| 
      
 107 
     | 
    
         
            +
                    Rack::Handler.pick(['thin', 'webrick']).run new, :Port => port
         
     | 
| 
      
 108 
     | 
    
         
            +
                  end
         
     | 
| 
       96 
109 
     | 
    
         
             
                end #class methods
         
     | 
| 
      
 110 
     | 
    
         
            +
             
     | 
| 
      
 111 
     | 
    
         
            +
                register NYNY::Templates
         
     | 
| 
       97 
112 
     | 
    
         
             
              end
         
     | 
| 
       98 
113 
     | 
    
         
             
            end
         
     | 
    
        data/lib/nyny/primitives.rb
    CHANGED
    
    | 
         @@ -1,6 +1,36 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'active_support/hash_with_indifferent_access'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'pathname'
         
     | 
| 
       2 
3 
     | 
    
         | 
| 
       3 
4 
     | 
    
         
             
            module NYNY
         
     | 
| 
      
 5 
     | 
    
         
            +
              module Inheritable
         
     | 
| 
      
 6 
     | 
    
         
            +
                def self.included base
         
     | 
| 
      
 7 
     | 
    
         
            +
                  base.class_eval do
         
     | 
| 
      
 8 
     | 
    
         
            +
                    def self.inheritable name, value
         
     | 
| 
      
 9 
     | 
    
         
            +
                      @_inheritables ||= []
         
     | 
| 
      
 10 
     | 
    
         
            +
                      @_inheritables << name
         
     | 
| 
      
 11 
     | 
    
         
            +
                      self.class.send :attr_accessor, name
         
     | 
| 
      
 12 
     | 
    
         
            +
                      self.send "#{name}=", value
         
     | 
| 
      
 13 
     | 
    
         
            +
                    end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                    def self.inherited subclass
         
     | 
| 
      
 16 
     | 
    
         
            +
                      @_inheritables.each do |attr|
         
     | 
| 
      
 17 
     | 
    
         
            +
                        subclass.send "#{attr}=", self.send(attr).clone
         
     | 
| 
      
 18 
     | 
    
         
            +
                        subclass.instance_variable_set "@_inheritables", @_inheritables.clone
         
     | 
| 
      
 19 
     | 
    
         
            +
                      end
         
     | 
| 
      
 20 
     | 
    
         
            +
                      super
         
     | 
| 
      
 21 
     | 
    
         
            +
                    end
         
     | 
| 
      
 22 
     | 
    
         
            +
                  end
         
     | 
| 
      
 23 
     | 
    
         
            +
                end
         
     | 
| 
      
 24 
     | 
    
         
            +
              end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
              class EnvString < String
         
     | 
| 
      
 27 
     | 
    
         
            +
                [:production, :development, :test].each do |env|
         
     | 
| 
      
 28 
     | 
    
         
            +
                  define_method "#{env}?" do
         
     | 
| 
      
 29 
     | 
    
         
            +
                    self == env.to_s
         
     | 
| 
      
 30 
     | 
    
         
            +
                  end
         
     | 
| 
      
 31 
     | 
    
         
            +
                end
         
     | 
| 
      
 32 
     | 
    
         
            +
              end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
       4 
34 
     | 
    
         
             
              class Request < Rack::Request
         
     | 
| 
       5 
35 
     | 
    
         
             
                def params
         
     | 
| 
       6 
36 
     | 
    
         
             
                  @params ||= ActiveSupport::HashWithIndifferentAccess.new(super)
         
     | 
| 
         @@ -17,4 +47,12 @@ module NYNY 
     | 
|
| 
       17 
47 
     | 
    
         
             
                end
         
     | 
| 
       18 
48 
     | 
    
         
             
                alias_method :body=, :rewrite
         
     | 
| 
       19 
49 
     | 
    
         
             
              end
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
              def self.root
         
     | 
| 
      
 52 
     | 
    
         
            +
                @root ||= Pathname.pwd
         
     | 
| 
      
 53 
     | 
    
         
            +
              end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
              def self.env
         
     | 
| 
      
 56 
     | 
    
         
            +
                @env ||= EnvString.new(ENV['RACK_ENV'] || 'development')
         
     | 
| 
      
 57 
     | 
    
         
            +
              end
         
     | 
| 
       20 
58 
     | 
    
         
             
            end
         
     | 
| 
         
            File without changes
         
     | 
    
        data/lib/nyny/version.rb
    CHANGED
    
    
    
        data/spec/config_spec.rb
    ADDED
    
    | 
         @@ -0,0 +1,46 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe App do
         
     | 
| 
      
 4 
     | 
    
         
            +
              describe 'config' do
         
     | 
| 
      
 5 
     | 
    
         
            +
                let (:klass) do
         
     | 
| 
      
 6 
     | 
    
         
            +
                  mock_app_class do
         
     | 
| 
      
 7 
     | 
    
         
            +
                    get '/' do
         
     | 
| 
      
 8 
     | 
    
         
            +
                      p config
         
     | 
| 
      
 9 
     | 
    
         
            +
                      config.foo.should == 'bar'
         
     | 
| 
      
 10 
     | 
    
         
            +
                    end
         
     | 
| 
      
 11 
     | 
    
         
            +
                  end
         
     | 
| 
      
 12 
     | 
    
         
            +
                end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                let (:app) do
         
     | 
| 
      
 15 
     | 
    
         
            +
                  Rack::MockRequest.new(klass.new)
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                it 'sets any property' do
         
     | 
| 
      
 19 
     | 
    
         
            +
                  klass.config.foo = 'bar'
         
     | 
| 
      
 20 
     | 
    
         
            +
                  klass.config.foo.should == 'bar'
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                it 'can configure multiple environments at once' do
         
     | 
| 
      
 24 
     | 
    
         
            +
                  NYNY.stub :env => ['development', 'test'].sample
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                  kls = mock_app_class do
         
     | 
| 
      
 27 
     | 
    
         
            +
                    configure :development, :test do
         
     | 
| 
      
 28 
     | 
    
         
            +
                      config.test_dev = true
         
     | 
| 
      
 29 
     | 
    
         
            +
                    end
         
     | 
| 
      
 30 
     | 
    
         
            +
                  end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                  kls.config.test_dev.should == true
         
     | 
| 
      
 33 
     | 
    
         
            +
                  NYNY.unstub :env
         
     | 
| 
      
 34 
     | 
    
         
            +
                end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                it 'configures all environments by default' do
         
     | 
| 
      
 37 
     | 
    
         
            +
                  kls = mock_app_class do
         
     | 
| 
      
 38 
     | 
    
         
            +
                    configure do
         
     | 
| 
      
 39 
     | 
    
         
            +
                      config.foo = true
         
     | 
| 
      
 40 
     | 
    
         
            +
                    end
         
     | 
| 
      
 41 
     | 
    
         
            +
                  end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                  kls.config.foo.should == true
         
     | 
| 
      
 44 
     | 
    
         
            +
                end
         
     | 
| 
      
 45 
     | 
    
         
            +
              end
         
     | 
| 
      
 46 
     | 
    
         
            +
            end
         
     | 
    
        data/spec/inheritance_spec.rb
    CHANGED
    
    | 
         @@ -7,6 +7,8 @@ describe NYNY::App do 
     | 
|
| 
       7 
7 
     | 
    
         
             
                    def parent_helper; :parent; end
         
     | 
| 
       8 
8 
     | 
    
         
             
                  end
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
      
 10 
     | 
    
         
            +
                  config.parent = true
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
       10 
12 
     | 
    
         
             
                  before do
         
     | 
| 
       11 
13 
     | 
    
         
             
                    headers['parent before'] = 'true'
         
     | 
| 
       12 
14 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -84,5 +86,12 @@ describe NYNY::App do 
     | 
|
| 
       84 
86 
     | 
    
         
             
                  child.get('/nested').headers['parent before'].should_not be_nil
         
     | 
| 
       85 
87 
     | 
    
         
             
                  child.get('/nested').headers['parent after'].should_not be_nil
         
     | 
| 
       86 
88 
     | 
    
         
             
                end
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
                it 'works correctly for config' do
         
     | 
| 
      
 91 
     | 
    
         
            +
                  Child.config.parent.should == true
         
     | 
| 
      
 92 
     | 
    
         
            +
                  Child.config.parent = false
         
     | 
| 
      
 93 
     | 
    
         
            +
                  Child.config.parent.should == false
         
     | 
| 
      
 94 
     | 
    
         
            +
                  Parent.config.parent.should == true
         
     | 
| 
      
 95 
     | 
    
         
            +
                end
         
     | 
| 
       87 
96 
     | 
    
         
             
              end
         
     | 
| 
       88 
97 
     | 
    
         
             
            end
         
     | 
| 
         @@ -0,0 +1,25 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe NYNY::App do
         
     | 
| 
      
 4 
     | 
    
         
            +
              let (:target) { OpenStruct.new }
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              let (:app) do
         
     | 
| 
      
 7 
     | 
    
         
            +
                mock_app_class do
         
     | 
| 
      
 8 
     | 
    
         
            +
                  before_initialize do |app|
         
     | 
| 
      
 9 
     | 
    
         
            +
                    app.is_a?(NYNY::App).should == true
         
     | 
| 
      
 10 
     | 
    
         
            +
                    Rack::Builder.any_instance.should_receive(:to_app)
         
     | 
| 
      
 11 
     | 
    
         
            +
                                 .and_return(Proc.new {})
         
     | 
| 
      
 12 
     | 
    
         
            +
                  end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                  after_initialize do |app, prc|
         
     | 
| 
      
 15 
     | 
    
         
            +
                    app.is_a?(NYNY::App).should == true
         
     | 
| 
      
 16 
     | 
    
         
            +
                    prc.respond_to?(:call).should == true
         
     | 
| 
      
 17 
     | 
    
         
            +
                    Rack::Builder.any_instance.should_not_receive(:to_app)
         
     | 
| 
      
 18 
     | 
    
         
            +
                  end
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
              end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
              it 'runs the hooks in the correct order' do
         
     | 
| 
      
 23 
     | 
    
         
            +
                app.new
         
     | 
| 
      
 24 
     | 
    
         
            +
              end
         
     | 
| 
      
 25 
     | 
    
         
            +
            end
         
     | 
    
        data/spec/nyny_spec.rb
    CHANGED
    
    | 
         @@ -2,7 +2,7 @@ require 'spec_helper' 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            describe NYNY do
         
     | 
| 
       4 
4 
     | 
    
         
             
              its 'root points to pwd' do
         
     | 
| 
       5 
     | 
    
         
            -
                NYNY.root.should ==  
     | 
| 
      
 5 
     | 
    
         
            +
                NYNY.root.should == Pathname.pwd
         
     | 
| 
       6 
6 
     | 
    
         
             
              end
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
              it 'has the correct env' do
         
     | 
| 
         @@ -10,6 +10,6 @@ describe NYNY do 
     | 
|
| 
       10 
10 
     | 
    
         
             
              end
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
12 
     | 
    
         
             
              its 'root can join a path' do
         
     | 
| 
       13 
     | 
    
         
            -
                NYNY.root.join("foo").should ==  
     | 
| 
      
 13 
     | 
    
         
            +
                NYNY.root.join("foo").should == Pathname.pwd + "foo"
         
     | 
| 
       14 
14 
     | 
    
         
             
              end
         
     | 
| 
       15 
15 
     | 
    
         
             
            end
         
     | 
    
        data/spec/request_scope_spec.rb
    CHANGED
    
    
    
        data/spec/runner_spec.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: nyny
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 3. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 3.3.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Andrei Lisnic
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2014- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2014-02-04 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: rack-contrib
         
     | 
| 
         @@ -126,15 +126,16 @@ files: 
     | 
|
| 
       126 
126 
     | 
    
         
             
            - Rakefile
         
     | 
| 
       127 
127 
     | 
    
         
             
            - lib/nyny.rb
         
     | 
| 
       128 
128 
     | 
    
         
             
            - lib/nyny/app.rb
         
     | 
| 
       129 
     | 
    
         
            -
            - lib/nyny/core-ext/runner.rb
         
     | 
| 
       130 
     | 
    
         
            -
            - lib/nyny/core-ext/templates.rb
         
     | 
| 
       131 
129 
     | 
    
         
             
            - lib/nyny/primitives.rb
         
     | 
| 
       132 
130 
     | 
    
         
             
            - lib/nyny/request_scope.rb
         
     | 
| 
       133 
131 
     | 
    
         
             
            - lib/nyny/router.rb
         
     | 
| 
      
 132 
     | 
    
         
            +
            - lib/nyny/templates.rb
         
     | 
| 
       134 
133 
     | 
    
         
             
            - lib/nyny/version.rb
         
     | 
| 
       135 
134 
     | 
    
         
             
            - nyny.gemspec
         
     | 
| 
       136 
135 
     | 
    
         
             
            - spec/app_spec.rb
         
     | 
| 
      
 136 
     | 
    
         
            +
            - spec/config_spec.rb
         
     | 
| 
       137 
137 
     | 
    
         
             
            - spec/inheritance_spec.rb
         
     | 
| 
      
 138 
     | 
    
         
            +
            - spec/initialize_hooks_spec.rb
         
     | 
| 
       138 
139 
     | 
    
         
             
            - spec/nyny_spec.rb
         
     | 
| 
       139 
140 
     | 
    
         
             
            - spec/primitives_spec.rb
         
     | 
| 
       140 
141 
     | 
    
         
             
            - spec/request_scope_spec.rb
         
     | 
| 
         @@ -171,7 +172,9 @@ specification_version: 4 
     | 
|
| 
       171 
172 
     | 
    
         
             
            summary: New York, New York.
         
     | 
| 
       172 
173 
     | 
    
         
             
            test_files:
         
     | 
| 
       173 
174 
     | 
    
         
             
            - spec/app_spec.rb
         
     | 
| 
      
 175 
     | 
    
         
            +
            - spec/config_spec.rb
         
     | 
| 
       174 
176 
     | 
    
         
             
            - spec/inheritance_spec.rb
         
     | 
| 
      
 177 
     | 
    
         
            +
            - spec/initialize_hooks_spec.rb
         
     | 
| 
       175 
178 
     | 
    
         
             
            - spec/nyny_spec.rb
         
     | 
| 
       176 
179 
     | 
    
         
             
            - spec/primitives_spec.rb
         
     | 
| 
       177 
180 
     | 
    
         
             
            - spec/request_scope_spec.rb
         
     | 
    
        data/lib/nyny/core-ext/runner.rb
    DELETED