roar-rails 0.0.9 → 0.0.10
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/CHANGES.markdown +4 -0
- data/lib/roar-rails.rb +13 -0
- data/lib/roar/rails/controller_additions.rb +4 -1
- data/lib/roar/rails/rails3_0_strategy.rb +12 -0
- data/lib/roar/rails/rails3_1_strategy.rb +6 -0
- data/lib/roar/rails/responder.rb +9 -2
- data/lib/roar/rails/version.rb +1 -1
- data/roar-rails.gemspec +1 -0
- data/test/responder_test.rb +33 -4
- metadata +25 -42
data/CHANGES.markdown
CHANGED
data/lib/roar-rails.rb
CHANGED
@@ -17,11 +17,24 @@ module Roar::Representer
|
|
17
17
|
end
|
18
18
|
|
19
19
|
|
20
|
+
|
20
21
|
module Roar
|
21
22
|
module Rails
|
23
|
+
def self.rails3_0?
|
24
|
+
::Rails::VERSION::MINOR == 0
|
25
|
+
end
|
26
|
+
|
27
|
+
if rails3_0?
|
28
|
+
require 'roar/rails/rails3_0_strategy'
|
29
|
+
else
|
30
|
+
require 'roar/rails/rails3_1_strategy'
|
31
|
+
end
|
32
|
+
|
22
33
|
autoload("TestCase", "roar/rails/test_case")
|
23
34
|
autoload("ControllerAdditions", "roar/rails/controller_additions")
|
24
35
|
autoload("Responder", "roar/rails/responder")
|
25
36
|
autoload("ModelMethods", "roar/rails/responder")
|
26
37
|
end
|
27
38
|
end
|
39
|
+
|
40
|
+
|
@@ -1,10 +1,13 @@
|
|
1
|
+
require 'hooks/inheritable_attribute'
|
2
|
+
|
1
3
|
module Roar::Rails
|
2
4
|
module ControllerAdditions
|
3
5
|
extend ActiveSupport::Concern
|
4
6
|
include ModelMethods
|
5
7
|
|
6
8
|
included do
|
7
|
-
|
9
|
+
extend Hooks::InheritableAttribute
|
10
|
+
inheritable_attr :represents_options
|
8
11
|
self.represents_options ||= {}
|
9
12
|
end
|
10
13
|
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Roar::Rails
|
2
|
+
module Responder
|
3
|
+
module VersionStrategy
|
4
|
+
def prepare_model!(model)
|
5
|
+
# rails <= 3.1 compatibility. #display gets called for empty responses
|
6
|
+
# >= 3.2 fixes by calling #head, not #display for all empty bodies (PUT, DELETE)
|
7
|
+
return if respond_to?("empty_#{format}_resource") && model == empty_resource
|
8
|
+
super
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
data/lib/roar/rails/responder.rb
CHANGED
@@ -1,9 +1,15 @@
|
|
1
1
|
module Roar::Rails
|
2
2
|
module ModelMethods
|
3
|
+
private
|
3
4
|
# DISCUSS: move this into a generic namespace as we could need that in Sinatra as well.
|
4
5
|
def extend_with!(model, representer)
|
5
6
|
model.extend(representer)
|
6
7
|
end
|
8
|
+
|
9
|
+
def prepare_model!(model)
|
10
|
+
representer = controller.representer_for(format, model, options)
|
11
|
+
extend_with!(model, representer)
|
12
|
+
end
|
7
13
|
end
|
8
14
|
|
9
15
|
module Responder
|
@@ -16,8 +22,8 @@ module Roar::Rails
|
|
16
22
|
return super
|
17
23
|
end
|
18
24
|
|
19
|
-
|
20
|
-
|
25
|
+
prepare_model!(model)
|
26
|
+
|
21
27
|
super
|
22
28
|
end
|
23
29
|
|
@@ -29,5 +35,6 @@ module Roar::Rails
|
|
29
35
|
end
|
30
36
|
end
|
31
37
|
|
38
|
+
include VersionStrategy
|
32
39
|
end
|
33
40
|
end
|
data/lib/roar/rails/version.rb
CHANGED
data/roar-rails.gemspec
CHANGED
@@ -22,6 +22,7 @@ Gem::Specification.new do |s|
|
|
22
22
|
s.add_runtime_dependency "test_xml"
|
23
23
|
s.add_runtime_dependency "actionpack", "~> 3.0"
|
24
24
|
s.add_runtime_dependency "railties", "~> 3.0"
|
25
|
+
s.add_runtime_dependency "hooks"
|
25
26
|
|
26
27
|
s.add_development_dependency "minitest", ">= 2.8.1"
|
27
28
|
s.add_development_dependency "tzinfo" # FIXME: why the hell do we need this for 3.1?
|
data/test/responder_test.rb
CHANGED
@@ -113,13 +113,26 @@ class ResponderTest < ActionController::TestCase
|
|
113
113
|
instance_exec &@block
|
114
114
|
end
|
115
115
|
end
|
116
|
-
|
116
|
+
|
117
|
+
class UniqueRepresentsOptionsTest < ResponderTest
|
118
|
+
class One < BaseController
|
119
|
+
represents :json, Object
|
120
|
+
end
|
121
|
+
class Two < BaseController
|
122
|
+
represents :json, Singer
|
123
|
+
end
|
124
|
+
test "each subclass of a roar-augmented controller can represent different things" do
|
125
|
+
assert_not_equal One.represents_options, Two.represents_options
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
117
129
|
class UnconfiguredControllerTest < ResponderTest
|
130
|
+
SingersRepresenter = ::SingersRepresenter
|
118
131
|
class SingersController < BaseController
|
119
132
|
end
|
120
|
-
|
133
|
+
|
121
134
|
tests SingersController
|
122
|
-
|
135
|
+
|
123
136
|
test "responder finds SingerRepresenter representer by convention" do
|
124
137
|
get do
|
125
138
|
singer = Singer.new("Bumi")
|
@@ -137,8 +150,17 @@ class ResponderTest < ActionController::TestCase
|
|
137
150
|
|
138
151
|
assert_equal({:singers => singers.collect {|s| s.extend(SingerRepresenter).to_hash }}.to_json, @response.body)
|
139
152
|
end
|
153
|
+
|
154
|
+
test "responder allows empty response bodies to pass through" do
|
155
|
+
put do
|
156
|
+
singer = Singer.new("Bumi")
|
157
|
+
respond_with singer
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
140
161
|
end
|
141
|
-
|
162
|
+
|
163
|
+
|
142
164
|
class RespondToOptionsOverridingConfigurationTest < ResponderTest
|
143
165
|
class SingersController < BaseController
|
144
166
|
represents :json, Object
|
@@ -207,6 +229,13 @@ class ResponderTest < ActionController::TestCase
|
|
207
229
|
|
208
230
|
super :execute, :format => 'json'
|
209
231
|
end
|
232
|
+
|
233
|
+
def put(&block)
|
234
|
+
@controller.instance_eval do
|
235
|
+
@block = block
|
236
|
+
end
|
237
|
+
super :execute, :format => 'json'
|
238
|
+
end
|
210
239
|
|
211
240
|
def singer(name="Bumi")
|
212
241
|
singer = Musician.new(name)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: roar-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.10
|
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-06
|
12
|
+
date: 2012-07-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: roar
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirement: &69918720 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,15 +21,10 @@ dependencies:
|
|
21
21
|
version: '0.10'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '0.10'
|
24
|
+
version_requirements: *69918720
|
30
25
|
- !ruby/object:Gem::Dependency
|
31
26
|
name: test_xml
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
27
|
+
requirement: &69918510 !ruby/object:Gem::Requirement
|
33
28
|
none: false
|
34
29
|
requirements:
|
35
30
|
- - ! '>='
|
@@ -37,15 +32,10 @@ dependencies:
|
|
37
32
|
version: '0'
|
38
33
|
type: :runtime
|
39
34
|
prerelease: false
|
40
|
-
version_requirements:
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - ! '>='
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: '0'
|
35
|
+
version_requirements: *69918510
|
46
36
|
- !ruby/object:Gem::Dependency
|
47
37
|
name: actionpack
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
38
|
+
requirement: &69918240 !ruby/object:Gem::Requirement
|
49
39
|
none: false
|
50
40
|
requirements:
|
51
41
|
- - ~>
|
@@ -53,15 +43,10 @@ dependencies:
|
|
53
43
|
version: '3.0'
|
54
44
|
type: :runtime
|
55
45
|
prerelease: false
|
56
|
-
version_requirements:
|
57
|
-
none: false
|
58
|
-
requirements:
|
59
|
-
- - ~>
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '3.0'
|
46
|
+
version_requirements: *69918240
|
62
47
|
- !ruby/object:Gem::Dependency
|
63
48
|
name: railties
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
+
requirement: &69917990 !ruby/object:Gem::Requirement
|
65
50
|
none: false
|
66
51
|
requirements:
|
67
52
|
- - ~>
|
@@ -69,15 +54,21 @@ dependencies:
|
|
69
54
|
version: '3.0'
|
70
55
|
type: :runtime
|
71
56
|
prerelease: false
|
72
|
-
version_requirements:
|
57
|
+
version_requirements: *69917990
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: hooks
|
60
|
+
requirement: &69917800 !ruby/object:Gem::Requirement
|
73
61
|
none: false
|
74
62
|
requirements:
|
75
|
-
- -
|
63
|
+
- - ! '>='
|
76
64
|
- !ruby/object:Gem::Version
|
77
|
-
version: '
|
65
|
+
version: '0'
|
66
|
+
type: :runtime
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *69917800
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: minitest
|
80
|
-
requirement: !ruby/object:Gem::Requirement
|
71
|
+
requirement: &69917530 !ruby/object:Gem::Requirement
|
81
72
|
none: false
|
82
73
|
requirements:
|
83
74
|
- - ! '>='
|
@@ -85,15 +76,10 @@ dependencies:
|
|
85
76
|
version: 2.8.1
|
86
77
|
type: :development
|
87
78
|
prerelease: false
|
88
|
-
version_requirements:
|
89
|
-
none: false
|
90
|
-
requirements:
|
91
|
-
- - ! '>='
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: 2.8.1
|
79
|
+
version_requirements: *69917530
|
94
80
|
- !ruby/object:Gem::Dependency
|
95
81
|
name: tzinfo
|
96
|
-
requirement: !ruby/object:Gem::Requirement
|
82
|
+
requirement: &68875180 !ruby/object:Gem::Requirement
|
97
83
|
none: false
|
98
84
|
requirements:
|
99
85
|
- - ! '>='
|
@@ -101,12 +87,7 @@ dependencies:
|
|
101
87
|
version: '0'
|
102
88
|
type: :development
|
103
89
|
prerelease: false
|
104
|
-
version_requirements:
|
105
|
-
none: false
|
106
|
-
requirements:
|
107
|
-
- - ! '>='
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: '0'
|
90
|
+
version_requirements: *68875180
|
110
91
|
description: Rails extensions for using Roar in the popular web framework.
|
111
92
|
email:
|
112
93
|
- apotonick@gmail.com
|
@@ -124,6 +105,8 @@ files:
|
|
124
105
|
- gemfiles/Gemfile.rails3-2
|
125
106
|
- lib/roar-rails.rb
|
126
107
|
- lib/roar/rails/controller_additions.rb
|
108
|
+
- lib/roar/rails/rails3_0_strategy.rb
|
109
|
+
- lib/roar/rails/rails3_1_strategy.rb
|
127
110
|
- lib/roar/rails/railtie.rb
|
128
111
|
- lib/roar/rails/responder.rb
|
129
112
|
- lib/roar/rails/test_case.rb
|
@@ -192,7 +175,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
192
175
|
version: '0'
|
193
176
|
requirements: []
|
194
177
|
rubyforge_project: roar-rails
|
195
|
-
rubygems_version: 1.8.
|
178
|
+
rubygems_version: 1.8.10
|
196
179
|
signing_key:
|
197
180
|
specification_version: 3
|
198
181
|
summary: Use Roar in Rails.
|