hanami 0.8.0 → 0.9.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 (91) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +23 -0
  3. data/FEATURES.md +13 -0
  4. data/README.md +28 -1
  5. data/hanami.gemspec +20 -17
  6. data/lib/hanami.rb +106 -7
  7. data/lib/hanami/action/routing_helpers.rb +2 -2
  8. data/lib/hanami/app.rb +72 -0
  9. data/lib/hanami/application.rb +144 -183
  10. data/lib/hanami/application_configuration.rb +1541 -0
  11. data/lib/hanami/application_name.rb +2 -2
  12. data/lib/hanami/application_namespace.rb +12 -0
  13. data/lib/hanami/assets/asset.rb +3 -1
  14. data/lib/hanami/assets/static.rb +3 -9
  15. data/lib/hanami/cli.rb +10 -7
  16. data/lib/hanami/cli_sub_commands/assets.rb +1 -9
  17. data/lib/hanami/cli_sub_commands/generate.rb +16 -0
  18. data/lib/hanami/commands/apps.rb +4 -0
  19. data/lib/hanami/commands/assets/precompile.rb +6 -19
  20. data/lib/hanami/commands/command.rb +64 -0
  21. data/lib/hanami/commands/console.rb +37 -26
  22. data/lib/hanami/commands/db/apply.rb +4 -2
  23. data/lib/hanami/commands/db/console.rb +11 -27
  24. data/lib/hanami/commands/db/create.rb +4 -2
  25. data/lib/hanami/commands/db/drop.rb +4 -2
  26. data/lib/hanami/commands/db/migrate.rb +11 -5
  27. data/lib/hanami/commands/db/prepare.rb +4 -2
  28. data/lib/hanami/commands/db/version.rb +4 -2
  29. data/lib/hanami/commands/generate/abstract.rb +5 -7
  30. data/lib/hanami/commands/generate/action.rb +18 -6
  31. data/lib/hanami/commands/generate/app.rb +15 -2
  32. data/lib/hanami/commands/generate/migration.rb +3 -2
  33. data/lib/hanami/commands/generate/model.rb +4 -3
  34. data/lib/hanami/commands/generate/secret_token.rb +31 -0
  35. data/lib/hanami/commands/new/abstract.rb +14 -5
  36. data/lib/hanami/commands/new/container.rb +1 -0
  37. data/lib/hanami/commands/routes.rb +5 -22
  38. data/lib/hanami/commands/server.rb +14 -142
  39. data/lib/hanami/components.rb +107 -0
  40. data/lib/hanami/components/app/assets.rb +55 -0
  41. data/lib/hanami/components/app/controller.rb +69 -0
  42. data/lib/hanami/components/app/logger.rb +30 -0
  43. data/lib/hanami/components/app/routes.rb +51 -0
  44. data/lib/hanami/components/app/view.rb +40 -0
  45. data/lib/hanami/components/component.rb +166 -0
  46. data/lib/hanami/components/components.rb +366 -0
  47. data/lib/hanami/components/routes_inspector.rb +70 -0
  48. data/lib/hanami/config/load_paths.rb +7 -6
  49. data/lib/hanami/config/mapper.rb +1 -1
  50. data/lib/hanami/config/security.rb +0 -8
  51. data/lib/hanami/configuration.rb +27 -1697
  52. data/lib/hanami/env.rb +67 -0
  53. data/lib/hanami/environment.rb +31 -21
  54. data/lib/hanami/environment_application_configurations.rb +30 -0
  55. data/lib/hanami/frameworks.rb +1 -0
  56. data/lib/hanami/generators/app/application.rb.tt +2 -2
  57. data/lib/hanami/generators/application/app/Gemfile.tt +3 -1
  58. data/lib/hanami/generators/application/app/config/application.rb.tt +2 -2
  59. data/lib/hanami/generators/application/app/gitignore_with_sqlite.tt +3 -0
  60. data/lib/hanami/generators/application/app/lib/app_name.rb.tt +4 -25
  61. data/lib/hanami/generators/application/app/spec_helper.rb.minitest.tt +1 -1
  62. data/lib/hanami/generators/application/app/spec_helper.rb.rspec.tt +1 -1
  63. data/lib/hanami/generators/application/container/Gemfile.tt +3 -1
  64. data/lib/hanami/generators/application/container/capybara.rb.rspec.tt +1 -1
  65. data/lib/hanami/generators/application/container/config.ru.tt +1 -1
  66. data/lib/hanami/generators/application/container/config/environment.rb.tt +35 -1
  67. data/lib/hanami/generators/application/container/features_helper.rb.minitest.tt +1 -1
  68. data/lib/hanami/generators/application/container/gitignore_with_sqlite.tt +3 -0
  69. data/lib/hanami/generators/application/container/lib/project.rb.tt +1 -57
  70. data/lib/hanami/generators/application/container/spec_helper.rb.minitest.tt +1 -1
  71. data/lib/hanami/generators/application/container/spec_helper.rb.rspec.tt +2 -3
  72. data/lib/hanami/generators/database_config.rb +8 -11
  73. data/lib/hanami/generators/model/entity.rb.tt +1 -2
  74. data/lib/hanami/generators/model/repository.rb.tt +1 -2
  75. data/lib/hanami/generators/template_engine.rb +8 -3
  76. data/lib/hanami/generators/test_framework.rb +4 -3
  77. data/lib/hanami/middleware.rb +41 -21
  78. data/lib/hanami/rake_helper.rb +6 -8
  79. data/lib/hanami/server.rb +43 -33
  80. data/lib/hanami/static.rb +2 -2
  81. data/lib/hanami/version.rb +35 -1
  82. data/lib/hanami/welcome.rb +4 -5
  83. metadata +68 -42
  84. data/lib/hanami/commands/db/abstract.rb +0 -19
  85. data/lib/hanami/config/configure.rb +0 -17
  86. data/lib/hanami/config/mapping.rb +0 -12
  87. data/lib/hanami/container.rb +0 -71
  88. data/lib/hanami/generators/application/container/gitignore_with_db.tt +0 -4
  89. data/lib/hanami/loader.rb +0 -257
  90. data/lib/hanami/repositories/car_repository.rb +0 -3
  91. data/lib/hanami/repositories/name_repository.rb +0 -3
