shaf 0.8.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/bin/shaf +19 -4
- data/lib/shaf.rb +1 -0
- data/lib/shaf/app.rb +7 -10
- data/lib/shaf/command/server.rb +4 -2
- data/lib/shaf/errors.rb +22 -2
- data/lib/shaf/extensions/controller_hooks.rb +14 -0
- data/lib/shaf/extensions/resource_uris.rb +1 -1
- data/lib/shaf/formable/field.rb +10 -6
- data/lib/shaf/formable/form.rb +4 -0
- data/lib/shaf/generator/base.rb +2 -2
- data/lib/shaf/generator/controller.rb +11 -11
- data/lib/shaf/generator/helper.rb +33 -0
- data/lib/shaf/generator/migration.rb +6 -1
- data/lib/shaf/generator/migration/empty.rb +2 -2
- data/lib/shaf/generator/serializer.rb +4 -4
- data/lib/shaf/generator/templates/api/controller.rb.erb +4 -3
- data/lib/shaf/generator/templates/api/serializer.rb.erb +10 -12
- data/lib/shaf/generator/templates/spec/serializer_spec.rb.erb +4 -2
- data/lib/shaf/helpers.rb +2 -0
- data/lib/shaf/helpers/http_header.rb +26 -0
- data/lib/shaf/helpers/paginate.rb +4 -2
- data/lib/shaf/helpers/payload.rb +33 -8
- data/lib/shaf/middleware/request_id.rb +3 -1
- data/lib/shaf/rake/db.rb +5 -5
- data/lib/shaf/rake/test.rb +0 -27
- data/lib/shaf/router.rb +133 -0
- data/lib/shaf/settings.rb +36 -11
- data/lib/shaf/spec/http_method_utils.rb +11 -3
- data/lib/shaf/spec/integration_spec.rb +4 -4
- data/lib/shaf/spec/serializer_spec.rb +1 -1
- data/lib/shaf/upgrade/manifest.rb +34 -9
- data/lib/shaf/upgrade/package.rb +24 -15
- data/lib/shaf/utils.rb +31 -21
- data/lib/shaf/version.rb +1 -1
- data/templates/Rakefile +27 -0
- data/templates/api/controllers/base_controller.rb +13 -8
- data/templates/api/serializers/error_serializer.rb +3 -1
- data/templates/api/serializers/form_serializer.rb +11 -16
- data/templates/api/serializers/validation_error_serializer.rb +13 -0
- data/templates/config.ru +1 -1
- data/templates/config/bootstrap.rb +3 -1
- data/templates/config/database.rb +6 -7
- data/templates/config/directories.rb +3 -2
- data/templates/config/helpers.rb +1 -1
- data/templates/config/initializers/db_migrations.rb +14 -8
- data/templates/config/initializers/logging.rb +2 -2
- data/templates/config/initializers/sequel.rb +1 -0
- data/templates/config/paths.rb +7 -0
- data/templates/config/settings.yml +5 -0
- data/upgrades/1.0.0.tar.gz +0 -0
- metadata +38 -19
- metadata.gz.sig +0 -0
- data/templates/config/constants.rb +0 -8
data/templates/config.ru
CHANGED
@@ -1,10 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rubygems'
|
2
4
|
require 'bundler'
|
3
5
|
Bundler.require(:default, ENV['RACK_ENV'])
|
4
6
|
|
5
7
|
$logger = nil
|
6
8
|
require 'shaf/settings'
|
7
|
-
require 'config/
|
9
|
+
require 'config/paths'
|
8
10
|
require 'config/database'
|
9
11
|
require 'config/initializers'
|
10
12
|
require 'config/directories'
|
@@ -1,6 +1,7 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'sinatra/base'
|
2
4
|
require 'sequel'
|
3
|
-
require 'config/constants'
|
4
5
|
require 'fileutils'
|
5
6
|
|
6
7
|
config = {
|
@@ -15,17 +16,16 @@ config = {
|
|
15
16
|
|
16
17
|
development: {
|
17
18
|
adapter: 'sqlite',
|
18
|
-
database:
|
19
|
+
database: 'db/development.sqlite3'
|
19
20
|
}.freeze,
|
20
21
|
|
21
22
|
test: {
|
22
23
|
adapter: 'sqlite',
|
23
|
-
database:
|
24
|
+
database: 'db/test.sqlite3'
|
24
25
|
}.freeze
|
25
26
|
|
26
27
|
}.freeze
|
27
28
|
|
28
|
-
|
29
29
|
env = Sinatra::Application.settings.environment
|
30
30
|
|
31
31
|
unless config[env]
|
@@ -33,8 +33,7 @@ unless config[env]
|
|
33
33
|
exit 1
|
34
34
|
end
|
35
35
|
|
36
|
-
|
37
|
-
FileUtils.mkdir_p(
|
36
|
+
migrations_dir = 'db/migrations'
|
37
|
+
FileUtils.mkdir_p(migrations_dir) unless Dir.exist?(migrations_dir)
|
38
38
|
|
39
39
|
DB = Sequel.connect(config[env])
|
40
|
-
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'shaf/settings'
|
2
2
|
|
3
3
|
def sort_files(files)
|
4
4
|
files.sort_by do |file|
|
@@ -43,7 +43,8 @@ def require_ruby_files
|
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
46
|
-
[
|
46
|
+
%i[lib_dir src_dir app_dir].each do |cfg|
|
47
|
+
dir = Shaf::Settings.send cfg
|
47
48
|
next unless Dir.exist? dir
|
48
49
|
$LOAD_PATH.unshift dir
|
49
50
|
|
data/templates/config/helpers.rb
CHANGED
@@ -2,11 +2,18 @@ require 'sequel'
|
|
2
2
|
require 'config/database'
|
3
3
|
|
4
4
|
Sequel.extension :migration
|
5
|
-
Dir[File.join(MIGRATIONS_DIR, "*")]
|
6
5
|
|
7
|
-
def
|
8
|
-
return true unless Dir[
|
9
|
-
Sequel::Migrator.is_current?(DB,
|
6
|
+
def current?
|
7
|
+
return true unless Dir[migrations_dir_glob].any?
|
8
|
+
Sequel::Migrator.is_current?(DB, migrations_dir)
|
9
|
+
end
|
10
|
+
|
11
|
+
def migrations_dir
|
12
|
+
File.join(Shaf::Settings.app_root, Shaf::Settings.migrations_dir)
|
13
|
+
end
|
14
|
+
|
15
|
+
def migrations_dir_glob
|
16
|
+
File.join(migrations_dir, '*')
|
10
17
|
end
|
11
18
|
|
12
19
|
def environment
|
@@ -14,18 +21,17 @@ def environment
|
|
14
21
|
end
|
15
22
|
|
16
23
|
def init
|
17
|
-
return if
|
24
|
+
return if current?
|
18
25
|
|
19
26
|
if environment == 'test'
|
20
27
|
$logger.info "Running migrations in 'test' environment.."
|
21
|
-
Sequel::Migrator.run(DB,
|
28
|
+
Sequel::Migrator.run(DB, migrations_dir)
|
22
29
|
else
|
23
30
|
msg = "Database for environment '#{environment}' is not " \
|
24
|
-
|
31
|
+
'updated to the latest migration'
|
25
32
|
STDERR.puts msg
|
26
33
|
$logger&.warn msg
|
27
34
|
end
|
28
35
|
end
|
29
36
|
|
30
37
|
init
|
31
|
-
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'logger'
|
2
2
|
|
3
|
-
log_dir = File.join(
|
4
|
-
Dir.mkdir log_dir unless Dir.exist? log_dir
|
3
|
+
log_dir = File.join(Shaf::Settings.app_root, 'logs')
|
4
|
+
Dir.mkdir log_dir unless Dir.exist? log_dir
|
5
5
|
|
6
6
|
$logger = Logger.new(File.join(log_dir, "#{Sinatra::Application.settings.environment}.log"))
|
7
7
|
DB.loggers << $logger
|
@@ -0,0 +1,7 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
app_root = File.expand_path('../', __dir__)
|
4
|
+
Shaf::Settings.app_root = app_root
|
5
|
+
Shaf::Settings.app_dir = File.expand_path('api', app_root)
|
6
|
+
Shaf::Settings.src_dir = File.expand_path('src', app_root)
|
7
|
+
Shaf::Settings.lib_dir = File.expand_path('lib', app_root)
|
@@ -12,6 +12,11 @@ default: &default
|
|
12
12
|
hostname: localhost
|
13
13
|
protocol: http
|
14
14
|
port: 3000
|
15
|
+
auth_token_header: X-Auth-Token
|
16
|
+
form_profile_name: shaf-form
|
17
|
+
form_profile_uri: https://gist.githubusercontent.com/sammyhenningsson/39c8aafeaf60192b082762cbf3e08d57/raw/shaf-form.md
|
18
|
+
error_profile_name: shaf-error
|
19
|
+
error_profile_uri: https://gist.githubusercontent.com/sammyhenningsson/049d10e2b8978059cde104fc5d6c2d52/raw/shaf-error.md
|
15
20
|
|
16
21
|
production:
|
17
22
|
<<: *default
|
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shaf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sammy Henningsson
|
@@ -30,60 +30,63 @@ cert_chain:
|
|
30
30
|
ZMhjYR7sRczGJx+GxGU2EaR0bjRsPVlC4ywtFxoOfRG3WaJcpWGEoAoMJX6Z0bRv
|
31
31
|
M40=
|
32
32
|
-----END CERTIFICATE-----
|
33
|
-
date: 2019-
|
33
|
+
date: 2019-03-25 00:00:00.000000000 Z
|
34
34
|
dependencies:
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
|
-
name:
|
36
|
+
name: minitest
|
37
37
|
requirement: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: '
|
41
|
+
version: '5'
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: '5.10'
|
42
45
|
type: :development
|
43
46
|
prerelease: false
|
44
47
|
version_requirements: !ruby/object:Gem::Requirement
|
45
48
|
requirements:
|
46
49
|
- - "~>"
|
47
50
|
- !ruby/object:Gem::Version
|
48
|
-
version: '
|
51
|
+
version: '5'
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '5.10'
|
49
55
|
- !ruby/object:Gem::Dependency
|
50
|
-
name:
|
56
|
+
name: rack-test
|
51
57
|
requirement: !ruby/object:Gem::Requirement
|
52
58
|
requirements:
|
53
59
|
- - "~>"
|
54
60
|
- !ruby/object:Gem::Version
|
55
|
-
version: '
|
61
|
+
version: '1.0'
|
56
62
|
type: :development
|
57
63
|
prerelease: false
|
58
64
|
version_requirements: !ruby/object:Gem::Requirement
|
59
65
|
requirements:
|
60
66
|
- - "~>"
|
61
67
|
- !ruby/object:Gem::Version
|
62
|
-
version: '
|
68
|
+
version: '1.0'
|
63
69
|
- !ruby/object:Gem::Dependency
|
64
|
-
name:
|
70
|
+
name: rake
|
65
71
|
requirement: !ruby/object:Gem::Requirement
|
66
72
|
requirements:
|
67
73
|
- - "~>"
|
68
74
|
- !ruby/object:Gem::Version
|
69
|
-
version: '
|
75
|
+
version: '12.0'
|
70
76
|
type: :development
|
71
77
|
prerelease: false
|
72
78
|
version_requirements: !ruby/object:Gem::Requirement
|
73
79
|
requirements:
|
74
80
|
- - "~>"
|
75
81
|
- !ruby/object:Gem::Version
|
76
|
-
version: '
|
82
|
+
version: '12.0'
|
77
83
|
- !ruby/object:Gem::Dependency
|
78
|
-
name:
|
84
|
+
name: sequel
|
79
85
|
requirement: !ruby/object:Gem::Requirement
|
80
86
|
requirements:
|
81
87
|
- - "~>"
|
82
88
|
- !ruby/object:Gem::Version
|
83
89
|
version: '5'
|
84
|
-
- - ">="
|
85
|
-
- !ruby/object:Gem::Version
|
86
|
-
version: '5.10'
|
87
90
|
type: :development
|
88
91
|
prerelease: false
|
89
92
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -91,9 +94,20 @@ dependencies:
|
|
91
94
|
- - "~>"
|
92
95
|
- !ruby/object:Gem::Version
|
93
96
|
version: '5'
|
94
|
-
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: sinatra
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
95
102
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
103
|
+
version: '2.0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '2.0'
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: sqlite3
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -144,6 +158,7 @@ files:
|
|
144
158
|
- lib/shaf/generator.rb
|
145
159
|
- lib/shaf/generator/base.rb
|
146
160
|
- lib/shaf/generator/controller.rb
|
161
|
+
- lib/shaf/generator/helper.rb
|
147
162
|
- lib/shaf/generator/migration.rb
|
148
163
|
- lib/shaf/generator/migration/add_column.rb
|
149
164
|
- lib/shaf/generator/migration/add_index.rb
|
@@ -167,6 +182,7 @@ files:
|
|
167
182
|
- lib/shaf/generator/templates/spec/serializer_spec.rb.erb
|
168
183
|
- lib/shaf/helpers.rb
|
169
184
|
- lib/shaf/helpers/cache_control.rb
|
185
|
+
- lib/shaf/helpers/http_header.rb
|
170
186
|
- lib/shaf/helpers/json_html.rb
|
171
187
|
- lib/shaf/helpers/paginate.rb
|
172
188
|
- lib/shaf/helpers/payload.rb
|
@@ -177,6 +193,7 @@ files:
|
|
177
193
|
- lib/shaf/rake/db.rb
|
178
194
|
- lib/shaf/rake/test.rb
|
179
195
|
- lib/shaf/registrable_factory.rb
|
196
|
+
- lib/shaf/router.rb
|
180
197
|
- lib/shaf/settings.rb
|
181
198
|
- lib/shaf/spec.rb
|
182
199
|
- lib/shaf/spec/base.rb
|
@@ -210,9 +227,9 @@ files:
|
|
210
227
|
- templates/api/serializers/error_serializer.rb
|
211
228
|
- templates/api/serializers/form_serializer.rb
|
212
229
|
- templates/api/serializers/root_serializer.rb
|
230
|
+
- templates/api/serializers/validation_error_serializer.rb
|
213
231
|
- templates/config.ru
|
214
232
|
- templates/config/bootstrap.rb
|
215
|
-
- templates/config/constants.rb
|
216
233
|
- templates/config/customize.rb
|
217
234
|
- templates/config/database.rb
|
218
235
|
- templates/config/directories.rb
|
@@ -222,6 +239,7 @@ files:
|
|
222
239
|
- templates/config/initializers/hal_presenter.rb
|
223
240
|
- templates/config/initializers/logging.rb
|
224
241
|
- templates/config/initializers/sequel.rb
|
242
|
+
- templates/config/paths.rb
|
225
243
|
- templates/config/settings.yml
|
226
244
|
- templates/frontend/assets/css/main.css
|
227
245
|
- templates/frontend/views/form.erb
|
@@ -233,6 +251,7 @@ files:
|
|
233
251
|
- upgrades/0.4.0.tar.gz
|
234
252
|
- upgrades/0.5.0.tar.gz
|
235
253
|
- upgrades/0.6.0.tar.gz
|
254
|
+
- upgrades/1.0.0.tar.gz
|
236
255
|
homepage: https://github.com/sammyhenningsson/shaf
|
237
256
|
licenses:
|
238
257
|
- MIT
|
@@ -246,7 +265,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
246
265
|
requirements:
|
247
266
|
- - ">="
|
248
267
|
- !ruby/object:Gem::Version
|
249
|
-
version: '2.
|
268
|
+
version: '2.4'
|
250
269
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
251
270
|
requirements:
|
252
271
|
- - ">="
|
metadata.gz.sig
CHANGED
Binary file
|
@@ -1,8 +0,0 @@
|
|
1
|
-
APP_ROOT = File.expand_path('../', __dir__)
|
2
|
-
APP_DIR = File.expand_path('api', APP_ROOT)
|
3
|
-
SRC_DIR = File.expand_path('src', APP_ROOT)
|
4
|
-
LIB_DIR = File.expand_path('lib', APP_ROOT)
|
5
|
-
VIEWS_DIR = File.join(APP_ROOT, Shaf::Settings.views_folder)
|
6
|
-
ASSETS_DIR = File.join(APP_ROOT, Shaf::Settings.public_folder)
|
7
|
-
AUTH_TOKEN_HEADER = 'HTTP_X_AUTH_TOKEN'
|
8
|
-
PAGINATION_PER_PAGE = Shaf::Settings.paginate_per_page || 25
|