renee-core 0.4.0.pre1 → 0.4.0.pre2
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.
- data/.gitignore +7 -0
- data/.travis.yml +6 -0
- data/Gemfile +12 -0
- data/MIT-LICENSE.txt +7 -0
- data/README.md +242 -0
- data/Rakefile +24 -0
- data/lib/renee/core/chaining.rb +0 -1
- data/lib/renee/core/rack_interaction.rb +4 -4
- data/lib/renee/core/responding.rb +57 -20
- data/lib/renee/core/routing.rb +68 -41
- data/lib/renee/core/transform.rb +58 -0
- data/lib/renee/core/version.rb +5 -0
- data/lib/renee/core.rb +70 -22
- data/renee-core.gemspec +26 -0
- data/test/{renee-core/chaining_test.rb → chaining_test.rb} +0 -1
- data/test/{renee-core/include_test.rb → include_test.rb} +0 -0
- data/test/{renee-core/request_context_test.rb → request_context_test.rb} +0 -0
- data/test/{renee-core/responding_test.rb → responding_test.rb} +31 -1
- data/test/{renee-core/routing_test.rb → routing_test.rb} +0 -0
- data/test/test_helper.rb +2 -0
- data/test/{renee-core/variable_type_test.rb → variable_type_test.rb} +1 -1
- metadata +35 -35
- data/lib/renee/core/env_accessors.rb +0 -72
- data/lib/renee/core/matcher.rb +0 -61
- data/lib/renee/core/request_context.rb +0 -56
- data/lib/renee/core/response.rb +0 -78
- data/test/renee-core/env_accessors_test.rb +0 -43
- data/test/renee-core/test_helper.rb +0 -4
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: renee-core
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.4.0. | 
| 4 | 
            +
              version: 0.4.0.pre2
         | 
| 5 5 | 
             
              prerelease: 6
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -11,33 +11,33 @@ authors: | |
| 11 11 | 
             
            autorequire: 
         | 
| 12 12 | 
             
            bindir: bin
         | 
| 13 13 | 
             
            cert_chain: []
         | 
| 14 | 
            -
            date: 2012- | 
| 14 | 
            +
            date: 2012-03-04 00:00:00.000000000 Z
         | 
| 15 15 | 
             
            dependencies:
         | 
| 16 16 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 17 17 | 
             
              name: rack
         | 
| 18 | 
            -
              requirement: & | 
| 18 | 
            +
              requirement: &70163827844980 !ruby/object:Gem::Requirement
         | 
| 19 19 | 
             
                none: false
         | 
| 20 20 | 
             
                requirements:
         | 
| 21 | 
            -
                - -  | 
| 21 | 
            +
                - - ! '>='
         | 
| 22 22 | 
             
                  - !ruby/object:Gem::Version
         | 
| 23 23 | 
             
                    version: 1.3.0
         | 
| 24 24 | 
             
              type: :runtime
         | 
| 25 25 | 
             
              prerelease: false
         | 
| 26 | 
            -
              version_requirements: * | 
| 26 | 
            +
              version_requirements: *70163827844980
         | 
| 27 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 28 | 
             
              name: minitest
         | 
| 29 | 
            -
              requirement: & | 
| 29 | 
            +
              requirement: &70163827844260 !ruby/object:Gem::Requirement
         | 
| 30 30 | 
             
                none: false
         | 
| 31 31 | 
             
                requirements:
         | 
| 32 32 | 
             
                - - ~>
         | 
| 33 33 | 
             
                  - !ruby/object:Gem::Version
         | 
| 34 | 
            -
                    version: 2. | 
| 34 | 
            +
                    version: 2.11.1
         | 
| 35 35 | 
             
              type: :development
         | 
| 36 36 | 
             
              prerelease: false
         | 
| 37 | 
            -
              version_requirements: * | 
| 37 | 
            +
              version_requirements: *70163827844260
         | 
| 38 38 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 39 39 | 
             
              name: bundler
         | 
| 40 | 
            -
              requirement: & | 
| 40 | 
            +
              requirement: &70163827843620 !ruby/object:Gem::Requirement
         | 
| 41 41 | 
             
                none: false
         | 
| 42 42 | 
             
                requirements:
         | 
| 43 43 | 
             
                - - ! '>='
         | 
| @@ -45,10 +45,10 @@ dependencies: | |
| 45 45 | 
             
                    version: '0'
         | 
