hanami 1.0.0.beta3 → 1.0.0.rc1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 35905305b2c9f5a20e639bf4de5ffc10c439732f
4
- data.tar.gz: 86d99d157ea672bdddf8ecc338fe16abf833a099
3
+ metadata.gz: d641c75bc2d3fa71ec69ce912640eaf9fcbfe2ec
4
+ data.tar.gz: f10e7e393b8b5009053ee3dbd9fdd28ebf1f4bb1
5
5
  SHA512:
6
- metadata.gz: 55642dce6b8a8548a92592f843573488f9da21c6d099ab27f29b667c9249a5c0f7ed4ff584447b7ddd10cdedbbc3a92da34e349c6107979bcd80fa6eded53e76
7
- data.tar.gz: c6ef7285048eb156ebf594bf632d51ac3b1149f49c1ec8869eebce0feb215b87c5cfb7145b005004ba290766a1e2a8e28c7e37eb5dd279b8fcb4ef063f1bc822
6
+ metadata.gz: d7638c870f8b6262d1a811c3f9f276f11520e5e7ea6e977baada76a4f47aa46a0da46ad73acf8f4d965a851e7e255dcafaa7f9d6600a0b88dd9bf495fd3af64a
7
+ data.tar.gz: 51671a8629073a6fcdaa7952f4b180ef9d90b5e75feeb79d66872742b7570f96a4aa8f4deb9ffffde1ae33c2deb2a100efe1d3fbdabf6b7cbb2330c55e2fc67c
@@ -1,6 +1,16 @@
1
1
  # Hanami
2
2
  The web, with simplicity.
3
3
 
4
+ ## v1.0.0.rc1 - 2017-03-31
5
+ ### Added
6
+ - [Luca Guidi] Allow `logger` setting in `config/environment.rb` to accept arbitrary arguments to make `Hanami::Logger` to be compatible with Ruby's `Logger`. (eg. `logger 'daily', level: :info`)
7
+
8
+ ### Fixed
9
+ - [Luca Guidi] Ensure code reloading don't misconfigure mailer settings (regression from v1.0.0.beta3)
10
+ - [Luca Guidi] Ensure database disconnection to happen in the same thread of `Hanami.boot`
11
+ - [Luca Guidi] Ensure `mailer` block in `config/environment.rb` to be evaluated multiple times, according to the current Hanami environment
12
+ - [Luca Guidi] Ensure a Hanami project to require only once the code under `lib/`
13
+
4
14
  ## v1.0.0.beta3 - 2017-03-17
5
15
  ### Fixed
6
16
  - [Luca Guidi] Try to disconnect from database at the boot time. This is useful to prune stale connection during production deploys.
@@ -3,21 +3,27 @@
3
3
 
4
4
  ## Features
5
5
 
6
- ## v1.0.0.beta3 - 2017-03-17
6
+ ### v1.0.0.rc1 - 2017-03-31
7
+
8
+ - Logger rotation
9
+
10
+ ### v1.0.0.beta3 - 2017-03-17
11
+
12
+ ### v1.0.0.beta2 - 2017-03-02
7
13
 
8
- ## v1.0.0.beta2 - 2017-03-02
9
14
  - Added: `Action#unsafe_send_file` to send files outside of the public directory
10
15
 
11
- ## v1.0.0.beta1 - 2017-02-14
16
+ ### v1.0.0.beta1 - 2017-02-14
17
+
12
18
  - CLI: `hanami generate model` now also generates a migration
13
19
  - Project logger `Hanami.logger`
14
20
  - Automatic logging of HTTP requests, migrations, and SQL queries
15
21
 
16
- ## v0.9.2 - 2016-12-19
22
+ ### v0.9.2 - 2016-12-19
17
23
 
18
- ## v0.9.1 - 2016-11-18
24
+ ### v0.9.1 - 2016-11-18
19
25
 
20
- ## v0.9.0 - 2016-11-15
26
+ ### v0.9.0 - 2016-11-15
21
27
 
