shaf 0.1.0.beta

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 (90) hide show
  1. checksums.yaml +7 -0
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +1 -0
  4. data/bin/shaf +57 -0
  5. data/lib/shaf.rb +9 -0
  6. data/lib/shaf/api_doc.rb +124 -0
  7. data/lib/shaf/api_doc/comment.rb +27 -0
  8. data/lib/shaf/api_doc/document.rb +133 -0
  9. data/lib/shaf/app.rb +22 -0
  10. data/lib/shaf/command.rb +42 -0
  11. data/lib/shaf/command/console.rb +17 -0
  12. data/lib/shaf/command/generate.rb +19 -0
  13. data/lib/shaf/command/new.rb +79 -0
  14. data/lib/shaf/command/server.rb +15 -0
  15. data/lib/shaf/command/templates/Gemfile.erb +30 -0
  16. data/lib/shaf/doc_model.rb +54 -0
  17. data/lib/shaf/errors.rb +77 -0
  18. data/lib/shaf/extensions.rb +11 -0
  19. data/lib/shaf/extensions/authorize.rb +42 -0
  20. data/lib/shaf/extensions/resource_uris.rb +153 -0
  21. data/lib/shaf/formable.rb +188 -0
  22. data/lib/shaf/generator.rb +69 -0
  23. data/lib/shaf/generator/controller.rb +106 -0
  24. data/lib/shaf/generator/migration.rb +122 -0
  25. data/lib/shaf/generator/migration/add_column.rb +49 -0
  26. data/lib/shaf/generator/migration/create_table.rb +40 -0
  27. data/lib/shaf/generator/migration/drop_column.rb +45 -0
  28. data/lib/shaf/generator/migration/empty.rb +21 -0
  29. data/lib/shaf/generator/migration/rename_column.rb +48 -0
  30. data/lib/shaf/generator/model.rb +68 -0
  31. data/lib/shaf/generator/policy.rb +43 -0
  32. data/lib/shaf/generator/scaffold.rb +26 -0
  33. data/lib/shaf/generator/serializer.rb +258 -0
  34. data/lib/shaf/generator/templates/api/controller.rb.erb +62 -0
  35. data/lib/shaf/generator/templates/api/model.rb.erb +20 -0
  36. data/lib/shaf/generator/templates/api/policy.rb.erb +26 -0
  37. data/lib/shaf/generator/templates/api/serializer.rb.erb +24 -0
  38. data/lib/shaf/generator/templates/spec/integration_spec.rb.erb +98 -0
  39. data/lib/shaf/generator/templates/spec/model.rb.erb +40 -0
  40. data/lib/shaf/generator/templates/spec/serializer_spec.rb.erb +46 -0
  41. data/lib/shaf/helpers.rb +15 -0
  42. data/lib/shaf/helpers/json_html.rb +65 -0
  43. data/lib/shaf/helpers/paginate.rb +24 -0
  44. data/lib/shaf/helpers/payload.rb +115 -0
  45. data/lib/shaf/helpers/session.rb +53 -0
  46. data/lib/shaf/middleware.rb +1 -0
  47. data/lib/shaf/middleware/request_id.rb +16 -0
  48. data/lib/shaf/registrable_factory.rb +71 -0
  49. data/lib/shaf/settings.rb +33 -0
  50. data/lib/shaf/spec.rb +6 -0
  51. data/lib/shaf/spec/http_method_utils.rb +24 -0
  52. data/lib/shaf/spec/integration_spec.rb +53 -0
  53. data/lib/shaf/spec/model.rb +17 -0
  54. data/lib/shaf/spec/payload_test.rb +78 -0
  55. data/lib/shaf/spec/payload_utils.rb +176 -0
  56. data/lib/shaf/spec/serializer_spec.rb +24 -0
  57. data/lib/shaf/tasks.rb +4 -0
  58. data/lib/shaf/tasks/db.rb +61 -0
  59. data/lib/shaf/tasks/test.rb +43 -0
  60. data/lib/shaf/utils.rb +53 -0
  61. data/lib/shaf/version.rb +3 -0
  62. data/templates/Rakefile +13 -0
  63. data/templates/api/controllers/base_controller.rb +57 -0
  64. data/templates/api/controllers/docs_controller.rb +16 -0
  65. data/templates/api/controllers/root_controller.rb +8 -0
  66. data/templates/api/serializers/error_serializer.rb +10 -0
  67. data/templates/api/serializers/form_serializer.rb +42 -0
  68. data/templates/api/serializers/root_serializer.rb +16 -0
  69. data/templates/config.ru +4 -0
  70. data/templates/config/bootstrap.rb +12 -0
  71. data/templates/config/constants.rb +5 -0
  72. data/templates/config/customize.rb +3 -0
  73. data/templates/config/database.rb +40 -0
  74. data/templates/config/directories.rb +32 -0
  75. data/templates/config/helpers.rb +18 -0
  76. data/templates/config/initializers.rb +12 -0
  77. data/templates/config/initializers/db_migrations.rb +18 -0
  78. data/templates/config/initializers/hal_presenter.rb +6 -0
  79. data/templates/config/initializers/logging.rb +7 -0
  80. data/templates/config/initializers/sequel.rb +4 -0
  81. data/templates/config/settings.yml +19 -0
  82. data/templates/frontend/assets/css/main.css +70 -0
  83. data/templates/frontend/views/form.erb +16 -0
  84. data/templates/frontend/views/layout.erb +11 -0
  85. data/templates/frontend/views/payload.erb +8 -0
  86. data/templates/spec/integration/root_spec.rb +14 -0
  87. data/templates/spec/serializers/root_serializer_spec.rb +12 -0
  88. data/templates/spec/spec_helper.rb +4 -0
  89. metadata +348 -0
  90. metadata.gz.sig +0 -0