data/lib/hanami/static.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require 'rack/static'
2
2
 
3
3
  module Hanami
4
- # Serve static assets in deployment enviroments (production, staging) where
4
+ # Serve static assets in deployment environments (production, staging) where
5
5
  # the architecture doesn't include a web server.
6
6
  #
7
7
  # Web servers like Nginx are the ideal candidate to serve static assets.
@@ -53,7 +53,7 @@ module Hanami
53
53
  def _urls(root)
54
54
  return [] unless root.exist?
55
55
 
56
- Dir.entries(root).map do |entry|
56
+ Dir.entries(root).sort.map do |entry|
57
57
  next if EXCLUDED_ENTRIES.include?(entry)
58
58
  "#{URL_PREFIX}#{entry}"
59
59
  end.compact
@@ -1,6 +1,40 @@
1
1
  module Hanami
2
+ module Version
3
+ # @since 0.9.0
4
+ # @api private
5
+ VERSION = '0.9.0'.freeze
6
+
7
+ # @since 0.9.0
8
+ # @api private
9
+ def self.version
10
+ VERSION
11
+ end
12
+
13
+ # @since 0.9.0
14
+ # @api private
15
+ def self.gem_requirement
16
+ if prerelease?
17
+ version
18
+ else
19
+ "~> #{major_minor}"
20
+ end
21
+ end
22
+
23
+ # @since 0.9.0
24
+ # @api private
25
+ def self.prerelease?
26
+ version =~ /alpha|beta|rc/
27
+ end
28
+
29
+ # @since 0.9.0
30
+ # @api private
31
+ def self.major_minor
32
+ version.scan(/\A\d{1,2}\.\d{1,2}/).first
33
+ end
34
+ end
35
+
2
36
  # Defines the full version
