roy 0.4.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- roy (0.4.0)
4
+ roy (0.5.1)
5
5
  rack
6
6
 
7
7
  GEM
@@ -9,7 +9,7 @@ require 'ostruct'
9
9
  require 'roy/version'
10
10
 
11
11
  module Roy
12
- Defaults = OpenStruct.new(allow: Set.new, prefix: :'')
12
+ Defaults = {allow: [:get], prefix: :'', use: [:halt]}
13
13
 
14
14
  def self.included(base)
15
15
  base.send(:extend, ClassMethods)
@@ -19,9 +19,8 @@ module Roy
19
19
  @roy ||= OpenStruct.new.tap {|r|
20
20
  r.app = self
21
21
  r.conf = self.class.conf
22
-
23
- def r.halt(code, message=nil)
24
- throw :halt, [code, message || Rack::Utils::HTTP_STATUS_CODES[code]]
22
+ self.class.ancestors.reverse.each do |mod|
23
+ mod.setup(r) if mod.respond_to?(:setup)
25
24
  end
26
25
  }
27
26
  end
@@ -57,14 +56,17 @@ module Roy
57
56
  attr_reader :conf
58
57
 
59
58
  def self.extended(base)
60
- base.instance_eval { @conf ||= Defaults.dup }
59
+ base.instance_eval do
60
+ @conf ||= OpenStruct.new
61
+ roy Defaults
62
+ end
61
63
  end
62
64
 
63
65
  def roy(options={})
64
66
  options.each do |key,value|
65
67
  case key
66
68
  when :allow
67
- conf.allow.merge(value)
69
+ (conf.allow ||= Set.new).merge(value)
68
70
  conf.allow.add(:head) if value.member?(:get)
69
71
  when :use
70
72
  value.each do |name|
@@ -0,0 +1,13 @@
1
+ module Roy
2
+ module Halt
3
+
4
+ def self.setup(roy)
5
+ class << roy
6
+ def halt(code, message=nil)
7
+ throw :halt, [code, message || Rack::Utils::HTTP_STATUS_CODES[code]]
8
+ end
9
+ end
10
+ end
11
+
12
+ end
13
+ end
@@ -3,8 +3,7 @@ require 'tilt'
3
3
  module Roy
4
4
  module Render
5
5
 
6
- def initialize
7
- super
6
+ def self.setup(roy)
8
7
  class << roy
9
8
  def render(engine, view_or_string, params={}, &block)
10
9
  options = conf.render || {}
@@ -21,5 +20,6 @@ module Roy
21
20
  end
22
21
  end
23
22
  end
23
+
24
24
  end
25
25
  end
@@ -1,3 +1,3 @@
1
1
  module Roy
2
- VERSION = "0.4.0"
2
+ VERSION = "0.5.1"
3
3
  end
@@ -1,11 +1,17 @@
1
1
  require_relative 'helper'
2
2
 
3
- defaults = Roy::Defaults.dup
4
- Roy::Defaults.prefix = :http_
3
+ Roy::Defaults.tap do |conf|
4
+ conf[:prefix] = :http_
5
+ conf[:use] = [:halt, :after]
6
+ end
5
7
 
6
8
  class DefaultsTestObject
7
9
  include Roy
8
10
 
11
+ roy after: lambda { |response|
12
+ response.status = 404
13
+ }
14
+
9
15
  def http_get(path)
10
16
  'success'
11
17
  end
@@ -20,6 +26,7 @@ class DefaultsTest < MiniTest::Unit::TestCase
20
26
 
21
27
  def test_default_settings
22
28
  get '/'
29
+ assert_equal 404, last_response.status
23
30
  assert_equal 'success', last_response.body
24
31
  end
25
32
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: roy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-05 00:00:00.000000000 Z
12
+ date: 2012-01-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rack
16
- requirement: &6178220 !ruby/object:Gem::Requirement
16
+ requirement: &14552840 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *6178220
24
+ version_requirements: *14552840
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: minitest
27
- requirement: &6177760 !ruby/object:Gem::Requirement
27
+ requirement: &14552240 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *6177760
35
+ version_requirements: *14552240
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rack-test
38
- requirement: &6177200 !ruby/object:Gem::Requirement
38
+ requirement: &14551720 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *6177200
46
+ version_requirements: *14551720
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: tilt
49
- requirement: &6176320 !ruby/object:Gem::Requirement
49
+ requirement: &14551200 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *6176320
57
+ version_requirements: *14551200
58
58
  description: ! 'roy is a small library which allows every Ruby object to be used
59
59
 
60
60
  as a Rack application.'
@@ -74,6 +74,7 @@ files:
74
74
  - lib/roy/base.rb
75
75
  - lib/roy/basic_auth.rb
76
76
  - lib/roy/before.rb
77
+ - lib/roy/halt.rb
77
78
  - lib/roy/render.rb
78
79
  - lib/roy/version.rb
79
80
  - roy.gemspec