| 46 46 | 
             
              type: :development
         | 
| 47 47 | 
             
              prerelease: false
         | 
| 48 | 
            -
              version_requirements: * | 
| 48 | 
            +
              version_requirements: *70163827843620
         | 
| 49 49 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 50 50 | 
             
              name: rack-test
         | 
| 51 | 
            -
              requirement: & | 
| 51 | 
            +
              requirement: &70163827842000 !ruby/object:Gem::Requirement
         | 
| 52 52 | 
             
                none: false
         | 
| 53 53 | 
             
                requirements:
         | 
| 54 54 | 
             
                - - ! '>='
         | 
| @@ -56,10 +56,10 @@ dependencies: | |
| 56 56 | 
             
                    version: 0.5.0
         | 
| 57 57 | 
             
              type: :development
         | 
| 58 58 | 
             
              prerelease: false
         | 
| 59 | 
            -
              version_requirements: * | 
| 59 | 
            +
              version_requirements: *70163827842000
         | 
| 60 60 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 61 61 | 
             
              name: rake
         | 
| 62 | 
            -
              requirement: & | 
| 62 | 
            +
              requirement: &70163827841320 !ruby/object:Gem::Requirement
         | 
| 63 63 | 
             
                none: false
         | 
| 64 64 | 
             
                requirements:
         | 
| 65 65 | 
             
                - - ! '>='
         | 
| @@ -67,7 +67,7 @@ dependencies: | |
| 67 67 | 
             
                    version: '0'
         | 
| 68 68 | 
             
              type: :development
         | 
| 69 69 | 
             
              prerelease: false
         | 
| 70 | 
            -
              version_requirements: * | 
| 70 | 
            +
              version_requirements: *70163827841320
         | 
| 71 71 | 
             
            description: The super-friendly rack helpers.
         | 
| 72 72 | 
             
            email:
         | 
| 73 73 | 
             
            - joshbuddy@gmail.com
         | 
| @@ -77,27 +77,29 @@ executables: [] | |
| 77 77 | 
             
            extensions: []
         | 
| 78 78 | 
             
            extra_rdoc_files: []
         | 
| 79 79 | 
             
            files:
         | 
| 80 | 
            +
            - .gitignore
         | 
| 81 | 
            +
            - .travis.yml
         | 
| 82 | 
            +
            - Gemfile
         | 
| 83 | 
            +
            - MIT-LICENSE.txt
         | 
| 84 | 
            +
            - README.md
         | 
| 85 | 
            +
            - Rakefile
         | 
| 80 86 | 
             
            - lib/renee/core.rb
         | 
| 81 87 | 
             
            - lib/renee/core/chaining.rb
         | 
| 82 | 
            -
            - lib/renee/core/env_accessors.rb
         | 
| 83 88 | 
             
            - lib/renee/core/exceptions.rb
         | 
| 84 | 
            -
            - lib/renee/core/matcher.rb
         | 
| 85 89 | 
             
            - lib/renee/core/plugins.rb
         | 
| 86 90 | 
             
            - lib/renee/core/rack_interaction.rb
         | 
| 87 | 
            -
            - lib/renee/core/request_context.rb
         | 
| 88 91 | 
             
            - lib/renee/core/responding.rb
         | 
| 89 | 
            -
            - lib/renee/core/response.rb
         | 
| 90 92 | 
             
            - lib/renee/core/routing.rb
         | 
| 91 93 | 
             
            - lib/renee/core/transform.rb
         | 
| 92 | 
            -
            -  | 
| 93 | 
            -
            -  | 
| 94 | 
            -
            - test/ | 
| 95 | 
            -
            - test/ | 
| 96 | 
            -
            - test/ | 
| 97 | 
            -
            - test/ | 
| 98 | 
            -
            - test/ | 
| 99 | 
            -
            - test/renee-core/variable_type_test.rb
         | 
| 94 | 
            +
            - lib/renee/core/version.rb
         | 
| 95 | 
            +
            - renee-core.gemspec
         | 
| 96 | 
            +
            - test/chaining_test.rb
         | 
| 97 | 
            +
            - test/include_test.rb
         | 
| 98 | 
            +
            - test/request_context_test.rb
         | 
| 99 | 
            +
            - test/responding_test.rb
         | 
| 100 | 
            +
            - test/routing_test.rb
         | 
| 100 101 | 
             
            - test/test_helper.rb
         | 