3
37
  #
4
38
  # @since 0.1.0
5
- VERSION = '0.8.0'.freeze
39
+ VERSION = Version.version
6
40
  end
@@ -27,14 +27,13 @@ module Hanami
27
27
  end
28
28
 
29
29
  def application_class
30
- applications = Hanami::Application.applications.to_a
31
- applications.select do |app|
32
- @request_path.include? app.configuration.path_prefix.to_s
33
- end.first
30
+ Hanami.configuration.apps do |app|
31
+ return app if @request_path.include?(app.path_prefix)
32
+ end
34
33
  end
35
34
 
36
35
  def app
37
- Utils::String.new(application_class).namespace.downcase
36
+ application_class.app_name
38
37
  end
39
38
  end
40
39
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hanami
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luca Guidi
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-07-22 00:00:00.000000000 Z
13
+ date: 2016-11-15 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: hanami-utils
@@ -18,112 +18,126 @@ dependencies:
18
18
  requirements:
19
19
  - - "~>"
20
20
  - !ruby/object:Gem::Version
21
- version: '0.8'
21
+ version: '0.9'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - "~>"
27
27
  - !ruby/object:Gem::Version
28
- version: '0.8'
28
+ version: '0.9'
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: hanami-validations
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
33
  - - "~>"
34
34
  - !ruby/object:Gem::Version
35
- version: '0.6'
35
+ version: '0.7'
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
40
  - - "~>"
41
41
  - !ruby/object:Gem::Version
42
- version: '0.6'
42
+ version: '0.7'
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: hanami-router
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - "~>"
48
48
  - !ruby/object:Gem::Version
49
- version: '0.7'
49
+ version: '0.8'
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
54
  - - "~>"
55
55
  - !ruby/object:Gem::Version
56
- version: '0.7'
56
+ version: '0.8'
57
57
  - !ruby/object:Gem::Dependency
58
58
  name: hanami-controller
59
59
  requirement: !ruby/object:Gem::Requirement
60
60
  requirements:
61
61
  - - "~>"
62
62
  - !ruby/object:Gem::Version
63
- version: '0.7'
63
+ version: '0.8'
64
64
  type: :runtime
65
65
  prerelease: false
66
66
  version_requirements: !ruby/object:Gem::Requirement
67
67
  requirements:
68
68
  - - "~>"
69
69
  - !ruby/object:Gem::Version
70
- version: '0.7'
70
+ version: '0.8'
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: hanami-view
73
73
  requirement: !ruby/object:Gem::Requirement
74
74
  requirements:
75
75
  - - "~>"
76
76
  - !ruby/object:Gem::Version
77
- version: '0.7'
77
+ version: '0.8'
78
78
  type: :runtime
79
79
  prerelease: false
80
80
  version_requirements: !ruby/object:Gem::Requirement
81
81
  requirements:
82
82
  - - "~>"
83
83
  - !ruby/object:Gem::Version
84
- version: '0.7'
84
+ version: '0.8'
85
85
  - !ruby/object:Gem::Dependency
86
86
  name: hanami-helpers
87
87
  requirement: !ruby/object:Gem::Requirement
88
88
  requirements:
89
89
  - - "~>"
90
90
  - !ruby/object:Gem::Version
91
- version: '0.4'
91
+ version: '0.5'
92
92
  type: :runtime
93
93
  prerelease: false
94
94
  version_requirements: !ruby/object:Gem::Requirement
95
95
  requirements:
96
96
  - - "~>"
97
97
  - !ruby/object:Gem::Version
