shaf 0.4.1 → 0.5.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.
Files changed (36) hide show
  1. checksums.yaml +5 -5
  2. checksums.yaml.gz.sig +0 -0
  3. data/lib/shaf/command/base.rb +51 -0
  4. data/lib/shaf/command/templates/Gemfile.erb +0 -1
  5. data/lib/shaf/command.rb +1 -47
  6. data/lib/shaf/extensions/resource_uris.rb +113 -151
  7. data/lib/shaf/generator/base.rb +61 -0
  8. data/lib/shaf/generator/migration/base.rb +133 -0
  9. data/lib/shaf/generator/migration/create_table.rb +4 -4
  10. data/lib/shaf/generator/migration.rb +1 -111
  11. data/lib/shaf/generator/serializer.rb +3 -51
  12. data/lib/shaf/generator/templates/api/controller.rb.erb +2 -0
  13. data/lib/shaf/generator/templates/api/policy.rb.erb +3 -2
  14. data/lib/shaf/generator/templates/api/serializer.rb.erb +2 -6
  15. data/lib/shaf/generator/templates/spec/integration_spec.rb.erb +30 -30
  16. data/lib/shaf/generator.rb +1 -57
  17. data/lib/shaf/helpers/cache_control.rb +21 -0
  18. data/lib/shaf/helpers.rb +4 -2
  19. data/lib/shaf/rake/db.rb +1 -1
  20. data/lib/shaf/upgrade/manifest.rb +29 -8
  21. data/lib/shaf/upgrade/package.rb +51 -27
  22. data/lib/shaf/version.rb +1 -1
  23. data/templates/api/controllers/docs_controller.rb +2 -0
  24. data/templates/api/controllers/root_controller.rb +2 -3
  25. data/templates/api/policies/base_policy.rb +3 -0
  26. data/templates/api/serializers/base_serializer.rb +4 -0
  27. data/templates/api/serializers/error_serializer.rb +3 -2
  28. data/templates/api/serializers/form_serializer.rb +2 -2
  29. data/templates/api/serializers/root_serializer.rb +3 -3
  30. data/templates/config/initializers/db_migrations.rb +24 -11
  31. data/templates/config/initializers/hal_presenter.rb +0 -5
  32. data/templates/config/settings.yml +8 -3
  33. data/upgrades/0.5.0.tar.gz +0 -0
  34. data.tar.gz.sig +0 -0
  35. metadata +69 -6
  36. metadata.gz.sig +0 -0
@@ -4,10 +4,12 @@ class DocsController < BaseController
4
4
  register_uri :documentation, '/doc/:resource'
5
5
 
6
6
  get doc_curie_uri_template do
7
+ cache_control(:private, http_cache_max_age: :long)
7
8
  doc.link(params[:rel])
8
9
  end
9
10
 
10
11
  get documentation_uri_template do
12
+ cache_control(:private, http_cache_max_age: :long)
11
13
  doc.to_s
12
14
  end
13
15
 
@@ -1,10 +1,9 @@
1
1
  class RootController < BaseController
2
2
 
3
- HTTP_CACHE_MAX_AGE = 86400 # 60 * 60 * 24 = 1 day
4
3
  register_uri :root, '/'
5
4
 
6
- get root_uri do
7
- cache_control(:private, max_age: HTTP_CACHE_MAX_AGE) if Shaf::Settings.http_cache
5
+ get :root_uri do
6
+ cache_control(:private, http_cache_max_age: :long)
8
7
  respond_with nil, serializer: RootSerializer
9
8
  end
10
9
  end
@@ -0,0 +1,3 @@
1
+ class BasePolicy
2
+ include HALPresenter::Policy::DSL
3
+ end
@@ -0,0 +1,4 @@
1
+ class BaseSerializer
2
+ extend HALPresenter
3
+ extend Shaf::UriHelper
4
+ end
@@ -1,5 +1,6 @@
1
- class ErrorSerializer
2
- extend HALPresenter
1
+ require 'serializers/base_serializer'
2
+
3
+ class ErrorSerializer < BaseSerializer
3
4
 
4
5
  model Shaf::Errors::ServerError
5
6
 
@@ -1,7 +1,7 @@
1
+ require 'serializers/base_serializer'
1
2
  require 'shaf/formable'