| 102 | 
            +
            - test/variable_type_test.rb
         | 
| 101 103 | 
             
            homepage: http://reneerb.com
         | 
| 102 104 | 
             
            licenses: []
         | 
| 103 105 | 
             
            post_install_message: 
         | 
| @@ -112,7 +114,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 112 114 | 
             
                  version: '0'
         | 
| 113 115 | 
             
                  segments:
         | 
| 114 116 | 
             
                  - 0
         | 
| 115 | 
            -
                  hash:  | 
| 117 | 
            +
                  hash: 1919719039432149420
         | 
| 116 118 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 117 119 | 
             
              none: false
         | 
| 118 120 | 
             
              requirements:
         | 
| @@ -126,13 +128,11 @@ signing_key: | |
| 126 128 | 
             
            specification_version: 3
         | 
| 127 129 | 
             
            summary: The super-friendly rack helpers
         | 
| 128 130 | 
             
            test_files:
         | 
| 129 | 
            -
            - test/ | 
| 130 | 
            -
            - test/ | 
| 131 | 
            -
            - test/ | 
| 132 | 
            -
            - test/ | 
| 133 | 
            -
            - test/ | 
| 134 | 
            -
            - test/renee-core/routing_test.rb
         | 
| 135 | 
            -
            - test/renee-core/test_helper.rb
         | 
| 136 | 
            -
            - test/renee-core/variable_type_test.rb
         | 
| 131 | 
            +
            - test/chaining_test.rb
         | 
| 132 | 
            +
            - test/include_test.rb
         | 
| 133 | 
            +
            - test/request_context_test.rb
         | 
| 134 | 
            +
            - test/responding_test.rb
         | 
| 135 | 
            +
            - test/routing_test.rb
         | 
| 137 136 | 
             
            - test/test_helper.rb
         | 
| 137 | 
            +
            - test/variable_type_test.rb
         | 
| 138 138 | 
             
            has_rdoc: 
         | 
| @@ -1,72 +0,0 @@ | |
| 1 | 
            -
            module Renee
         | 
| 2 | 
            -
              class Core
         | 
| 3 | 
            -
                # Defines class-level methods for creating accessors for variables in your environment.
         | 
| 4 | 
            -
                module EnvAccessors
         | 
| 5 | 
            -
             | 
| 6 | 
            -
                  # Exception for attempting to define an env accessor cannot be written as a method name.
         | 
| 7 | 
            -
                  # @example
         | 
| 8 | 
            -
                  #   env_accessor "current.user" # raises InvalidEnvNameError
         | 
| 9 | 
            -
                  #   env_accessor "current.user" => :current_user # this works
         | 
| 10 | 
            -
                  InvalidEnvNameError = Class.new(RuntimeError)
         | 
| 11 | 
            -
             | 
| 12 | 
            -
                  # Class-methods included by this module.
         | 
| 13 | 
            -
                  module ClassMethods
         | 
| 14 | 
            -
             | 
| 15 | 
            -
                    # Defines getters and setters for a list of attributes. If the attributes cannot easily be expressed, use the
         | 
| 16 | 
            -
                    # hash-syntax for defining them.
         | 
| 17 | 
            -
                    # @example
         | 
| 18 | 
            -
                    #   env_accessor "some_value" # will define methods to read and write env['some_value']
         | 
| 19 | 
            -
                    #   env_accessor "current.user" => :current_user will define methods to read and write env['current.user']
         | 
| 20 | 
            -
                    def env_accessor(*attrs)
         | 
| 21 | 
            -
                      env_reader(*attrs)
         | 
| 22 | 
            -
                      env_writer(*attrs)
         | 
| 23 | 
            -
                    end
         | 
| 24 | 
            -
             | 
| 25 | 
            -
                    # Defines getters for a list of attributes.
         | 
| 26 | 
            -
                    # @see env_accessor
         | 
| 27 | 
            -
                    def env_reader(*attrs)
         | 
| 28 | 
            -
                      instance_eval do
         | 
| 29 | 
            -
                        env_attr_iter(*attrs) do |key, meth|
         | 
| 30 | 
            -
                          define_method(meth) do
         | 
| 31 | 
            -
                            env[key]
         | 
| 32 | 
            -
                          end
         | 
| 33 | 
            -
                        end
         | 
| 34 | 
            -
                      end
         | 
| 35 | 
            -
                    end
         | 