98
- version: '0.4'
98
+ version: '0.5'
99
99
  - !ruby/object:Gem::Dependency
100
100
  name: hanami-mailer
101
101
  requirement: !ruby/object:Gem::Requirement
102
102
  requirements:
103
103
  - - "~>"
104
104
  - !ruby/object:Gem::Version
105
- version: '0.3'
105
+ version: '0.4'
106
106
  type: :runtime
107
107
  prerelease: false
108
108
  version_requirements: !ruby/object:Gem::Requirement
109
109
  requirements:
110
110
  - - "~>"
111
111
  - !ruby/object:Gem::Version
112
- version: '0.3'
112
+ version: '0.4'
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: hanami-assets
115
115
  requirement: !ruby/object:Gem::Requirement
116
116
  requirements:
117
117
  - - "~>"
118
118
  - !ruby/object:Gem::Version
119
- version: '0.3'
119
+ version: '0.4'
120
+ type: :runtime
121
+ prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - "~>"
125
+ - !ruby/object:Gem::Version
126
+ version: '0.4'
127
+ - !ruby/object:Gem::Dependency
128
+ name: concurrent-ruby
129
+ requirement: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - "~>"
132
+ - !ruby/object:Gem::Version
133
+ version: '1.0'
120
134
  type: :runtime
121
135
  prerelease: false
122
136
  version_requirements: !ruby/object:Gem::Requirement
123
137
  requirements:
124
138
  - - "~>"
125
139
  - !ruby/object:Gem::Version
126
- version: '0.3'
140
+ version: '1.0'
127
141
  - !ruby/object:Gem::Dependency
128
142
  name: thor
129
143
  requirement: !ruby/object:Gem::Requirement
@@ -144,70 +158,70 @@ dependencies:
144
158
  requirements:
145
159
  - - "~>"
146
160
  - !ruby/object:Gem::Version
147
- version: '1.6'
161
+ version: '1.13'
148
162
  type: :runtime
149
163
  prerelease: false
150
164
  version_requirements: !ruby/object:Gem::Requirement
151
165
  requirements:
152
166
  - - "~>"
153
167
  - !ruby/object:Gem::Version
154
- version: '1.6'
168
+ version: '1.13'
155
169
  - !ruby/object:Gem::Dependency
156
- name: minispec-metadata
170
+ name: rspec
157
171
  requirement: !ruby/object:Gem::Requirement
158
172
  requirements:
159
173
  - - "~>"
160
174
  - !ruby/object:Gem::Version
161
- version: 3.2.1
175
+ version: '3.5'
162
176
  type: :development
163
177
  prerelease: false
164
178
  version_requirements: !ruby/object:Gem::Requirement
165
179
  requirements:
166
180
  - - "~>"
167
181
  - !ruby/object:Gem::Version
168
- version: 3.2.1
182
+ version: '3.5'
169
183
  - !ruby/object:Gem::Dependency
170
- name: minitest
184
+ name: rack-test
171
185
  requirement: !ruby/object:Gem::Requirement
172
186
  requirements:
173
187
  - - "~>"
174
188
  - !ruby/object:Gem::Version
175
- version: '5'
189
+ version: '0.6'
176
190
  type: :development
177
191
  prerelease: false
178
192
  version_requirements: !ruby/object:Gem::Requirement
179
193
  requirements:
180
194
  - - "~>"
181
195
  - !ruby/object:Gem::Version
182
- version: '5'
196
+ version: '0.6'
183
197
  - !ruby/object:Gem::Dependency
184
- name: rack-test
198
+ name: aruba
185
199
  requirement: !ruby/object:Gem::Requirement
186
200
  requirements:
187
201
  - - "~>"
188
202
  - !ruby/object:Gem::Version
189
- version: '0.6'
203
+ version: '0.14'
190
204
  type: :development
191
205
  prerelease: false
192
206
  version_requirements: !ruby/object:Gem::Requirement
