hanami 1.0.0.beta3 → 1.0.0.rc1

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