2
3
 
3
- class FormSerializer
4
- extend HALPresenter
4
+ class FormSerializer < BaseSerializer
5
5
 
6
6
  model Shaf::Formable::Form
7
7
 
@@ -1,6 +1,6 @@
1
- class RootSerializer
2
- extend HALPresenter
3
- extend Shaf::UriHelper
1
+ require 'serializers/base_serializer'
2
+
3
+ class RootSerializer < BaseSerializer
4
4
 
5
5
  # Auto generated doc:
6
6
  # Link to the root resource. All clients should fetch this resource
@@ -2,17 +2,30 @@ require 'sequel'
2
2
  require 'config/database'
3
3
 
4
4
  Sequel.extension :migration
5
- return unless Dir[File.join(MIGRATIONS_DIR, "*")].any?
6
- return if Sequel::Migrator.is_current?(DB, MIGRATIONS_DIR)
5
+ Dir[File.join(MIGRATIONS_DIR, "*")]
7
6
 
8
- environment = ENV['RACK_ENV']
7
+ def is_current?
8
+ return true unless Dir[File.join(MIGRATIONS_DIR, "*")].any?
9
+ Sequel::Migrator.is_current?(DB, MIGRATIONS_DIR)
10
+ end
11
+
12
+ def environment
13
+ ENV['RACK_ENV']
14
+ end
9
15
 
10
- if environment == 'test'
11
- $logger.info "Running migrations in 'test' environment.."
12
- Sequel::Migrator.run(DB, "#{APP_ROOT}/db/migrations")
13
- else
14
- msg = "Database for environment '#{environment}' is not " \
15
- "updated to the latest migration"
16
- STDERR.puts msg
17
- $logger&.warn msg
16
+ def init
17
+ return if is_current?
18
+
19
+ if environment == 'test'
20
+ $logger.info "Running migrations in 'test' environment.."
21
+ Sequel::Migrator.run(DB, "#{APP_ROOT}/db/migrations")
22
+ else
23
+ msg = "Database for environment '#{environment}' is not " \
24
+ "updated to the latest migration"
25
+ STDERR.puts msg
26
+ $logger&.warn msg
27
+ end
18
28
  end
29
+
30
+ init
31
+
@@ -1,6 +1 @@
1
- if Sinatra::Application.settings.environment == :development
2
- port = Shaf::Settings.port ? ":#{Shaf::Settings.port}" : ""
3
- HALPresenter.base_href = "http://localhost#{port}"
4
- end
5
-
6
1
  HALPresenter.paginate = true
@@ -1,6 +1,5 @@
1
1
  ---
2
2
  default: &default
3
- port: 3000
4
3
  public_folder: frontend/assets
5
4
  views_folder: frontend/views
6
5
  documents_dir: doc/api
@@ -8,14 +7,20 @@ default: &default
8
7
  fixtures_dir: spec/fixtures
9
8
  paginate_per_page: 25
10
9
  http_cache: on
10
+ http_cache_max_age_long: 86400 # 60 * 60 * 24 = 1 day
11
+ http_cache_max_age_short: 3600 # 60 * 60 = 1 hour
12
+ hostname: localhost
13
+ protocol: http
14
+ port: 3000
11
15
 
12
16
  production:
13
17
  <<: *default
14
- port: 80
18
+ port: 443
19
+ protocol: https
15
20
 
16
21
  development:
17
22
  <<: *default
18
23
 
19
24
  test:
20
25
  <<: *default
21
- port: 3000
26
+ port: 3030
Binary file
data.tar.gz.sig CHANGED
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.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sammy Henningsson
@@ -30,7 +30,7 @@ cert_chain:
30
30
  ZMhjYR7sRczGJx+GxGU2EaR0bjRsPVlC4ywtFxoOfRG3WaJcpWGEoAoMJX6Z0bRv
31
31
  M40=
32
32
  -----END CERTIFICATE-----
33
- date: 2018-07-22 00:00:00.000000000 Z
33
+ date: 2018-08-25 00:00:00.000000000 Z
34
34
  dependencies:
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: rake
@@ -39,19 +39,75 @@ dependencies:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
41
  version: '12.0'
