rack-app 0.15.0 → 0.16.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a6a2ae4ec74c639f9e3d049458b89e08a62ef5c3
4
- data.tar.gz: fdb0219ee8797b4d7aa221a9ca9871bddd6c7c55
3
+ metadata.gz: 41c94a79f13a4ee69c813a267eb6a637a955ccbd
4
+ data.tar.gz: 48abde6b600e6a968b2c6dad2c72b821a7844bec
5
5
  SHA512:
6
- metadata.gz: 6d42439314b717b812de25cb5b393650d11dd964502dd00c20dbed8d49c69ed9d932107c4da4e0e626caf26ba8dec9c2c0cfa57f9943516934ab93823dc7eb5c
7
- data.tar.gz: bdb3c7f423901de46b64ccdac7c945e895e0bcc9b7d5183aa4bcf9a9771392202c1be199d7779180a590251a0b2356f4b999797788717fc4f1e72374a0df05ec
6
+ metadata.gz: 7f1f75dbcda528fd377cb77f61eac7f5bf26246ffa9b0e7ba20534eaa5517ee4dce7a3bc0c790285381fbf90319b013c724b11e0f165539b5b0ac0fef9c3cc60
7
+ data.tar.gz: a187dda8b666fd342430facf104f4aeac8a124a5aa9253c3540d3b1964f48dc60a9b5c07095862a2e71641429d4fe45ad8b83ed5a510cc1eb34734e0fbc372f9
data/README.md CHANGED
@@ -7,9 +7,9 @@
7
7
  ![Rack::App](http://rack-app-website.herokuapp.com/image/msruby_new.png)
8
8
 
9
9
  Your next favourite rack based micro framework that is totally addition free!
10
- Have a cup of awesomeness with your performance designed framework!
10
+ Have a cup of awesomeness with your performance designed framework!
11
11
 
12
- The idea behind is simple.
12
+ The idea behind is simple.
13
13
  Keep the dependencies and everything as little as possible,
14
14
  while able to write pure rack apps,
15
15
  that will do nothing more than what you defined.
@@ -17,9 +17,13 @@ that will do nothing more than what you defined.
17
17
  If you want see fancy magic, you are in a bad place buddy!
18
18
  This includes that it do not have such core extensions like activesupport that monkey patch the whole world.
19
19
 
20
- Routing can handle large amount of endpoints so if you that crazy to use more than 10k endpoint,
20
+ Routing can handle any amount of endpoints that can fit in the memory,
21
+ so if you that crazy to use more than 10k endpoint,
21
22
  you still dont have to worry about response speed.
22
23
 
24
+ It was inspirited by sinatra, grape, and the pure use form of rack.
25
+ It's in production, powering Back Ends on Heroku
26
+
23
27
  ## Installation
24
28
 
25
29
  Add this line to your application's Gemfile:
@@ -76,7 +80,7 @@ class App < Rack::App
76
80
 
77
81
  desc 'some hello endpoint'
78
82
  get '/hello' do
79
- 'Hello World!'
83
+ return 'Hello World!'
80
84
  end
81
85
 
82
86
  desc 'some restful endpoint'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.15.0
1
+ 0.16.0
@@ -0,0 +1,13 @@
1
+ # -*- mode: ruby -*-
2
+ # vi: set ft=ruby :
3
+
4
+ Vagrant.configure(2) do |config|
5
+
6
+ config.vm.box = "ubuntu/trusty64"
7
+
8
+ config.vm.provision "shell", inline: "sudo apt-get install -y curl"
9
+ config.vm.provision "shell", inline: '\curl -sSL https://get.rvm.io | bash'
10
+ config.vm.provision "shell", inline: 'rvm install 1.8'
11
+ config.vm.provision "shell", inline: 'rvm install 1.9'
12
+
13
+ end
@@ -6,6 +6,9 @@ class Rack::App
6
6
  require 'rack/app/version'
7
7
  require 'rack/app/constants'
8
8
 
9
+ require 'rack/app/utils'
10
+ require 'rack/app/file'
11
+
9
12
  require 'rack/app/params'
10
13
  require 'rack/app/router'
11
14
  require 'rack/app/endpoint'
@@ -14,9 +17,6 @@ class Rack::App
14
17
  require 'rack/app/endpoint/not_found'
15
18
  require 'rack/app/request_configurator'
16
19
 
17
- require 'rack/app/utils'
18
- require 'rack/app/file'
19
-
20
20
  class << self
21
21
 
22
22
  def call(request_env)
@@ -6,15 +6,14 @@ class Rack::App::Endpoint
6
6
  @properties = properties
7
7
 
8
8
  @error_handler = properties[:error_handler]
9
- @logic_block = properties[:user_defined_logic]
10
9
  @serializer = properties[:serializer]
11
10
  @api_class = properties[:app_class]
12
11
  @headers = properties[:default_headers]
13
12
 
14
13
  @path_params_matcher = {}
14
+ @endpoint_method_name = register_method_to_app_class(properties[:user_defined_logic])
15
15
  end
16
16
 
17
-
18
17
  def execute(request_env)
19
18
 
20
19
  request = Rack::Request.new(request_env)
@@ -27,7 +26,7 @@ class Rack::App::Endpoint
27
26
  request_handler.response = response
28
27
  request.env['rack.app.path_params_matcher']= @path_params_matcher.dup
29
28
 
30
- call_return = @error_handler.execute_with_error_handling_for(request_handler,&@logic_block)
29
+ call_return = @error_handler.execute_with_error_handling_for(request_handler, @endpoint_method_name)
31
30
 
32
31
  return call_return if is_a_rack_response_finish?(call_return)
33
32
  add_response_body_if_missing(call_return, response)
@@ -54,9 +53,15 @@ class Rack::App::Endpoint
54
53
  end
55
54
 
56
55
  def add_default_headers(response)
57
- @headers.each do |header,value|
56
+ @headers.each do |header, value|
58
57
  response.header[header]=value
59
58
  end
60
59
  end
61
60
 
61
+ def register_method_to_app_class(proc)
62
+ method_name = ::Rack::App::Utils.uuid
63
+ @api_class.__send__(:define_method, method_name, &proc)
64
+ return method_name
65
+ end
66
+
62
67
  end
@@ -11,8 +11,8 @@ class Rack::App::ErrorHandler
11
11
  nil
12
12
  end
13
13
 
14
- def execute_with_error_handling_for(instance, &block)
15
- instance.instance_exec(&block)
14
+ def execute_with_error_handling_for(instance, endpoint_method_name)
15
+ instance.__send__(endpoint_method_name)
16
16
  rescue *[Exception, @handlers.keys].flatten => ex
17
17
  instance.instance_exec(ex, &get_handler(ex))
18
18
  end
@@ -1,3 +1,4 @@
1
+ require 'securerandom'
1
2
  module Rack::App::Utils
2
3
  extend self
3
4
 
@@ -29,4 +30,11 @@ module Rack::App::Utils
29
30
 
30
31
  end
31
32
 
33
+ def uuid
34
+ ary = SecureRandom.random_bytes(16).unpack("NnnnnN")
35
+ ary[2] = (ary[2] & 0x0fff) | 0x4000
36
+ ary[3] = (ary[3] & 0x3fff) | 0x8000
37
+ "%08x-%04x-%04x-%04x-%04x%08x" % ary
38
+ end
39
+
32
40
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-app
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.0
4
+ version: 0.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Luzsi
@@ -85,6 +85,7 @@ files:
85
85
  - README.md
86
86
  - Rakefile
87
87
  - VERSION
88
+ - Vagrantfile
88
89
  - bin/console
89
90
  - bin/setup
90
91
  - lib/rack/app.rb