ananke 0.0.8 → 0.0.9
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/Gemfile +1 -1
- data/lib/ananke/routing.rb +22 -3
- data/lib/ananke.rb +2 -2
- data/lib/version.rb +1 -1
- data/spec/lib/route_for_spec.rb +20 -0
- metadata +3 -3
data/Gemfile
CHANGED
data/lib/ananke/routing.rb
CHANGED
@@ -116,9 +116,28 @@ module Ananke
|
|
116
116
|
|
117
117
|
#===========================ROUTE_FOR==========================
|
118
118
|
route_for_list.each do |r|
|
119
|
-
|
120
|
-
|
121
|
-
|
119
|
+
inputs = mod.method(r[:name]).parameters
|
120
|
+
full_path = "/#{path}/#{r[:name]}"
|
121
|
+
full_path << "/:key" if inputs.length == 1
|
122
|
+
|
123
|
+
call_def = "def self.call_#{path}_#{r[:name]}(params)"
|
124
|
+
case inputs.length
|
125
|
+
when 0
|
126
|
+
call_def << "#{mod}.send(:#{r[:name]})"
|
127
|
+
when 1
|
128
|
+
call_def << "#{mod}.send(:#{r[:name]}, params[:key])"
|
129
|
+
else
|
130
|
+
input_array = []
|
131
|
+
inputs.each{|i| input_array << "params[:#{i[1]}]"}
|
132
|
+
call_def << "#{mod}.send(:#{r[:name]}, #{input_array.join(',')})"
|
133
|
+
end
|
134
|
+
call_def << "end"
|
135
|
+
puts call_def
|
136
|
+
Ananke.send(:eval, call_def)
|
137
|
+
|
138
|
+
build_route mod, r[:name], r[:verb], full_path do
|
139
|
+
param_missing!(:key) if inputs.length == 1 && params[:key].nil?
|
140
|
+
obj = Ananke.send("call_#{path}_#{r[:name]}", params)
|
122
141
|
|
123
142
|
links = build_links(link_list, link_to_list, "#{path}/#{r[:name]}", params[:key], mod)
|
124
143
|
json = get_json("#{path}/#{r[:name]}", obj, links)
|
data/lib/ananke.rb
CHANGED
@@ -41,8 +41,8 @@ module Ananke
|
|
41
41
|
def link_to(rel)
|
42
42
|
@link_to_list << {:rel => rel}
|
43
43
|
end
|
44
|
-
def route_for(rel)
|
45
|
-
@route_for_list << {:name => rel}
|
44
|
+
def route_for(rel, verb = :get)
|
45
|
+
@route_for_list << {:name => rel, :verb => verb}
|
46
46
|
end
|
47
47
|
def rule(name, &block)
|
48
48
|
Ananke::Rules.send(:define_singleton_method, "validate_#{name}", block)
|
data/lib/version.rb
CHANGED
data/spec/lib/route_for_spec.rb
CHANGED
@@ -28,4 +28,24 @@ describe 'Resource Route-For' do
|
|
28
28
|
check_status(200)
|
29
29
|
last_response.body.should == '{"route_for":{"content":"Test"},"links":[{"rel":"self","uri":"/route_for/custom/1"}]}'
|
30
30
|
end
|
31
|
+
|
32
|
+
it """
|
33
|
+
Should be able to accept route_for Registrations
|
34
|
+
""" do
|
35
|
+
module Repository
|
36
|
+
module Route_for
|
37
|
+
def self.multi(id, name)
|
38
|
+
{:content => 'Test'}
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
rest :route_for do
|
43
|
+
id :link_id
|
44
|
+
route_for :multi, :post
|
45
|
+
end
|
46
|
+
|
47
|
+
post "/route_for/multi", body={:id => 1, :name => 'some name'}
|
48
|
+
check_status(200)
|
49
|
+
last_response.body.should == '{"route_for":{"content":"Test"},"links":[{"rel":"self","uri":"/route_for/multi/"}]}'
|
50
|
+
end
|
31
51
|
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: ananke
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.9
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Andries Coetzee
|
@@ -127,7 +127,7 @@ licenses: []
|
|
127
127
|
post_install_message: |
|
128
128
|
**************************************************
|
129
129
|
|
130
|
-
Thank you for installing ananke-0.0.
|
130
|
+
Thank you for installing ananke-0.0.9
|
131
131
|
|
132
132
|
Please be sure to look at README.rdoc to see what might have changed
|
133
133
|
since the last release and how to use this GEM.
|
@@ -156,7 +156,7 @@ rubyforge_project:
|
|
156
156
|
rubygems_version: 1.5.0
|
157
157
|
signing_key:
|
158
158
|
specification_version: 3
|
159
|
-
summary: ananke-0.0.
|
159
|
+
summary: ananke-0.0.9
|
160
160
|
test_files:
|
161
161
|
- spec/nice_formatter.rb
|
162
162
|
- spec/call_chain.rb
|