42
+ type: :development
43
+ prerelease: false
44
+ version_requirements: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '12.0'
49
+ - !ruby/object:Gem::Dependency
50
+ name: sinatra
51
+ requirement: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '2.0'
56
+ type: :development
57
+ prerelease: false
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '2.0'
63
+ - !ruby/object:Gem::Dependency
64
+ name: sequel
65
+ requirement: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '5'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '5'
77
+ - !ruby/object:Gem::Dependency
78
+ name: minitest
79
+ requirement: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '5'
42
84
  - - ">="
43
85
  - !ruby/object:Gem::Version
44
- version: '10.0'
86
+ version: '5.10'
45
87
  type: :development
46
88
  prerelease: false
47
89
  version_requirements: !ruby/object:Gem::Requirement
48
90
  requirements:
49
91
  - - "~>"
50
92
  - !ruby/object:Gem::Version
51
- version: '12.0'
93
+ version: '5'
52
94
  - - ">="
53
95
  - !ruby/object:Gem::Version
54
- version: '10.0'
96
+ version: '5.10'
97
+ - !ruby/object:Gem::Dependency
98
+ name: sqlite3
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.3'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1.3'
55
111
  description: A framework for building hypermedia driven APIs with sinatra and sequel.
56
112
  email: sammy.henningsson@gmail.com
57
113
  executables:
@@ -65,6 +121,7 @@ files:
65
121
  - lib/shaf/api_doc/document.rb
66
122
  - lib/shaf/app.rb
67
123
  - lib/shaf/command.rb
124
+ - lib/shaf/command/base.rb
68
125
  - lib/shaf/command/console.rb
69
126
  - lib/shaf/command/generate.rb
70
127
  - lib/shaf/command/new.rb
@@ -81,10 +138,12 @@ files:
81
138
  - lib/shaf/extensions/symbolic_routes.rb
82
139
  - lib/shaf/formable.rb
83
140
  - lib/shaf/generator.rb
141
+ - lib/shaf/generator/base.rb
84
142
  - lib/shaf/generator/controller.rb
85
143
  - lib/shaf/generator/migration.rb
86
144
  - lib/shaf/generator/migration/add_column.rb
87
145
  - lib/shaf/generator/migration/add_index.rb
146
+ - lib/shaf/generator/migration/base.rb
88
147
  - lib/shaf/generator/migration/create_table.rb
89
148
  - lib/shaf/generator/migration/drop_column.rb
90
149
  - lib/shaf/generator/migration/empty.rb
@@ -101,6 +160,7 @@ files:
101
160
  - lib/shaf/generator/templates/spec/model.rb.erb
102
161
  - lib/shaf/generator/templates/spec/serializer_spec.rb.erb
103
162
  - lib/shaf/helpers.rb
163
+ - lib/shaf/helpers/cache_control.rb
104
164
  - lib/shaf/helpers/json_html.rb
105
165
  - lib/shaf/helpers/paginate.rb
106
166
  - lib/shaf/helpers/payload.rb
@@ -135,6 +195,8 @@ files:
135
195
  - templates/api/controllers/base_controller.rb
136
196
  - templates/api/controllers/docs_controller.rb
137
197
  - templates/api/controllers/root_controller.rb
198
+ - templates/api/policies/base_policy.rb
199
+ - templates/api/serializers/base_serializer.rb
138
200
  - templates/api/serializers/error_serializer.rb
139
201
  - templates/api/serializers/form_serializer.rb
140
202
  - templates/api/serializers/root_serializer.rb
@@ -159,6 +221,7 @@ files:
159
221
  - templates/spec/serializers/root_serializer_spec.rb
160
222
  - templates/spec/spec_helper.rb
161
223
  - upgrades/0.4.0.tar.gz
224
+ - upgrades/0.5.0.tar.gz
162
225
  homepage: https://github.com/sammyhenningsson/shaf
163
226
  licenses:
164
227
  - MIT
@@ -180,7 +243,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
180
243
  version: '0'
181
244
  requirements: []
182
245
  rubyforge_project:
183
- rubygems_version: 2.6.14
246
+ rubygems_version: 2.7.6
184
247
  signing_key:
185
248
  specification_version: 4
186
249
  summary: Sinatra Hypermedia Api Framework
metadata.gz.sig CHANGED
Binary file