hanami 0.8.0 → 0.9.0

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