| 36 | 
            -
             | 
| 37 | 
            -
                    # Defines setters for a list of attributes.
         | 
| 38 | 
            -
                    # @see env_accessor
         | 
| 39 | 
            -
                    def env_writer(*attrs)
         | 
| 40 | 
            -
                      instance_eval do
         | 
| 41 | 
            -
                        env_attr_iter(*attrs) do |key, meth|
         | 
| 42 | 
            -
                          define_method("#{meth}=") do |val|
         | 
| 43 | 
            -
                            env[key] = val
         | 
| 44 | 
            -
                          end
         | 
| 45 | 
            -
                        end
         | 
| 46 | 
            -
                      end
         | 
| 47 | 
            -
                    end
         | 
| 48 | 
            -
             | 
| 49 | 
            -
                    private
         | 
| 50 | 
            -
                    def env_attr_iter(*attrs)
         | 
| 51 | 
            -
                      attrs.each do |a|
         | 
| 52 | 
            -
                        case a
         | 
| 53 | 
            -
                        when Hash
         | 
| 54 | 
            -
                          a.each do |k, v|
         | 
| 55 | 
            -
                            yield k, v
         | 
| 56 | 
            -
                          end
         | 
| 57 | 
            -
                        else
         | 
| 58 | 
            -
                          raise InvalidEnvNameError, "Called env attr for #{a.inspect}, to use this, call your env method like this. env_reader #{a.inspect} => #{a.to_s.gsub(/-\./, '_').to_sym.inspect}" if a.to_s[/[-\.]/]
         | 
| 59 | 
            -
                          yield a, a.to_sym
         | 
| 60 | 
            -
                        end
         | 
| 61 | 
            -
                      end
         | 
| 62 | 
            -
                    end
         | 
| 63 | 
            -
                  
         | 
| 64 | 
            -
                  end
         | 
| 65 | 
            -
             | 
| 66 | 
            -
                  # @private
         | 
| 67 | 
            -
                  def self.included(o)
         | 
| 68 | 
            -
                    o.extend(ClassMethods)
         | 
| 69 | 
            -
                  end
         | 
| 70 | 
            -
                end
         | 
| 71 | 
            -
              end
         | 
| 72 | 
            -
            end
         | 
    
        data/lib/renee/core/matcher.rb
    DELETED
    
    | @@ -1,61 +0,0 @@ | |
| 1 | 
            -
            module Renee
         | 
| 2 | 
            -
              class Core
         | 
| 3 | 
            -
                # Class used for variable matching.
         | 
| 4 | 
            -
                class Matcher
         | 
| 5 | 
            -
                  attr_accessor :name
         | 
| 6 | 
            -
             | 
| 7 | 
            -
                  # @param [Regexp] matcher The regexp matcher to determine what is part of the variable.
         | 
| 8 | 
            -
                  def initialize(matcher)
         | 
| 9 | 
            -
                    @matcher = matcher
         | 
| 10 | 
            -
                  end
         | 
| 11 | 
            -
             | 
| 12 | 
            -
                  # Used to specific the error handler if the matcher doesn't match anything. By default, there is no error handler.
         | 
| 13 | 
            -
                  # @yield The block to be executed it fails to match.
         | 
| 14 | 
            -
                  def on_error(&blk)
         | 
| 15 | 
            -
                    @error_handler = blk
         | 
| 16 | 
            -
                    self
         | 
| 17 | 
            -
                  end
         | 
| 18 | 
            -
             | 
| 19 | 
            -
                  # Used to transform the value matched.
         | 
| 20 | 
            -
                  # @yield TODO
         | 
| 21 | 
            -
                  def on_transform(&blk)
         | 
| 22 | 
            -
                    @transform_handler = blk
         | 
| 23 | 
            -
                    self
         | 
| 24 | 
            -
                  end
         | 
| 25 | 
            -
             | 
| 26 | 
            -
                  # Convienence method to creating halting error handler.
         | 
| 27 | 
            -
                  # @param [Symbol, Integer] error_code The HTTP code to halt with.
         | 
| 28 | 
            -
                  # @see #interpret_response
         | 
| 29 | 
            -
                  def raise_on_error!(error_code = :bad_request)
         | 
| 30 | 
            -
                    on_error { halt error_code }
         | 
| 31 | 
            -
                    self
         | 
| 32 | 
            -
                  end
         | 
| 33 | 
            -
             | 