@@ -0,0 +1,18 @@
1
+ dir = File.join(APP_DIR, 'helpers')
2
+ if Dir.exist? dir
3
+ Dir.chdir(dir) do
4
+ modules = []
5
+ Dir[File.join('**', '*.rb')].each do |file|
6
+ File.open(file, "r") do |f|
7
+ f.each_line do |line|
8
+ modules << line[%r(\A\s*module\s+(\S+)\s*\Z), 1]
9
+ end
10
+ end
11
+ end
12
+ modules.compact!
13
+ modules.each do |mod|
14
+ $logger&.debug "helper: #{mod}"
15
+ BaseController.send(:class_eval, "helpers #{mod}")
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,12 @@
1
+ if File.exist? 'config/initializers/logging.rb'
2
+ require "config/initializers/logging"
3
+ end
4
+
5
+ Dir.chdir(File.expand_path('initializers', __dir__)) do
6
+ Dir['*.rb'].each do |file|
7
+ lib = File.basename(file, '.rb')
8
+ require "config/initializers/#{lib}" or next
9
+ $logger&.debug "Loading initializer: #{lib}"
10
+ end
11
+ end
12
+
@@ -0,0 +1,18 @@
1
+ require 'sequel'
2
+ require 'config/database'
3
+
4
+ Sequel.extension :migration
5
+ return unless Dir[File.join(MIGRATIONS_DIR, "*")].any?
6
+ return if Sequel::Migrator.is_current?(DB, MIGRATIONS_DIR)
7
+
8
+ environment = ENV['RACK_ENV']
9
+
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
18
+ end
@@ -0,0 +1,6 @@
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
+ HALPresenter.paginate = true
@@ -0,0 +1,7 @@
1
+ require 'logger'
2
+
3
+ log_dir = File.join(APP_ROOT, 'logs')
4
+ Dir.mkdir log_dir unless Dir.exist? log_dir
5
+
6
+ $logger = Logger.new(File.join(log_dir, "#{Sinatra::Application.settings.environment}.log"))
7
+ DB.loggers << $logger
@@ -0,0 +1,4 @@
1
+ require 'config/database'
2
+
3
+ Sequel::Model.plugin :timestamps
4
+ DB.extension(:pagination)
@@ -0,0 +1,19 @@
1
+ ---
2
+ default: &default
3
+ port: 3000
4
+ public_folder: frontend/assets
5
+ views_folder: frontend/views
6
+ documents_dir: doc/api
7
+ migrations_dir: db/migrations
8
+ paginate_per_page: 25
9
+
10
+ production:
11
+ <<: *default
12
+ port: 80
13
+
14
+ development:
15
+ <<: *default
16
+
17
+ test:
18
+ <<: *default
19
+ port: 3000
@@ -0,0 +1,70 @@
1
+ * {
2
+ box-sizing: border-box;
3
+ }
4
+
5
+ html {
6
+ margin: 0;
7
+ height: 100%;
8
+ }
9
+
10
+ body {
11
+ margin: 0;
12
+ height: 100%;
13
+ }
14
+
15
+ ul {
16
+ list-style-type: none;
17
+ }
18
+
19
+ pre {
20
+ margin: 0;
21
+ }
22
+
23
+ .container {
24
+ display: flex;
25
+ flex-direction: row;
26
+ justify-content: space-evenly;
27
+ align-items: center;
28
+ height: 100%;
29
+ }
30
+
31
+ .section {
32
+ width: 50%;
33
+ height: 100%;
34
+ }
35
+
36
+ .hal-form {
37
+ height: auto;
38
+ display: flex;
39
+ flex-direction: column;
40
+ justify-content: space-evenly;
41
+ align-items: center;
42
+ }
43
+
44
+ .hal_form--form {
45
+ }
46
+
47
+ .form--input-group {
48
+ margin: 1em;
49
+ }
50
+
51
+ .form--input {
52
+ display: grid;
53
+ justify-content: space-evenly;
54
+ }
55
+
56
+ .form--label {
57
+ }
58
+
59
+ .hal-payload {
60
+ min-height: 100%;
61
+ height: auto;
62
+ overflow: auto;
63
+ background-color: #b5aeae;
64
+ display: flex;
65
+ flex-direction: row;
66
+ justify-content: flex-start;
67
+ align-items: flex-start;
68
+ padding: 1em;
69
+ }
70
+
@@ -0,0 +1,16 @@
1
+ <% @page_title = form.title || "HAL Form" %>
2
+ <div class="container">
3
+ <section class="section">
4
+ <div class="hal-form">
5
+ <h1><%= form.title %></h1>
6
+ <div class="hal-form--form">
7
+ <%= form.to_html %>
8
+ </div>
9
+ </div>
10
+ </section>
11
+ <section class="section">
12
+ <div class="hal-payload">
13
+ <%= json2html(serialized) %>
14
+ </div>
15
+ </section>
16
+ </div>
@@ -0,0 +1,11 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>Shaba<%= @page_title && " | #{@page_title}" %></title>
6
+ <link rel="stylesheet" type="text/css" href="/css/main.css">
7
+ </head>
8
+ <body>
9
+ <%= yield %>
10
+ </body>
11
+ </html>
@@ -0,0 +1,8 @@
1
+ <% @page_title = "HAL payload" %>
2
+ <div class="container">
3
+ <section class="section">
4
+ <div class="hal-payload">
5
+ <%= json2html(serialized) %>
6
+ </div>
7
+ </section>
8
+ </div>
@@ -0,0 +1,14 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Root", type: :integration do
4
+
5
+ before do
6
+ get root_uri
7
+ status.must_equal 200
8
+ end
9
+
10
+ it "returns links" do
11
+ links.must_include :self
12
+ end
13
+
14
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe RootSerializer do
4
+
5
+ before do
6
+ set_payload RootSerializer.to_hal
7
+ end
8
+
9
+ it "serializes links" do
10
+ links.keys.must_include(:self)
11
+ end
12
+ end
@@ -0,0 +1,4 @@
1
+ ENV['RACK_ENV'] = 'test'
2
+ require 'config/bootstrap'
3
+ require 'minitest/autorun'
4
+ require 'shaf/spec'
metadata ADDED
@@ -0,0 +1,348 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: shaf
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0.beta
5
+ platform: ruby
6
+ authors:
7
+ - Sammy Henningsson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDljCCAn6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBIMRowGAYDVQQDDBFzYW1t
14
+ eS5oZW5uaW5nc3NvbjEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPy
15
+ LGQBGRYDY29tMB4XDTE3MDcwODE0MDUxOVoXDTE4MDcwODE0MDUxOVowSDEaMBgG
16
+ A1UEAwwRc2FtbXkuaGVubmluZ3Nzb24xFTATBgoJkiaJk/IsZAEZFgVnbWFpbDET
17
+ MBEGCgmSJomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
18
+ ggEBAK+SDC1mfyhucJ6Va21rIHUGscEtQrdvyBqxFG1s2TgPMAv4RbqwdJVPa7kj
19
+ tbCzslADlUE1oru2C+rcJsMtVGX02ukMIPHT1OjTyy0/EMqLqSy3WeRI8APyDSxC
20
+ Vbe+h5BMf3zZnYfddR6AeG7ln09T1P/tX+9lTMc+I+DW1fUlQgY48CNUayvtJR61
21
+ svXvXMrhLhi29SQig1qmH6Zoe22/JgH+m2JksPndY5Ep3gqfDc6Imwu2vGvmGErJ
22
+ D63FB0XQ/wb4WVH4l7sHQSTfKDp8SImCt1xqNgIyjw578ZG2geGLoncuxgDrbQ/U
23
+ FIJ11lDZd4vLevMhnIxTSJpPr2cCAwEAAaOBijCBhzAJBgNVHRMEAjAAMAsGA1Ud
24
+ DwQEAwIEsDAdBgNVHQ4EFgQUukjj1Cd2ea6IOHDLZe0ymzs2jWkwJgYDVR0RBB8w
25
+ HYEbc2FtbXkuaGVubmluZ3Nzb25AZ21haWwuY29tMCYGA1UdEgQfMB2BG3NhbW15
26
+ Lmhlbm5pbmdzc29uQGdtYWlsLmNvbTANBgkqhkiG9w0BAQUFAAOCAQEAGBReofO0
27
+ CDGI8uQNn/btde+zQBiCX0mONJMQ6An760MzOHMlWFi6VaVeeKmYj5xCpI2nWaJN
28
+ 49ALW/v7GZ+JIW5YmbzWIuD8YfwHJYCFPoH0llzg3GCFCMxbYqI3nDtHX3dMxpOc
29
+ 01A72okERe0ne/O5Z4Ym/fOECkyXr0fYondhDQcSuqxU22jsXs1ZjISN8IuHmVkA
30
+ GtGteOIqmA05lP+eCXGvyARGLg1GwZDTjnlH5OfpiT1Oy7Dghewi58Gn4/AlZ4bY
31
+ CNZdF8Vavp6xMQbPHZwqjaeZz2WRXYS7jyYSvCunjwa3OtvXtfbIEGEWE6IM+t9k
32
+ H1g6Q+B6qk9O6g==
33
+ -----END CERTIFICATE-----
34
+ date: 2018-03-01 00:00:00.000000000 Z
35
+ dependencies:
36
+ - !ruby/object:Gem::Dependency
37
+ name: rake
38
+ requirement: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '12.0'
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: '10.0'
46
+ type: :development
47
+ prerelease: false
48
+ version_requirements: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - "~>"
51
+ - !ruby/object:Gem::Version
52
+ version: '12.0'
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '10.0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: minitest
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '5.10'
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ version: '5.0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - "~>"
71
+ - !ruby/object:Gem::Version
72
+ version: '5.10'
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '5.0'
76
+ - !ruby/object:Gem::Dependency
77
+ name: hal_presenter
78
+ requirement: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.4.3
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: 0.4.0
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - "~>"
91
+ - !ruby/object:Gem::Version
92
+ version: 0.4.3
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: 0.4.0
96
+ - !ruby/object:Gem::Dependency
97
+ name: sinatra
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: 2.0.1
103
+ - - ">="
104
+ - !ruby/object:Gem::Version
105
+ version: 2.0.0
106
+ type: :development
107
+ prerelease: false
108
+ version_requirements: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - "~>"
111
+ - !ruby/object:Gem::Version
112
+ version: 2.0.1
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: 2.0.0
116
+ - !ruby/object:Gem::Dependency
117
+ name: sequel
118
+ requirement: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - "~>"
121
+ - !ruby/object:Gem::Version
122
+ version: '5.6'
123
+ type: :development
124
+ prerelease: false
125
+ version_requirements: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - "~>"
128
+ - !ruby/object:Gem::Version
129
+ version: '5.6'
130
+ - !ruby/object:Gem::Dependency
131
+ name: sinatra-sequel
132
+ requirement: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - "~>"
135
+ - !ruby/object:Gem::Version
136
+ version: 0.9.0
137
+ type: :development
138
+ prerelease: false
139
+ version_requirements: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - "~>"
142
+ - !ruby/object:Gem::Version
143
+ version: 0.9.0
144
+ - !ruby/object:Gem::Dependency
145
+ name: thin
146
+ requirement: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - "~>"
149
+ - !ruby/object:Gem::Version
150
+ version: '1.7'
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: 1.7.2
154
+ type: :development
155
+ prerelease: false
156
+ version_requirements: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - "~>"
159
+ - !ruby/object:Gem::Version
160
+ version: '1.7'
161
+ - - ">="
162
+ - !ruby/object:Gem::Version
163
+ version: 1.7.2
164
+ - !ruby/object:Gem::Dependency
165
+ name: bcrypt
166
+ requirement: !ruby/object:Gem::Requirement
167
+ requirements:
168
+ - - "~>"
169
+ - !ruby/object:Gem::Version
170
+ version: '3.1'
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: 3.1.11
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '3.1'
181
+ - - ">="
182
+ - !ruby/object:Gem::Version
183
+ version: 3.1.11
184
+ - !ruby/object:Gem::Dependency
185
+ name: redcarpet
186
+ requirement: !ruby/object:Gem::Requirement
187
+ requirements:
188
+ - - "~>"
189
+ - !ruby/object:Gem::Version
190
+ version: '3.4'
191
+ type: :development
192
+ prerelease: false
193
+ version_requirements: !ruby/object:Gem::Requirement
194
+ requirements:
195
+ - - "~>"
196
+ - !ruby/object:Gem::Version
197
+ version: '3.4'
198
+ - !ruby/object:Gem::Dependency
199
+ name: minitest-hooks
200
+ requirement: !ruby/object:Gem::Requirement
201
+ requirements:
202
+ - - "~>"
203
+ - !ruby/object:Gem::Version
204
+ version: '1.4'
205
+ - - ">="
206
+ - !ruby/object:Gem::Version
207
+ version: 1.4.2
208
+ type: :development
209
+ prerelease: false
210
+ version_requirements: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - "~>"
213
+ - !ruby/object:Gem::Version
214
+ version: '1.4'
215
+ - - ">="
216
+ - !ruby/object:Gem::Version
217
+ version: 1.4.2
218
+ - !ruby/object:Gem::Dependency
219
+ name: rack-test
220
+ requirement: !ruby/object:Gem::Requirement
221
+ requirements:
222
+ - - "~>"
223
+ - !ruby/object:Gem::Version
224
+ version: 0.8.3
225
+ type: :development
226
+ prerelease: false
227
+ version_requirements: !ruby/object:Gem::Requirement
228
+ requirements:
229
+ - - "~>"
230
+ - !ruby/object:Gem::Version
231
+ version: 0.8.3
232
+ description: A framework for building hypermedia driven APIs with sinatra and sequel.
233
+ email: sammy.henningsson@gmail.com
234
+ executables:
235
+ - shaf
236
+ extensions: []
237
+ extra_rdoc_files: []
238
+ files:
239
+ - bin/shaf
240
+ - lib/shaf.rb
241
+ - lib/shaf/api_doc.rb
242
+ - lib/shaf/api_doc/comment.rb
243
+ - lib/shaf/api_doc/document.rb
244
+ - lib/shaf/app.rb
245
+ - lib/shaf/command.rb
246
+ - lib/shaf/command/console.rb
247
+ - lib/shaf/command/generate.rb
248
+ - lib/shaf/command/new.rb
249
+ - lib/shaf/command/server.rb
250
+ - lib/shaf/command/templates/Gemfile.erb
251
+ - lib/shaf/doc_model.rb
252
+ - lib/shaf/errors.rb
253
+ - lib/shaf/extensions.rb
254
+ - lib/shaf/extensions/authorize.rb
255
+ - lib/shaf/extensions/resource_uris.rb
256
+ - lib/shaf/formable.rb
257
+ - lib/shaf/generator.rb
258
+ - lib/shaf/generator/controller.rb
259
+ - lib/shaf/generator/migration.rb
260
+ - lib/shaf/generator/migration/add_column.rb
261
+ - lib/shaf/generator/migration/create_table.rb
262
+ - lib/shaf/generator/migration/drop_column.rb
263
+ - lib/shaf/generator/migration/empty.rb
264
+ - lib/shaf/generator/migration/rename_column.rb
265
+ - lib/shaf/generator/model.rb
266
+ - lib/shaf/generator/policy.rb
267
+ - lib/shaf/generator/scaffold.rb
268
+ - lib/shaf/generator/serializer.rb
269
+ - lib/shaf/generator/templates/api/controller.rb.erb
270
+ - lib/shaf/generator/templates/api/model.rb.erb
271
+ - lib/shaf/generator/templates/api/policy.rb.erb
272
+ - lib/shaf/generator/templates/api/serializer.rb.erb
273
+ - lib/shaf/generator/templates/spec/integration_spec.rb.erb
274
+ - lib/shaf/generator/templates/spec/model.rb.erb
275
+ - lib/shaf/generator/templates/spec/serializer_spec.rb.erb
276
+ - lib/shaf/helpers.rb
277
+ - lib/shaf/helpers/json_html.rb
278
+ - lib/shaf/helpers/paginate.rb
279
+ - lib/shaf/helpers/payload.rb
280
+ - lib/shaf/helpers/session.rb
281
+ - lib/shaf/middleware.rb
282
+ - lib/shaf/middleware/request_id.rb
283
+ - lib/shaf/registrable_factory.rb
284
+ - lib/shaf/settings.rb
285
+ - lib/shaf/spec.rb
286
+ - lib/shaf/spec/http_method_utils.rb
287
+ - lib/shaf/spec/integration_spec.rb
288
+ - lib/shaf/spec/model.rb
289
+ - lib/shaf/spec/payload_test.rb
290
+ - lib/shaf/spec/payload_utils.rb
291
+ - lib/shaf/spec/serializer_spec.rb
292
+ - lib/shaf/tasks.rb
293
+ - lib/shaf/tasks/db.rb
294
+ - lib/shaf/tasks/test.rb
295
+ - lib/shaf/utils.rb
296
+ - lib/shaf/version.rb
297
+ - templates/Rakefile
298
+ - templates/api/controllers/base_controller.rb
299
+ - templates/api/controllers/docs_controller.rb
300
+ - templates/api/controllers/root_controller.rb
301
+ - templates/api/serializers/error_serializer.rb
302
+ - templates/api/serializers/form_serializer.rb
303
+ - templates/api/serializers/root_serializer.rb
304
+ - templates/config.ru
305
+ - templates/config/bootstrap.rb
306
+ - templates/config/constants.rb
307
+ - templates/config/customize.rb
308
+ - templates/config/database.rb
309
+ - templates/config/directories.rb
310
+ - templates/config/helpers.rb
311
+ - templates/config/initializers.rb
312
+ - templates/config/initializers/db_migrations.rb
313
+ - templates/config/initializers/hal_presenter.rb
314
+ - templates/config/initializers/logging.rb
315
+ - templates/config/initializers/sequel.rb
316
+ - templates/config/settings.yml
317
+ - templates/frontend/assets/css/main.css
318
+ - templates/frontend/views/form.erb
319
+ - templates/frontend/views/layout.erb
320
+ - templates/frontend/views/payload.erb
321
+ - templates/spec/integration/root_spec.rb
322
+ - templates/spec/serializers/root_serializer_spec.rb
323
+ - templates/spec/spec_helper.rb
324
+ homepage: https://github.com/sammyhenningsson/shaf
325
+ licenses:
326
+ - MIT
327
+ metadata: {}
328
+ post_install_message:
329
+ rdoc_options: []
330
+ require_paths:
331
+ - lib
332
+ required_ruby_version: !ruby/object:Gem::Requirement
333
+ requirements:
334
+ - - ">="
335
+ - !ruby/object:Gem::Version
336
+ version: '0'
337
+ required_rubygems_version: !ruby/object:Gem::Requirement
338
+ requirements:
339
+ - - ">"
340
+ - !ruby/object:Gem::Version
341
+ version: 1.3.1
342
+ requirements: []
343
+ rubyforge_project:
344
+ rubygems_version: 2.7.3
345
+ signing_key:
346
+ specification_version: 4
347
+ summary: Sinatra Hypermedia Api Framework
348
+ test_files: []