193
207
  requirements:
194
208
  - - "~>"
195
209
  - !ruby/object:Gem::Version
196
- version: '0.6'
210
+ version: '0.14'
197
211
  - !ruby/object:Gem::Dependency
198
212
  name: rake
199
213
  requirement: !ruby/object:Gem::Requirement
200
214
  requirements:
201
215
  - - "~>"
202
216
  - !ruby/object:Gem::Version
203
- version: '10'
217
+ version: '11.3'
204
218
  type: :development
205
219
  prerelease: false
206
220
  version_requirements: !ruby/object:Gem::Requirement
207
221
  requirements:
208
222
  - - "~>"
209
223
  - !ruby/object:Gem::Version
210
- version: '10'
224
+ version: '11.3'
211
225
  description: Hanami is a web framework for Ruby
212
226
  email:
213
227
  - me@lucaguidi.com
@@ -227,8 +241,11 @@ files:
227
241
  - lib/hanami.rb
228
242
  - lib/hanami/action/csrf_protection.rb
229
243
  - lib/hanami/action/routing_helpers.rb
244
+ - lib/hanami/app.rb
230
245
  - lib/hanami/application.rb
246
+ - lib/hanami/application_configuration.rb
231
247
  - lib/hanami/application_name.rb
248
+ - lib/hanami/application_namespace.rb
232
249
  - lib/hanami/assets/asset.rb
233
250
  - lib/hanami/assets/static.rb
234
251
  - lib/hanami/cli.rb
@@ -237,9 +254,10 @@ files:
237
254
  - lib/hanami/cli_sub_commands/db.rb
238
255
  - lib/hanami/cli_sub_commands/destroy.rb
239
256
  - lib/hanami/cli_sub_commands/generate.rb
257
+ - lib/hanami/commands/apps.rb
240
258
  - lib/hanami/commands/assets/precompile.rb
259
+ - lib/hanami/commands/command.rb
241
260
  - lib/hanami/commands/console.rb
242
- - lib/hanami/commands/db/abstract.rb
243
261
  - lib/hanami/commands/db/apply.rb
244
262
  - lib/hanami/commands/db/console.rb
245
263
  - lib/hanami/commands/db/create.rb
@@ -253,24 +271,33 @@ files:
253
271
  - lib/hanami/commands/generate/mailer.rb
254
272
  - lib/hanami/commands/generate/migration.rb
255
273
  - lib/hanami/commands/generate/model.rb
274
+ - lib/hanami/commands/generate/secret_token.rb
256
275
  - lib/hanami/commands/new/abstract.rb
257
276
  - lib/hanami/commands/new/app.rb
258
277
  - lib/hanami/commands/new/container.rb
259
278
  - lib/hanami/commands/routes.rb
260
279
  - lib/hanami/commands/server.rb
261
- - lib/hanami/config/configure.rb
280
+ - lib/hanami/components.rb
281
+ - lib/hanami/components/app/assets.rb
282
+ - lib/hanami/components/app/controller.rb
283
+ - lib/hanami/components/app/logger.rb
284
+ - lib/hanami/components/app/routes.rb
285
+ - lib/hanami/components/app/view.rb
286
+ - lib/hanami/components/component.rb
287
+ - lib/hanami/components/components.rb
288
+ - lib/hanami/components/routes_inspector.rb
262
289
  - lib/hanami/config/cookies.rb
263
290
  - lib/hanami/config/framework_configuration.rb
264
291
  - lib/hanami/config/load_paths.rb
265
292
  - lib/hanami/config/logger.rb
266
293
  - lib/hanami/config/mapper.rb
267
- - lib/hanami/config/mapping.rb
268
294
  - lib/hanami/config/routes.rb
269
295
  - lib/hanami/config/security.rb
270
296
  - lib/hanami/config/sessions.rb
271
297
  - lib/hanami/configuration.rb