| 34 | 
            -
                  # Matcher for string
         | 
| 35 | 
            -
                  # @param [String] val The value to attempt to match on.
         | 
| 36 | 
            -
                  # @raise [ClientError] If the match fails to match and there is an error handler defined.
         | 
| 37 | 
            -
                  def [](val)
         | 
| 38 | 
            -
                    match = nil
         | 
| 39 | 
            -
                    case @matcher
         | 
| 40 | 
            -
                    when Array
         | 
| 41 | 
            -
                      match = nil
         | 
| 42 | 
            -
                      @matcher.find { |m| match = m[val] }
         | 
| 43 | 
            -
                    else
         | 
| 44 | 
            -
                      if match = /^#{@matcher.to_s}/.match(val)
         | 
| 45 | 
            -
                        match = [match[0]]
         | 
| 46 | 
            -
                        match << @transform_handler.call(match.first) if @transform_handler
         | 
| 47 | 
            -
                        match
         | 
| 48 | 
            -
                      end
         | 
| 49 | 
            -
                    end
         | 
| 50 | 
            -
                    if match
         | 
| 51 | 
            -
                      match
         | 
| 52 | 
            -
                    elsif @error_handler
         | 
| 53 | 
            -
                      raise ClientError.new("There was an error interpreting the value #{val.inspect} for #{name.inspect}", &@error_handler)
         | 
| 54 | 
            -
                    end
         | 
| 55 | 
            -
                  end
         | 
| 56 | 
            -
                end
         | 
| 57 | 
            -
             | 
| 58 | 
            -
                # Matcher for Integers
         | 
| 59 | 
            -
                IntegerMatcher = Matcher.new(/\d+/).on_transform{|v| Integer(v)}
         | 
| 60 | 
            -
              end
         | 
| 61 | 
            -
            end
         | 
| @@ -1,56 +0,0 @@ | |
| 1 | 
            -
            module Renee
         | 
| 2 | 
            -
              class Core
         | 
| 3 | 
            -
                module ClassMethods
         | 
| 4 | 
            -
                  def use(mw, *args, &blk)
         | 
| 5 | 
            -
                    middlewares << [mw, args, blk]
         | 
| 6 | 
            -
                  end
         | 
| 7 | 
            -
             | 
| 8 | 
            -
                  def middlewares
         | 
| 9 | 
            -
                    @middlewares ||= []
         | 
| 10 | 
            -
                  end
         | 
| 11 | 
            -
                end
         | 
| 12 | 
            -
             | 
| 13 | 
            -
                # This module deals with the Rack#call compilance. It defines #call and also defines several critical methods
         | 
| 14 | 
            -
                # used by interaction by other application modules.
         | 
| 15 | 
            -
                module RequestContext
         | 
| 16 | 
            -
                  attr_reader :env, :request, :detected_extension
         | 
| 17 | 
            -
             | 
| 18 | 
            -
                  # Provides a rack interface compliant call method.
         | 
| 19 | 
            -
                  # @param[Hash] env The rack environment.
         | 
| 20 | 
            -
                  def call(e)
         | 
| 21 | 
            -
                    initialize_plugins
         | 
| 22 | 
            -
                    idx = 0
         | 
| 23 | 
            -
                    next_app = proc do |env|
         | 
| 24 | 
            -
                      if idx == self.class.middlewares.size
         | 
| 25 | 
            -
                        @env, @request = env, Rack::Request.new(env)
         | 
| 26 | 
            -
                        @detected_extension = env['PATH_INFO'][/\.([^\.\/]+)$/, 1]
         | 
| 27 | 
            -
                        # TODO clear template cache in development? `template_cache.clear`
         | 
| 28 | 
            -
                        out = catch(:halt) do
         | 
| 29 | 
            -
                          begin
         | 
| 30 | 
            -
                            self.class.before_blocks.each { |b| instance_eval(&b) }
         | 
| 31 | 
            -
                            instance_eval(&self.class.application_block)
         | 
| 32 | 
            -
                          rescue ClientError => e
         | 
| 33 | 
            -
                            e.response ? instance_eval(&e.response) : halt("There was an error with your request", 400)
         | 
| 34 | 
            -
                          rescue NotMatchedError => e
         | 
| 35 | 
            -
                            # unmatched, continue on
         | 
| 36 | 
            -
                          end
         | 
