shaf 0.4.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
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