22
28
  - Experimental repositories associations (only "has many")
23
29
  - Database automapping for SQL databases
@@ -30,7 +36,7 @@
30
36
  - Native support for PostgreSQL types
31
37
  - CLI: `hanami secret` to generate and print a new session secret for a single Hanami app
32
38
 
33
- ## v0.8.0 - 2016-07-22
39
+ ### v0.8.0 - 2016-07-22
34
40
 
35
41
  - New validation syntax based on predicates
36
42
  - Custom and shared predicates for validations
@@ -49,19 +55,19 @@
49
55
  - Experimental code reloading via `entr(1)`
50
56
  - CLI: `hanami new` can be used with `--template` argument to generate a new project with (`erb`/`haml`/`slim`) templates
51
57
 
52
- ## v0.7.3 - 2016-05-23
58
+ ### v0.7.3 - 2016-05-23
53
59
 
54
- ## v0.7.2 - 2016-02-09
60
+ ### v0.7.2 - 2016-02-09
55
61
 
56
- ## v0.7.1 - 2016-02-05
62
+ ### v0.7.1 - 2016-02-05
57
63
 
58
- ## v0.7.0 - 2016-01-22
64
+ ### v0.7.0 - 2016-01-22
59
65
 
60
66
  - Renamed from Lotus to Hanami
61
67
 
62
- ## v0.6.1 - 2016-01-19
68
+ ### v0.6.1 - 2016-01-19
63
69
 
64
- ## v0.6.0 - 2016-01-12
70
+ ### v0.6.0 - 2016-01-12
65
71
 
66
72
  - Assets preprocessors support (eg. Sass, ES6, Opal, Less, CoffeScript..)
67
73
  - Assets compressors (eg. YUI, UglifyJS2, Google Closure Compiler, Sass..)
@@ -82,16 +88,16 @@
82
88
  - Custom initializers (`apps/web/config/initializers`)
83
89
  - Rake tasks `:preload` and `:environment`
84
90
 
85
- ## v0.5.0 - 2015-09-30
91
+ ### v0.5.0 - 2015-09-30
86
92
 
87
93
  - Mailers
88
94
  - CLI: `lotus generate mailer`
89
95
  - SQL joins
90
96
  - Custom coercers for data mapper
91
97
 
92
- ## v0.4.1 - 2015-07-10
98
+ ### v0.4.1 - 2015-07-10
93
99
 
94
- ## v0.4.0 - 2015-06-23
100
+ ### v0.4.0 - 2015-06-23
95
101
 
96
102
  - Application architecture
97
103
  - Database migrations
@@ -101,14 +107,14 @@
101
107
  - Force SSL
102
108
  - Number formatting helper
103
109
 
104
- ## v0.3.2 - 2015-05-22
110
+ ### v0.3.2 - 2015-05-22
105
111
 
106
112
  - Automatic secure cookies
107
113
  - Routing helpers for actions
108
114
  - Send files from actions
109
115
  - `Lotus.root` returns top level directory of the project.
110
116
 
111
- ## v0.3.1 - 2015-05-15
117
+ ### v0.3.1 - 2015-05-15
112
118
 
113
119
  - CLI: `lotus generate app admin` creates a new application (`apps/admin`).
114
120
  - CLI: `lotus generate model user`. It generates entity, repository and related unit test files.
@@ -119,7 +125,7 @@
119
125
  - Nested RESTful resource(s)
120
126
  - String pluralization and singularization
121
127
 
122
- ## v0.3.0 - 2015-03-23
128
+ ### v0.3.0 - 2015-03-23
123
129
 
124
130
  - CLI: `lotus generate action web dashboard#index`. It generates an action, a view, a template, a route and related unit test files.
125
131
  - CLI: `lotus db console`. It starts a database REPL.
@@ -138,14 +144,14 @@
138
144
  - Interactors (aka Service Objects)
139
145
  - Database transactions
140
146
 
