sinatra-backstage 0.1.2 → 0.2.0
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.
- checksums.yaml +4 -4
- data/lib/sinatra/backstage/rest/rest_routes.rb +32 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 947f4e7b2f4016ed98e09fad8d85106becf578b5
|
4
|
+
data.tar.gz: 6dc8daa64880d9f682f28e5ee15171a7cf072f52
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bf6fdb9a38234ae6901a7e8fc7fca1b10f88dbf282fcb9189c9a38b92a6006179c18f9d2f7e0fe195a0400267f0422bb8c831a35e8a4102a5d4f73ed8307168f
|
7
|
+
data.tar.gz: 4cd69a8db7d9b86c2b6551898a7ac8c60dbe80c8778e66bf82e8eb92774d83da53ab010a212f8076f21c38e5fc1d34b0b40a81dab8b93c3189663ceea34b5dca
|
@@ -9,17 +9,17 @@ module Sinatra
|
|
9
9
|
controller.extend self
|
10
10
|
end
|
11
11
|
|
12
|
-
def rest_routes(klass, namespace)
|
12
|
+
def rest_routes(klass, namespace, display_list = false)
|
13
13
|
|
14
14
|
## Routes
|
15
15
|
### get list
|
16
16
|
get namespace do
|
17
|
-
@objects = klass
|
17
|
+
@objects = rest_get_all klass, params
|
18
18
|
request.accept.each do |type|
|
19
19
|
# puts "type.to_s = #{type.to_s}"
|
20
20
|
case type.to_s
|
21
21
|
when 'text/html'
|
22
|
-
halt eval "#{settings.render_engine} '#{klass
|
22
|
+
halt eval "#{settings.render_engine} '#{demodulize(klass).downcase}/list'"
|
23
23
|
when 'text/json', 'application/json'
|
24
24
|
halt @objects.to_a.to_json
|
25
25
|
end
|
@@ -27,12 +27,23 @@ module Sinatra
|
|
27
27
|
error 406
|
28
28
|
end
|
29
29
|
|
30
|
+
### get add-form
|
31
|
+
get "#{namespace}/new" do
|
32
|
+
template = ["#{demodulize(klass).downcase}/new"]
|
33
|
+
if display_list
|
34
|
+
@objects = rest_get_all(klass)
|
35
|
+
template.unshift "#{demodulize(klass).downcase}/list"
|
36
|
+
end
|
37
|
+
eval "#{settings.render_engine} ['#{template.join('\',\'')}']"
|
38
|
+
end
|
39
|
+
|
30
40
|
### create object
|
31
|
-
post namespace do
|
41
|
+
post "#{namespace}/new" do
|
32
42
|
# puts "params = #{params}"
|
33
43
|
# puts "-- rest_routes post namespace = #{namespace}"
|
34
44
|
# puts "-- rest_routes post klass = #{klass}"
|
35
45
|
# halt
|
46
|
+
@errors = []
|
36
47
|
begin
|
37
48
|
object = klass.create params[:object]
|
38
49
|
redirect namespace
|
@@ -40,8 +51,21 @@ module Sinatra
|
|
40
51
|
puts e.resource.errors.inspect
|
41
52
|
e.resource.errors.each do |error|
|
42
53
|
puts error.inspect
|
54
|
+
@errors << error
|
43
55
|
end
|
56
|
+
@errors.flatten!
|
57
|
+
puts @errors.inspect
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
get "#{namespace}/:id" do |id|
|
62
|
+
@object = klass.get!(id)
|
63
|
+
template = ["#{demodulize(klass).downcase}/edit"]
|
64
|
+
if display_list
|
65
|
+
@objects = rest_get_all(klass)
|
66
|
+
template.unshift "#{demodulize(klass).downcase}/list"
|
44
67
|
end
|
68
|
+
eval "#{settings.render_engine} ['#{template.join('\',\'')}']"
|
45
69
|
end
|
46
70
|
|
47
71
|
### update object
|
@@ -58,6 +82,10 @@ module Sinatra
|
|
58
82
|
|
59
83
|
end
|
60
84
|
|
85
|
+
def rest_get_all(klass, params = {})
|
86
|
+
klass.all params.inject({}){ | hash_sym, (key, val) | hash_sym[key.to_sym] = val; hash_sym }
|
87
|
+
end
|
88
|
+
|
61
89
|
end
|
62
90
|
|
63
91
|
def self.included(app)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sinatra-backstage
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexander Popov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-05-
|
11
|
+
date: 2015-05-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sinatra
|