| 37 | 
            -
                          Renee::Core::Response.new("Not found", 404).finish
         | 
| 38 | 
            -
                        end
         | 
| 39 | 
            -
                        self.class.after_blocks.each { |a| out = instance_exec(out, &a) }
         | 
| 40 | 
            -
                        out
         | 
| 41 | 
            -
                      else
         | 
| 42 | 
            -
                        middleware = self.class.middlewares[idx]
         | 
| 43 | 
            -
                        idx += 1
         | 
| 44 | 
            -
                        middleware[0].new(next_app, *middleware[1], &middleware[2]).call(env)
         | 
| 45 | 
            -
                      end
         | 
| 46 | 
            -
                    end
         | 
| 47 | 
            -
                    next_app[e]
         | 
| 48 | 
            -
                  end # call
         | 
| 49 | 
            -
             | 
| 50 | 
            -
                  def initialize_plugins
         | 
| 51 | 
            -
                    self.class.init_blocks.each { |init_block| self.class.class_eval(&init_block) }
         | 
| 52 | 
            -
                    self.class.send(:define_method, :initialize_plugins) { }
         | 
| 53 | 
            -
                  end
         | 
| 54 | 
            -
                end
         | 
| 55 | 
            -
              end
         | 
| 56 | 
            -
            end
         | 
    
        data/lib/renee/core/response.rb
    DELETED
    
    | @@ -1,78 +0,0 @@ | |
| 1 | 
            -
            module Renee
         | 
| 2 | 
            -
              class Core
         | 
| 3 | 
            -
                # The response object for a Renee request. Inherits from the `Rack#Response` object.
         | 
| 4 | 
            -
                class Response < Rack::Response
         | 
| 5 | 
            -
                  # Augment body to allow strings.
         | 
| 6 | 
            -
                  #
         | 
| 7 | 
            -
                  # @param [String] The contents for the response.
         | 
| 8 | 
            -
                  #
         | 
| 9 | 
            -
                  # @example
         | 
| 10 | 
            -
                  #  res.body = "Hello"
         | 
| 11 | 
            -
                  #
         | 
| 12 | 
            -
                  # @api semipublic
         | 
| 13 | 
            -
                  def body=(value)
         | 
| 14 | 
            -
                    value = value.body while Rack::Response === value
         | 
| 15 | 
            -
                    @body = String === value ? [value.to_str] : value
         | 
| 16 | 
            -
                  end
         | 
| 17 | 
            -
             | 
| 18 | 
            -
                  # Alias status and body methods to allow redefinition
         | 
| 19 | 
            -
                  alias :status_attr :status
         | 
| 20 | 
            -
                  alias :status_attr= :status=
         | 
| 21 | 
            -
                  alias :body_attr  :body
         | 
| 22 | 
            -
                  alias :body_attr= :body=
         | 
| 23 | 
            -
             | 
| 24 | 
            -
                  # Get or set the status of the response.
         | 
| 25 | 
            -
                  #
         | 
| 26 | 
            -
                  # @param [String] val The status code to return.
         | 
| 27 | 
            -
                  #
         | 
| 28 | 
            -
                  # @example
         | 
| 29 | 
            -
                  #  res.status 400
         | 
| 30 | 
            -
                  #  res.status => 400
         | 
| 31 | 
            -
                  #
         | 
| 32 | 
            -
                  # @api public
         | 
| 33 | 
            -
                  def status(val=nil)
         | 
| 34 | 
            -
                    val ? self.status_attr = val : self.status_attr
         | 
| 35 | 
            -
                  end
         | 
| 36 | 
            -
             | 
| 37 | 
            -
                  # Get or set the body of the response.
         | 
| 38 | 
            -
                  #
         | 
| 39 | 
            -
                  # @param [String] val The contents to return.
         | 
| 40 | 
            -
                  #
         | 
| 41 | 
            -
                  # @example
         | 
| 42 | 
            -
                  #  res.body "hello"
         | 
| 43 | 
            -
                  #  res.body => "hello"
         | 
| 44 | 
            -
                  #
         | 
| 45 | 
            -
                  # @api public
         | 
| 46 | 
            -
                  def body(val=nil)
         | 
| 47 | 
            -
                    val ? self.body_attr = val : self.body_attr
         | 
| 48 | 
            -
                  end
         | 
| 49 | 
            -
             | 
| 50 | 
            -
                  # Get or set the headers of the response.
         | 