141
- ## v0.2.1 - 2015-02-06
147
+ ### v0.2.1 - 2015-02-06
142
148
 
143
149
  - Allow entities to include validations.
144
150
  - `lotus new .` to generate a Lotus project for an existing code base (Eg. a gem that needs a web UI).
145
151
  - `lotus new` supports `--path` (for destination directory), `--test` (to generate Minitest or RSpec boilerplate).
146
152
  - Lotus logger
147
153
 
148
- ## v0.2.0 - 2014-12-23
154
+ ### v0.2.0 - 2014-12-23
149
155
 
150
156
  - Support Minitest as default testing framework (`bundle exec rake` runs the entire test suite of an application).
151
157
  - Support for _Method Override_ technique.
@@ -171,7 +177,7 @@
171
177
  - JSON body parser for non-GET HTTP requests
172
178
  - Routes inspector for CLI
173
179
 
174
- ## v0.1.0 - 2014-06-23
180
+ ### v0.1.0 - 2014-06-23
175
181
 
176
182
  - Run multiple Lotus applications in the same Ruby process
177
183
  - Serve static files
@@ -6,8 +6,8 @@ require 'hanami/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = 'hanami'
8
8
  spec.version = Hanami::VERSION
9
- spec.authors = ['Luca Guidi', 'Trung Lê', 'Alfonso Uceda Pompa']
10
- spec.email = ['me@lucaguidi.com', 'trung.le@ruby-journal.com', 'uceda73@gmail.com']
9
+ spec.authors = ['Luca Guidi']
10
+ spec.email = ['me@lucaguidi.com']
11
11
  spec.summary = 'The web, with simplicity'
12
12
  spec.description = 'Hanami is a web framework for Ruby'
13
13
  spec.homepage = 'http://hanamirb.org'
@@ -21,14 +21,14 @@ Gem::Specification.new do |spec|
21
21
 
22
22
  spec.metadata['allowed_push_host'] = 'https://rubygems.org'
23
23
 
24
- spec.add_dependency 'hanami-utils', '~> 1.0.0.beta3'
25
- spec.add_dependency 'hanami-validations', '~> 1.0.0.beta2'
26
- spec.add_dependency 'hanami-router', '~> 1.0.0.beta3'
27
- spec.add_dependency 'hanami-controller', '~> 1.0.0.beta3'
28
- spec.add_dependency 'hanami-view', '~> 1.0.0.beta2'
29
- spec.add_dependency 'hanami-helpers', '~> 1.0.0.beta2'
30
- spec.add_dependency 'hanami-mailer', '~> 1.0.0.beta2'
31
- spec.add_dependency 'hanami-assets', '~> 1.0.0.beta2'
24
+ spec.add_dependency 'hanami-utils', '~> 1.0.0.rc1'
25
+ spec.add_dependency 'hanami-validations', '~> 1.0.0.rc1'
26
+ spec.add_dependency 'hanami-router', '~> 1.0.0.rc1'
27
+ spec.add_dependency 'hanami-controller', '~> 1.0.0.rc1'
28
+ spec.add_dependency 'hanami-view', '~> 1.0.0.rc1'
29
+ spec.add_dependency 'hanami-helpers', '~> 1.0.0.rc1'
30
+ spec.add_dependency 'hanami-mailer', '~> 1.0.0.rc1'
31
+ spec.add_dependency 'hanami-assets', '~> 1.0.0.rc1'
32
32
  spec.add_dependency 'concurrent-ruby', '~> 1.0'
33
33
  spec.add_dependency 'thor', '~> 0.19'
34
34
  spec.add_dependency 'bundler', '~> 1.13'
@@ -88,6 +88,7 @@ module Hanami
88
88
  def self.boot
89
89
  Components.release if code_reloading?
90
90
  Components.resolve('all')
91
+ Hanami::Model.disconnect if defined?(Hanami::Model)
91
92
  end
92
93
 
93
94
  # Main application that mounts many Rack and/or Hanami applications.
