ditty 0.3.3 → 0.4.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 +5 -5
- data/.travis.yml +14 -9
- data/ditty.gemspec +1 -1
- data/lib/ditty/controllers/application.rb +34 -11
- data/lib/ditty/controllers/component.rb +0 -15
- data/lib/ditty/helpers/authentication.rb +3 -0
- data/lib/ditty/helpers/views.rb +10 -6
- data/lib/ditty/middleware/error_catchall.rb +5 -1
- data/lib/ditty/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 2fea055fdddd9b21951527617015b2926b064191dfda753fd930037738122c50
|
4
|
+
data.tar.gz: b8d1cc9f9430ff39d3f345719a0988f51bc03f4a7f718fabe78a69d314e5762a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eafbcf7aaadabc7e9458f403cf2252b3311dc9a716f08884c1651055426864e796866e60f7c3986be4405cc83d3d0552d49fca43e2764e516066884a56e7c4ea
|
7
|
+
data.tar.gz: f2f3b62750d7711bdd59ee7e0df4630ec89992cda013d5e5e96736aa541a5a2cd55ff096de65b774bef4ab74c90e0983a7a3826d30a498e3a3a474bd1cdfc1cf
|
data/.travis.yml
CHANGED
@@ -6,19 +6,24 @@ rvm:
|
|
6
6
|
- 2.2.6
|
7
7
|
gemfile: Gemfile.ci
|
8
8
|
env:
|
9
|
-
|
9
|
+
global:
|
10
|
+
- CC_TEST_REPORTER_ID=289860573c6284a8e277de86848caba84d840be49e35f3601bcd672ab40d1e35
|
11
|
+
matrix:
|
12
|
+
- DATABASE_URL="sqlite::memory:" RACK_ENV=test
|
10
13
|
before_install:
|
11
|
-
- gem install bundler -v 1.12.5
|
14
|
+
- gem install bundler -v 1.12.5
|
12
15
|
before_script:
|
13
|
-
-
|
16
|
+
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
17
|
+
- chmod +x ./cc-test-reporter
|
18
|
+
- ./cc-test-reporter before-build
|
19
|
+
- bundle exec rake ditty:prep
|
14
20
|
script:
|
15
|
-
- bundle exec rake
|
16
|
-
- bundle exec rubocop --fail-level W lib views
|
17
|
-
|
18
|
-
|
19
|
-
repo_token: 289860573c6284a8e277de86848caba84d840be49e35f3601bcd672ab40d1e35
|
21
|
+
- bundle exec rake
|
22
|
+
- bundle exec rubocop --fail-level W lib views
|
23
|
+
after_script:
|
24
|
+
- ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
|
20
25
|
after_success:
|
21
|
-
- bundle exec codeclimate-test-reporter
|
26
|
+
- bundle exec codeclimate-test-reporter
|
22
27
|
deploy:
|
23
28
|
provider: rubygems
|
24
29
|
api_key:
|
data/ditty.gemspec
CHANGED
@@ -22,7 +22,7 @@ Gem::Specification.new do |spec|
|
|
22
22
|
|
23
23
|
spec.add_development_dependency 'bundler', '~> 1.12'
|
24
24
|
spec.add_development_dependency 'database_cleaner'
|
25
|
-
spec.add_development_dependency '
|
25
|
+
spec.add_development_dependency 'factory_bot'
|
26
26
|
spec.add_development_dependency 'rack-test'
|
27
27
|
spec.add_development_dependency 'racksh'
|
28
28
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
@@ -52,47 +52,70 @@ module Ditty
|
|
52
52
|
|
53
53
|
not_found do
|
54
54
|
respond_to do |format|
|
55
|
+
status 404
|
55
56
|
format.html do
|
56
57
|
haml :'404', locals: { title: '4 oh 4' }
|
57
58
|
end
|
58
59
|
format.json do
|
59
|
-
|
60
|
+
json code: 404, errors: ['Not Found']
|
60
61
|
end
|
61
62
|
end
|
62
63
|
end
|
63
64
|
|
64
|
-
error do
|
65
|
-
error = env['sinatra.error']
|
66
|
-
broadcast(:application_error, error)
|
65
|
+
error Helpers::NotAuthenticated, ::Pundit::NotAuthorizedError do
|
67
66
|
respond_to do |format|
|
67
|
+
status 401
|
68
68
|
format.html do
|
69
|
-
|
69
|
+
flash[:warning] = 'Please log in first.'
|
70
|
+
redirect "#{settings.map_path}/auth/identity"
|
70
71
|
end
|
71
72
|
format.json do
|
72
|
-
|
73
|
+
json code: 401, errors: ['Not Authenticated']
|
73
74
|
end
|
74
75
|
end
|
75
76
|
end
|
76
77
|
|
77
|
-
error
|
78
|
+
error Sequel::ValidationFailed do
|
78
79
|
respond_to do |format|
|
80
|
+
entity = env['sinatra.error'].model
|
81
|
+
errors = env['sinatra.error'].errors
|
82
|
+
status 400
|
79
83
|
format.html do
|
80
|
-
|
81
|
-
|
84
|
+
action = entity.id ? :edit : :new
|
85
|
+
haml :"#{view_location}/#{action}", locals: { entity: entity, title: heading(action) }
|
82
86
|
end
|
83
87
|
format.json do
|
84
|
-
|
88
|
+
json code: 400, errors: errors
|
85
89
|
end
|
86
90
|
end
|
87
91
|
end
|
88
92
|
|
89
93
|
error ::Sequel::ForeignKeyConstraintViolation do
|
94
|
+
error = env['sinatra.error']
|
95
|
+
broadcast(:application_error, error)
|
96
|
+
::Ditty::Services::Logger.instance.error error
|
97
|
+
respond_to do |format|
|
98
|
+
status 400
|
99
|
+
format.html do
|
100
|
+
haml :error, locals: { title: 'Something went wrong', error: error }
|
101
|
+
end
|
102
|
+
format.json do
|
103
|
+
json code: 400, errors: ['Invalid Relation Specified']
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
error do
|
109
|
+
error = env['sinatra.error']
|
110
|
+
broadcast(:application_error, error)
|
111
|
+
::Ditty::Services::Logger.instance.error error
|
90
112
|
respond_to do |format|
|
113
|
+
status 500
|
91
114
|
format.html do
|
92
115
|
haml :error, locals: { title: 'Something went wrong', error: error }
|
93
116
|
end
|
94
117
|
format.json do
|
95
|
-
|
118
|
+
json code: 500, errors: ['Something went wrong']
|
96
119
|
end
|
97
120
|
end
|
98
121
|
end
|
@@ -89,20 +89,5 @@ module Ditty
|
|
89
89
|
log_action("#{dehumanized}_delete".to_sym) if settings.track_actions
|
90
90
|
delete_response(entity)
|
91
91
|
end
|
92
|
-
|
93
|
-
error Sequel::ValidationFailed do
|
94
|
-
respond_to do |format|
|
95
|
-
entity = env['sinatra.error'].model
|
96
|
-
errors = env['sinatra.error'].errors
|
97
|
-
status 400
|
98
|
-
format.html do
|
99
|
-
action = entity.id ? :edit : :new
|
100
|
-
haml :"#{view_location}/#{action}", locals: { entity: entity, title: heading(action) }
|
101
|
-
end
|
102
|
-
format.json do
|
103
|
-
json [400, { errors: errors }]
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
107
92
|
end
|
108
93
|
end
|
data/lib/ditty/helpers/views.rb
CHANGED
@@ -46,15 +46,19 @@ module Ditty
|
|
46
46
|
haml :'partials/delete_form', locals: locals
|
47
47
|
end
|
48
48
|
|
49
|
+
def query_string(add = {})
|
50
|
+
qs = params.clone.merge(add)
|
51
|
+
qs.delete('captures')
|
52
|
+
Rack::Utils.build_query qs
|
53
|
+
end
|
54
|
+
|
49
55
|
def pagination(list, base_path, qp = {})
|
50
56
|
return unless list.respond_to? :pagination_record_count
|
51
|
-
qs = params.clone.merge(qp)
|
52
|
-
qs.delete('captures')
|
53
57
|
locals = {
|
54
|
-
first_link: "#{base_path}
|
55
|
-
next_link: list.last_page? ? '#' : "#{base_path}
|
56
|
-
prev_link: list.first_page? ? '#' : "#{base_path}
|
57
|
-
last_link: "#{base_path}
|
58
|
+
first_link: "#{base_path}?" + query_string(qp.merge(page: 1)),
|
59
|
+
next_link: list.last_page? ? '#' : "#{base_path}?" + query_string(qp.merge(page: list.next_page)),
|
60
|
+
prev_link: list.first_page? ? '#' : "#{base_path}?" + query_string(qp.merge(page: list.prev_page)),
|
61
|
+
last_link: "#{base_path}?" + query_string(qp.merge(page: list.page_count)),
|
58
62
|
base_path: base_path,
|
59
63
|
list: list
|
60
64
|
}
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'ditty/services/logger'
|
2
|
+
|
1
3
|
module Ditty
|
2
4
|
module Middleware
|
3
5
|
class ErrorCatchall
|
@@ -11,7 +13,9 @@ module Ditty
|
|
11
13
|
@env = env
|
12
14
|
begin
|
13
15
|
@app.call env
|
14
|
-
rescue StandardError
|
16
|
+
rescue StandardError => e
|
17
|
+
::Ditty::Services::Logger.instance.error "Ditty Catchall: #{e.class}"
|
18
|
+
::Ditty::Services::Logger.instance.error e
|
15
19
|
[500, {}, ['Unknown Error']]
|
16
20
|
end
|
17
21
|
end
|
data/lib/ditty/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ditty
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jurgens du Toit
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-02-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -39,7 +39,7 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: factory_bot
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
@@ -430,7 +430,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
430
430
|
version: '0'
|
431
431
|
requirements: []
|
432
432
|
rubyforge_project:
|
433
|
-
rubygems_version: 2.
|
433
|
+
rubygems_version: 2.7.4
|
434
434
|
signing_key:
|
435
435
|
specification_version: 4
|
436
436
|
summary: Sinatra Based Application Framework
|