| 51 | 
            -
                  #
         | 
| 52 | 
            -
                  # @param [Hash] attrs The contents to return.
         | 
| 53 | 
            -
                  #
         | 
| 54 | 
            -
                  # @example
         | 
| 55 | 
            -
                  #   res.headers :foo => "bar"
         | 
| 56 | 
            -
                  #   res.headers => { :foo => "bar" }
         | 
| 57 | 
            -
                  #
         | 
| 58 | 
            -
                  # @api public
         | 
| 59 | 
            -
                  def headers(attrs={})
         | 
| 60 | 
            -
                    attrs ? attrs.each { |k, v| self[k.to_s] = v } : self.header
         | 
| 61 | 
            -
                  end
         | 
| 62 | 
            -
             | 
| 63 | 
            -
                  # Finishs the response based on the accumulated options.
         | 
| 64 | 
            -
                  # Calculates the size of the body content length and removes headers for 1xx status codes.
         | 
| 65 | 
            -
                  def finish
         | 
| 66 | 
            -
                    if status.to_i / 100 == 1
         | 
| 67 | 
            -
                      headers.delete "Content-Length"
         | 
| 68 | 
            -
                      headers.delete "Content-Type"
         | 
| 69 | 
            -
                    elsif Array === body and not [204, 304].include?(status.to_i)
         | 
| 70 | 
            -
                      headers["Content-Length"] = body.inject(0) { |l, p| l + Rack::Utils.bytesize(p) }.to_s
         | 
| 71 | 
            -
                    end
         | 
| 72 | 
            -
             | 
| 73 | 
            -
                    status, headers, result = super
         | 
| 74 | 
            -
                    [status, headers, result]
         | 
| 75 | 
            -
                  end
         | 
| 76 | 
            -
                end
         | 
| 77 | 
            -
              end
         | 
| 78 | 
            -
            end
         | 
| @@ -1,43 +0,0 @@ | |
| 1 | 
            -
            # -*- coding: utf-8 -*-
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            require File.expand_path('../test_helper', __FILE__)
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            describe Renee::Core::EnvAccessors do
         | 
| 6 | 
            -
              it "should allow accessing the env" do
         | 
| 7 | 
            -
                @app = Renee.core {
         | 
| 8 | 
            -
                  self.test = 'hello'
         | 
| 9 | 
            -
                  path('test').get do
         | 
| 10 | 
            -
                    halt "test is #{test}"
         | 
| 11 | 
            -
                  end
         | 
| 12 | 
            -
                }.setup {
         | 
| 13 | 
            -
                  env_accessor :test
         | 
| 14 | 
            -
                }
         | 
| 15 | 
            -
                get '/test'
         | 
| 16 | 
            -
                assert_equal 200,   response.status
         | 
| 17 | 
            -
                assert_equal 'test is hello', response.body
         | 
| 18 | 
            -
              end
         | 
| 19 | 
            -
             | 
| 20 | 
            -
              it "should raise when you try to access weird env keys" do
         | 
| 21 | 
            -
                assert_raises(Renee::Core::EnvAccessors::InvalidEnvNameError) {
         | 
| 22 | 
            -
                  @app = Renee.core {
         | 
| 23 | 
            -
                    self.test_test = 'hello'
         | 
| 24 | 
            -
                  }.setup {
         | 
| 25 | 
            -
                    env_accessor "test.test"
         | 
| 26 | 
            -
                  }
         | 
| 27 | 
            -
                }
         | 
| 28 | 
            -
              end
         | 
| 29 | 
            -
             | 
| 30 | 
            -
              it "should allow weird env keys if you map them" do
         | 
| 31 | 
            -
                @app = Renee.core {
         | 
| 32 | 
            -
                  self.test_test = 'hello'
         | 
| 33 | 
            -
                  path('test').get do
         | 
| 34 | 
            -
                    halt "test is #{test_test}"
         | 
| 35 | 
            -
                  end
         | 
| 36 | 
            -
                }.setup {
         | 
| 37 | 
            -
                  env_accessor "test.test" => :test_test
         | 
| 38 | 
            -
                }
         | 
| 39 | 
            -
                get '/test'
         | 
| 40 | 
            -
                assert_equal 200,   response.status
         | 
| 41 | 
            -
                assert_equal 'test is hello', response.body
         | 
| 42 | 
            -
              end
         | 
| 43 | 
            -
            end
         |