@@ -6,6 +6,7 @@ require 'hanami/generators/test_framework'
6
6
  require 'hanami/generators/template_engine'
7
7
  require 'hanami/utils'
8
8
  require 'hanami/utils/hash'
9
+ require 'hanami/utils/string'
9
10
 
10
11
  module Hanami
11
12
  # @api private
@@ -45,7 +46,7 @@ module Hanami
45
46
  assert_name!
46
47
  assert_architecture!
47
48
 
48
- @hanami_model_version = '~> 1.0.0.beta3'
49
+ @hanami_model_version = '~> 1.0.0.rc1'
49
50
  @database_config = Hanami::Generators::DatabaseConfig.new(options[:database], project_name)
50
51
  @test_framework = Hanami::Generators::TestFramework.new(hanamirc, @options[:test])
51
52
  @template_engine = Hanami::Generators::TemplateEngine.new(hanamirc, @options[:template])
@@ -99,6 +100,11 @@ module Hanami
99
100
  ApplicationName.new(real_project_name)
100
101
  end
101
102
 
103
+ # @api private
104
+ def project_module
105
+ Utils::String.new(project_name).classify
106
+ end
107
+
102
108
  # @api private
103
109
  def project_directory
104
110
  @name == '.' ? '.' : project_name
@@ -25,6 +25,7 @@ module Hanami
25
25
  def template_options
