roy 0.4.0 → 0.5.1

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.
@@ -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