272
- - lib/hanami/container.rb
298
+ - lib/hanami/env.rb
273
299
  - lib/hanami/environment.rb
300
+ - lib/hanami/environment_application_configurations.rb
274
301
  - lib/hanami/frameworks.rb
275
302
  - lib/hanami/generators/action/action.rb.tt
276
303
  - lib/hanami/generators/action/action_spec.minitest.tt
@@ -309,6 +336,7 @@ files:
309
336
  - lib/hanami/generators/application/app/features_helper.rb.rspec.tt
310
337
  - lib/hanami/generators/application/app/gitignore.tt
311
338
  - lib/hanami/generators/application/app/gitignore_with_db.tt
339
+ - lib/hanami/generators/application/app/gitignore_with_sqlite.tt
312
340
  - lib/hanami/generators/application/app/hanamirc.tt
313
341
  - lib/hanami/generators/application/app/lib/app_name.rb.tt
314
342
  - lib/hanami/generators/application/app/lib/chirp/entities/.gitkeep
@@ -336,7 +364,7 @@ files:
336
364
  - lib/hanami/generators/application/container/features_helper.rb.minitest.tt
337
365
  - lib/hanami/generators/application/container/features_helper.rb.rspec.tt
338
366
  - lib/hanami/generators/application/container/gitignore.tt
339
- - lib/hanami/generators/application/container/gitignore_with_db.tt
367
+ - lib/hanami/generators/application/container/gitignore_with_sqlite.tt
340
368
  - lib/hanami/generators/application/container/hanamirc.tt
341
369
  - lib/hanami/generators/application/container/lib/chirp/entities/.gitkeep
342
370
  - lib/hanami/generators/application/container/lib/chirp/mailers/.gitkeep
@@ -364,14 +392,11 @@ files:
364
392
  - lib/hanami/generators/template_engine.rb
365
393
  - lib/hanami/generators/test_framework.rb
366
394
  - lib/hanami/hanamirc.rb
367
- - lib/hanami/loader.rb
368
395
  - lib/hanami/mailer/glue.rb
369
396
  - lib/hanami/middleware.rb
370
397
  - lib/hanami/rake_helper.rb
371
398
  - lib/hanami/rake_tasks.rb
372
399
  - lib/hanami/rendering_policy.rb
373
- - lib/hanami/repositories/car_repository.rb
374
- - lib/hanami/repositories/name_repository.rb
375
400
  - lib/hanami/root.rb
376
401
  - lib/hanami/routes.rb
377
402
  - lib/hanami/routing/default.rb
@@ -388,7 +413,8 @@ files:
388
413
  homepage: http://hanamirb.org
389
414
  licenses:
390
415
  - MIT
391
- metadata: {}
416
+ metadata:
417
+ allowed_push_host: https://rubygems.org
392
418
  post_install_message:
393
419
  rdoc_options: []
394
420
  require_paths:
@@ -397,7 +423,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
397
423
  requirements:
398
424
  - - ">="
399
425
  - !ruby/object:Gem::Version
400
- version: 2.2.0
426
+ version: 2.3.0
401
427
  required_rubygems_version: !ruby/object:Gem::Requirement
402
428
  requirements:
403
429
  - - ">="
@@ -408,5 +434,5 @@ rubyforge_project:
408
434
  rubygems_version: 2.6.4
409
435
  signing_key:
410
436
  specification_version: 4
411
- summary: The web, with simplicity.
437
+ summary: The web, with simplicity
412
438
  test_files: []
@@ -1,19 +0,0 @@
1
- module Hanami
2
- module Commands
3
- class DB
4
- class Abstract
5
- attr_reader :environment
6
-
7
- def initialize(options)
8
- @options = options
9
- @environment = Hanami::Environment.new(options)
10
- @environment.require_application_environment
11
- end
12
-
13
- def start
14
- raise NotImplementedError
15
- end
16
- end
17
- end
18
- end
19
- end