26
26
  {
27
27
  project_name: project_name,
28
+ project_module: project_module,
28
29
  hanami_head: hanami_head?,
29
30
  code_reloading: code_reloading?,
30
31
  test: test_framework.framework,
@@ -28,7 +28,7 @@ module Hanami
28
28
  end
29
29
 
30
30
  resolve do |configuration|
31
- Hanami::Logger.new(Hanami.environment.project_name, configuration.logger) unless configuration.logger.nil?
31
+ Hanami::Logger.new(Hanami.environment.project_name, *configuration.logger) unless configuration.logger.nil?
32
32
  end
33
33
  end
34
34
 
@@ -78,10 +78,6 @@ module Hanami
78
78
  register 'model' do
79
79
  requires 'logger', 'model.configuration', 'model.sql'
80
80
 
81
- prepare do
82
- Hanami::Model.disconnect if Components['model.configuration']
83
- end
84
-
85
81
  resolve do
86
82
  if Components['model.configuration']
87
83
  Hanami::Model.load!
@@ -182,9 +178,15 @@ module Hanami
182
178
  end
183
179
 
184
180
  resolve do |configuration|
185
- unless configuration.mailer.nil?
186
- Hanami::Mailer.configuration = Hanami::Mailer::Configuration.new if Hanami.code_reloading?
187
- Hanami::Mailer.configure(&configuration.mailer)
181
+ unless configuration.mailer_settings.empty?
182
+ if Hanami.code_reloading? && !Hanami::Mailer.configuration.nil?
183
+ Hanami::Mailer.configuration = Hanami::Mailer.configuration.dup
184
+ end
185
+
186
+ configuration.mailer_settings.each do |settings|
187
+ Hanami::Mailer.configure(&settings)
188
+ end
189
+
188
190
  Hanami::Mailer.configuration
189
191
  end
190
192
  end
@@ -92,7 +92,13 @@ module Hanami
92
92
  # # ...
93
93
  # end
94
94
  def mailer(&blk)
95
- settings.put_if_absent(:mailer, blk)
95
+ mailer_settings.push(blk) if block_given?
96
+ end
97
+
98
+ # @since next
99
+ # @api private
100
+ def mailer_settings
101
+ settings.fetch_or_store(:mailers, [])
96
102
  end
97
103
 
98
104
  # @since 0.9.0
@@ -113,12 +119,14 @@ module Hanami
113
119
  #
114
120
  # @since 1.0.0.beta1
115
121
  #
116
- # @param options [Hash] a set of options
122
+ # @param options [Array] a set of options
117
123
  #
118
124
  # @see Hanami.logger
119
125
  # @see Hanami::Logger
120
126
  #
121
- # @example
127
+ # @see http://hanamirb.org/guides/projects/logging/
128
+ #
129
+ # @example Basic Usage
122
130
  # # config/environment.rb
123
131
  # # ...
124
132
  # Hanami.configure do
@@ -127,8 +135,18 @@ module Hanami
127
135
  # logger level: :debug
128
136
  # end
129
137
  # end
130
- def logger(options = nil)
131
- if options.nil?
138
+ #
139
+ # @example Daily Rotation
140
+ # # config/environment.rb
141
+ # # ...
142
+ # Hanami.configure do
143
+ # # ...
144
+ # environment :development do
145
+ # logger 'daily', level: :debug
146
+ # end
147
+ # end
148
+ def logger(*options)
149
+ if options.empty?
132
150
  settings.fetch(:logger, nil)
133
151
  else
134
152
  settings[:logger] = options
@@ -1 +1,2 @@
1
- Hanami::Utils.require!("#{__dir__}/<%= config[:project_name] %>")
1
+ module <%= config[:project_module] %>
2
+ end
@@ -6,7 +6,7 @@ module Hanami
6
6
  module Version
7
7
  # @since 0.9.0
8
8
  # @api private
9
- VERSION = '1.0.0.beta3'.freeze
9
+ VERSION = '1.0.0.rc1'.freeze
10
10
 
11
11
  # @since 0.9.0
12
12
  # @api private
metadata CHANGED
@@ -1,16 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hanami
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.beta3
4
+ version: 1.0.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luca Guidi
8
- - Trung Lê
9
- - Alfonso Uceda Pompa
10
8
  autorequire:
11
9
  bindir: bin
12
10
  cert_chain: []
13
- date: 2017-03-17 00:00:00.000000000 Z
11
+ date: 2017-03-31 00:00:00.000000000 Z
14
12
  dependencies:
15
13
  - !ruby/object:Gem::Dependency
16
14
  name: hanami-utils
@@ -18,112 +16,112 @@ dependencies:
18
16
  requirements:
19
17
  - - "~>"
20
18
  - !ruby/object:Gem::Version
21
- version: 1.0.0.beta3
19
+ version: 1.0.0.rc1
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
23
  requirements:
26
24
  - - "~>"
27
25
  - !ruby/object:Gem::Version
28
- version: 1.0.0.beta3
26
+ version: 1.0.0.rc1
29
27
  - !ruby/object:Gem::Dependency
30
28
  name: hanami-validations
31
29
  requirement: !ruby/object:Gem::Requirement
32
30
  requirements:
33
31
  - - "~>"
34
32
  - !ruby/object:Gem::Version
35
- version: 1.0.0.beta2
33
+ version: 1.0.0.rc1
36
34
  type: :runtime
37
35
  prerelease: false
38
36
  version_requirements: !ruby/object:Gem::Requirement
39
37
  requirements:
40
38
  - - "~>"
41
39
  - !ruby/object:Gem::Version
42
- version: 1.0.0.beta2
40
+ version: 1.0.0.rc1
43
41
  - !ruby/object:Gem::Dependency
44
42
  name: hanami-router
45
43
  requirement: !ruby/object:Gem::Requirement
46
44
  requirements:
47
45
  - - "~>"
48
46
  - !ruby/object:Gem::Version
49
- version: 1.0.0.beta3
47
+ version: 1.0.0.rc1
50
48
  type: :runtime
51
49
  prerelease: false
52
50
  version_requirements: !ruby/object:Gem::Requirement
53
51
  requirements:
54
52
  - - "~>"
55
53
  - !ruby/object:Gem::Version
56
- version: 1.0.0.beta3
54
+ version: 1.0.0.rc1
57
55
  - !ruby/object:Gem::Dependency
58
56
  name: hanami-controller
59
57
  requirement: !ruby/object:Gem::Requirement
60
58
  requirements:
61
59
  - - "~>"
62
60
  - !ruby/object:Gem::Version
63
- version: 1.0.0.beta3
61
+ version: 1.0.0.rc1
64
62
  type: :runtime
65
63
  prerelease: false
66
64
  version_requirements: !ruby/object:Gem::Requirement
67
65
  requirements:
68
66
  - - "~>"
69
67
  - !ruby/object:Gem::Version
70
- version: 1.0.0.beta3
68
+ version: 1.0.0.rc1
71
69
  - !ruby/object:Gem::Dependency
72
70
  name: hanami-view
73
71
  requirement: !ruby/object:Gem::Requirement
74
72
  requirements:
75
73
  - - "~>"
76
74
  - !ruby/object:Gem::Version
77
- version: 1.0.0.beta2
75
+ version: 1.0.0.rc1
78
76
  type: :runtime
79
77
  prerelease: false
80
78
  version_requirements: !ruby/object:Gem::Requirement
81
79
  requirements:
82
80
  - - "~>"
83
81
  - !ruby/object:Gem::Version
84
- version: 1.0.0.beta2
82
+ version: 1.0.0.rc1
85
83
  - !ruby/object:Gem::Dependency
86
84
  name: hanami-helpers
87
85
  requirement: !ruby/object:Gem::Requirement
88
86
  requirements:
89
87
  - - "~>"
90
88
  - !ruby/object:Gem::Version
91
- version: 1.0.0.beta2
89
+ version: 1.0.0.rc1
92
90
  type: :runtime
93
91
  prerelease: false
94
92
  version_requirements: !ruby/object:Gem::Requirement
95
93
  requirements:
96
94
  - - "~>"
97
95
  - !ruby/object:Gem::Version
98
- version: 1.0.0.beta2
96
+ version: 1.0.0.rc1
99
97
  - !ruby/object:Gem::Dependency
100
98
  name: hanami-mailer
101
99
  requirement: !ruby/object:Gem::Requirement
102
100
  requirements:
103
101
  - - "~>"
104
102
  - !ruby/object:Gem::Version
105
- version: 1.0.0.beta2
103
+ version: 1.0.0.rc1
106
104
  type: :runtime
107
105
  prerelease: false
108
106
  version_requirements: !ruby/object:Gem::Requirement
109
107
  requirements:
110
108
  - - "~>"
111
109
  - !ruby/object:Gem::Version
112
- version: 1.0.0.beta2
110
+ version: 1.0.0.rc1
113
111
  - !ruby/object:Gem::Dependency
114
112
  name: hanami-assets
115
113
  requirement: !ruby/object:Gem::Requirement
116
114
  requirements:
117
115
  - - "~>"
118
116
  - !ruby/object:Gem::Version
119
- version: 1.0.0.beta2
117
+ version: 1.0.0.rc1
120
118
  type: :runtime
121
119
  prerelease: false
122
120
  version_requirements: !ruby/object:Gem::Requirement
123
121
  requirements:
124
122
  - - "~>"
125
123
  - !ruby/object:Gem::Version
126
- version: 1.0.0.beta2
124
+ version: 1.0.0.rc1
127
125
  - !ruby/object:Gem::Dependency
128
126
  name: concurrent-ruby
129
127
  requirement: !ruby/object:Gem::Requirement
@@ -225,8 +223,6 @@ dependencies:
225
223
  description: Hanami is a web framework for Ruby
226
224
  email:
227
225
  - me@lucaguidi.com
228
- - trung.le@ruby-journal.com
229
- - uceda73@gmail.com
230
226
  executables:
231
227
  - hanami
232
228
  extensions: []
@@ -400,7 +396,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
400
396
  version: 1.3.1
401
397
  requirements: []
402
398
  rubyforge_project:
403
- rubygems_version: 2.6.8
399
+ rubygems_version: 2.6.11
404
400
  signing_key:
405
401
  specification_version: 4
406
402
  summary: The web, with simplicity