hanami 1.1.0.beta3 → 1.1.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: 453bcdf8124ac473f5d4245104b5a47d2d4d9090
4
- data.tar.gz: 06ec8e1b359f3b85f11153a9ca6f9ea72e8934b9
3
+ metadata.gz: 68c2bd230a6f3488602c161d3a59708efe81e221
4
+ data.tar.gz: 56b19feffa7910a757ec4a2503e3d18be88408d6
5
5
  SHA512:
6
- metadata.gz: '009ebd38540c0ce0ebdd40d86ae490ecd875b1845fa9b0dabe9b1b49c4c5f8cb3bfb243c0d1f3170ee4b2fd1ce42b4456038610eb5f44c8ef64f0bf6252ce917'
7
- data.tar.gz: 52b785fed5b9064d5282c3ed3eee797091b671b59c6470082b9bfdf850c009ea438beb673a27ad718cc823aa7b9e75c2865b27ff5296f24449732f5630fbdd04
6
+ metadata.gz: be888d3a7c3c3a1ee2509a77ec08c7e9e9a89602d5b03c1004545afa60e37d48db83ef98a30fded1e8a3523a7a9df63f05afbf4659022096551c54af06bda48a
7
+ data.tar.gz: cdf6dfb4d86ed2de9f42ab2b23fcc26382748375269ecb28be9194f422d21f930e220843c242090ef7047c82bca736167014eeb1ae0283c3de6a4e1e8911467c
@@ -1,6 +1,11 @@
1
1
  # Hanami
2
2
  The web, with simplicity.
3
3
 
4
+ ## v1.1.0.rc1 - 2017-10-16
5
+ ### Added
6
+ - [Yuji Ueki] Generate RSpec tests with `:type` metadata (eg `type: :action`)
7
+ - [Kirill] Add `--relation` option for `hanami generate model` (eg `bundle exec hanami generate model user --relation=accounts`)
8
+
4
9
  ## v1.1.0.beta3 - 2017-10-04
5
10
  ### Fixed
6
11
  - [Luca Guidi] Don't require `:plugins` group when running `hanami new`
@@ -21,15 +21,15 @@ 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.1.0.beta3'
25
- spec.add_dependency 'hanami-validations', '1.1.0.beta3'
26
- spec.add_dependency 'hanami-router', '1.1.0.beta3'
27
- spec.add_dependency 'hanami-controller', '1.1.0.beta3'
28
- spec.add_dependency 'hanami-view', '1.1.0.beta3'
29
- spec.add_dependency 'hanami-helpers', '1.1.0.beta3'
30
- spec.add_dependency 'hanami-mailer', '1.1.0.beta3'
31
- spec.add_dependency 'hanami-assets', '1.1.0.beta3'
32
- spec.add_dependency 'hanami-cli', '0.1.0.beta3'
24
+ spec.add_dependency 'hanami-utils', '1.1.0.rc1'
25
+ spec.add_dependency 'hanami-validations', '1.1.0.rc1'
26
+ spec.add_dependency 'hanami-router', '1.1.0.rc1'
27
+ spec.add_dependency 'hanami-controller', '1.1.0.rc1'
28
+ spec.add_dependency 'hanami-view', '1.1.0.rc1'
29
+ spec.add_dependency 'hanami-helpers', '1.1.0.rc1'
30
+ spec.add_dependency 'hanami-mailer', '1.1.0.rc1'
31
+ spec.add_dependency 'hanami-assets', '1.1.0.rc1'
32
+ spec.add_dependency 'hanami-cli', '0.1.0.rc1'
33
33
  spec.add_dependency 'concurrent-ruby', '~> 1.0'
34
34
  spec.add_dependency 'bundler'
35
35
 
@@ -2,14 +2,14 @@ module Hanami
2
2
  class CLI
3
3
  module Commands
4
4
  module Db
5
- # @since x.x.x
5
+ # @since 1.1.0
6
6
  # @api private
7
7
  class Create < Command
8
8
  requires "model.configuration"
9
9
 
10
10
  desc "Create the database (only for development/test)"
11
11
 
12
- # @since x.x.x
12
+ # @since 1.1.0
13
13
  # @api private
14
14
  def call(**options)
15
15
  context = Context.new(options: options)
@@ -19,7 +19,7 @@ module Hanami
19
19
 
20
20
  private
21
21
 
22
- # @since x.x.x
22
+ # @since 1.1.0
23
23
  # @api private
24
24
  def create_database(*)
25
25
  require "hanami/model/migrator"
@@ -1,7 +1,7 @@
1
1
  module Hanami
2
2
  class CLI
3
3
  module Commands
4
- # @since x.x.x
4
+ # @since 1.1.0
5
5
  # @api private
6
6
  module Db
7
7
  class Drop < Command
@@ -9,7 +9,7 @@ module Hanami
9
9
 
10
10
  desc "Drop the database (only for development/test)"
11
11
 
12
- # @since x.x.x
12
+ # @since 1.1.0
13
13
  # @api private
14
14
  def call(**options)
15
15
  context = Context.new(options: options)
@@ -19,7 +19,7 @@ module Hanami
19
19
 
20
20
  private
21
21
 
22
- # @since x.x.x
22
+ # @since 1.1.0
23
23
  # @api private
24
24
  def drop_database(*)
25
25
  require "hanami/model/migrator"
@@ -2,7 +2,7 @@ module Hanami
2
2
  class CLI
3
3
  module Commands
4
4
  module Db
5
- # @since x.x.x
5
+ # @since 1.1.0
6
6
  # @api private
7
7
  class Rollback < Command
8
8
  requires "model.sql"
@@ -16,7 +16,7 @@ module Hanami
16
16
  "2 # Rollbacks last two migrations"
17
17
  ]
18
18
 
19
- # @since x.x.x
19
+ # @since 1.1.0
20
20
  # @api private
21
21
  def call(steps:, **)
22
22
  context = Context.new(steps: steps.to_int)
@@ -26,7 +26,7 @@ module Hanami
26
26
 
27
27
  private
28
28
 
29
- # @since x.x.x
29
+ # @since 1.1.0
30
30
  # @api private
31
31
  def rollback_database(context)
32
32
  require "hanami/model/migrator"
@@ -1,4 +1,4 @@
1
- RSpec.describe <%= app.classify %>::Controllers::<%= classified_controller_name %>::<%= action.classify %> do
1
+ RSpec.describe <%= app.classify %>::Controllers::<%= classified_controller_name %>::<%= action.classify %>, type: :action do
2
2
  let(:action) { described_class.new }
3
3
  let(:params) { Hash[] }
4
4
 
@@ -1,4 +1,4 @@
1
- RSpec.describe <%= app.classify %>::Views::<%= classified_controller_name %>::<%= action.classify %> do
1
+ RSpec.describe <%= app.classify %>::Views::<%= classified_controller_name %>::<%= action.classify %>, type: :view do
2
2
  let(:exposures) { Hash[foo: 'bar'] }
3
3
  let(:template) { Hanami::View::Template.new('<%= template %>') }
4
4
  let(:view) { described_class.new(template, exposures) }
@@ -1,6 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
- RSpec.describe <%= app.classify %>::Views::ApplicationLayout do
3
+ RSpec.describe <%= app.classify %>::Views::ApplicationLayout, type: :view do
4
4
  let(:layout) { <%= app.classify %>::Views::ApplicationLayout.new(template, {}) }
5
5
  let(:rendered) { layout.render }
6
6
  let(:template) { Hanami::View::Template.new('apps/<%= app %>/templates/application.html.<%= template %>') }
@@ -1,4 +1,4 @@
1
- RSpec.describe Mailers::<%= mailer.classify %> do
1
+ RSpec.describe Mailers::<%= mailer.classify %>, type: :mailer do
2
2
  it 'delivers email' do
3
3
  mail = Mailers::<%= mailer.classify %>.deliver
4
4
  end
@@ -11,19 +11,23 @@ module Hanami
11
11
 
12
12
  argument :model, required: true, desc: "Model name (eg. `user`)"
13
13
  option :skip_migration, type: :boolean, default: false, desc: "Skip migration"
14
+ option :relation, type: :string, desc: "Name of the database relation, default: pluralized model name"
14
15
 
15
16
  example [
16
- "user # Generate `User` entity, `UserRepository` repository, and the migration",
17
- "user --skip-migration # Generate `User` entity and `UserRepository` repository"
17
+ "user # Generate `User` entity, `UserRepository` repository, and the migration",
18
+ "user --skip-migration # Generate `User` entity and `UserRepository` repository",
19
+ "user --relation=accounts # Generate `User` entity, `UserRepository` and migration to create `accounts` table"
18
20
  ]
19
21
 
20
22
  # @since 1.1.0
21
23
  # @api private
22
24
  def call(model:, **options)
23
25
  model = Utils::String.underscore(model)
24
- relation = Utils::String.pluralize(model)
26
+ relation = relation_name(options, model)
25
27
  migration = "create_#{relation}"
26
- context = Context.new(model: model, relation: relation, migration: migration, test: options.fetch(:test), options: options)
28
+ context = Context.new(model: model, relation: relation, migration: migration, test: options.fetch(:test), override_relation_name: override_relation_name?(options), options: options)
29
+
30
+ assert_valid_relation!(context)
27
31
 
28
32
  generate_entity(context)
29
33
  generate_repository(context)
@@ -34,6 +38,13 @@ module Hanami
34
38
 
35
39
  private
36
40
 
41
+ def assert_valid_relation!(context)
42
+ if Utils::Blank.blank?(context.relation)
43
+ warn "`#{context.relation}' is not a valid relation name"
44
+ exit(1)
45
+ end
46
+ end
47
+
37
48
  # @since 1.1.0
38
49
  # @api private
39
50
  def generate_entity(context)
@@ -91,6 +102,22 @@ module Hanami
91
102
  def skip_migration?(context)
92
103
  context.options.fetch(:skip_migration, false)
93
104
  end
105
+
106
+ # @since 1.1.0
107
+ # @api private
108
+ def relation_name(options, model)
109
+ if override_relation_name?(options)
110
+ Utils::String.underscore(options[:relation])
111
+ else
112
+ Utils::String.pluralize(model)
113
+ end
114
+ end
115
+
116
+ # @since 1.1.0
117
+ # @api private
118
+ def override_relation_name?(options)
119
+ !options.fetch(:relation, nil).nil?
120
+ end
94
121
  end
95
122
  end
96
123
  end
@@ -1,3 +1,3 @@
1
- RSpec.describe <%= model.classify %> do
1
+ RSpec.describe <%= model.classify %>, type: :entity do
2
2
  # place your tests here
3
3
  end
@@ -1,2 +1,5 @@
1
1
  class <%= model.classify %>Repository < Hanami::Repository
2
+ <%- if override_relation_name -%>
3
+ self.relation = :<%= relation %>
4
+ <%- end -%>
2
5
  end
@@ -1,3 +1,3 @@
1
- RSpec.describe <%= model.classify %>Repository do
1
+ RSpec.describe <%= model.classify %>Repository, type: :repository do
2
2
  # place your tests here
3
3
  end
@@ -299,7 +299,7 @@ module Hanami
299
299
  application_name: options.fetch(:application_name),
300
300
  application_base_url: options.fetch(:application_base_url),
301
301
  hanami_head: options.fetch(:hanami_head),
302
- hanami_model_version: '1.1.0.beta3',
302
+ hanami_model_version: '1.1.0.rc1',
303
303
  code_reloading: code_reloading?,
304
304
  hanami_version: hanami_version,
305
305
  project_module: Utils::String.classify(project),
@@ -36,11 +36,11 @@ module Hanami
36
36
  # @api private
37
37
  RACK_ERRORS = 'rack.errors'.freeze
38
38
 
39
- # @since x.x.x
39
+ # @since 1.1.0
40
40
  # @api private
41
41
  QUERY_HASH = 'rack.request.query_hash'.freeze
42
42
 
43
- # @since x.x.x
43
+ # @since 1.1.0
44
44
  # @api private
45
45
  FORM_HASH = 'rack.request.form_hash'.freeze
46
46
 
@@ -8,12 +8,22 @@ module Hanami
8
8
  # @since 0.1.0
9
9
  # @api private
10
10
  class LoadPaths < Utils::LoadPaths
11
+ # Overrides Utils::LoadPath initialize method
12
+ #
13
+ # @see Hanami::Utils::LoadPaths#initialize
14
+ #
15
+ # @since 0.1.0
11
16
  # @api private
12
17
  def initialize(root)
13
18
  super()
14
19
  @root = root
15
20
  end
16
21
 
22
+ # Requires relative @pats [Utils::Kernel.Array] variable via each method
23
+ #
24
+ # @see Hanami::Utils::LoadPaths#each
25
+ #
26
+ # @since 0.1.0
17
27
  # @api private
18
28
  def load!
19
29
  each do |path|
@@ -23,6 +33,10 @@ module Hanami
23
33
 
24
34
  protected
25
35
 
36
+ # Overrides Utils::LoadPath realpath method
37
+ #
38
+ # @see Hanami::Utils::LoadPaths#realpath
39
+ #
26
40
  # @api private
27
41
  def realpath(path)
28
42
  @root.join(path).realpath
@@ -6,7 +6,7 @@ module Hanami
6
6
  module Version
7
7
  # @since 0.9.0
8
8
  # @api private
9
- VERSION = '1.1.0.beta3'.freeze
9
+ VERSION = '1.1.0.rc1'.freeze
10
10
 
11
11
  # @since 0.9.0
12
12
  # @api private
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hanami
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0.beta3
4
+ version: 1.1.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luca Guidi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-04 00:00:00.000000000 Z
11
+ date: 2017-10-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hanami-utils
@@ -16,126 +16,126 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 1.1.0.beta3
19
+ version: 1.1.0.rc1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 1.1.0.beta3
26
+ version: 1.1.0.rc1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: hanami-validations
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 1.1.0.beta3
33
+ version: 1.1.0.rc1
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 1.1.0.beta3
40
+ version: 1.1.0.rc1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: hanami-router
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - '='
46
46
  - !ruby/object:Gem::Version
47
- version: 1.1.0.beta3
47
+ version: 1.1.0.rc1
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - '='
53
53
  - !ruby/object:Gem::Version
54
- version: 1.1.0.beta3
54
+ version: 1.1.0.rc1
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: hanami-controller
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - '='
60
60
  - !ruby/object:Gem::Version
61
- version: 1.1.0.beta3
61
+ version: 1.1.0.rc1
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - '='
67
67
  - !ruby/object:Gem::Version
68
- version: 1.1.0.beta3
68
+ version: 1.1.0.rc1
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: hanami-view
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - '='
74
74
  - !ruby/object:Gem::Version
75
- version: 1.1.0.beta3
75
+ version: 1.1.0.rc1
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - '='
81
81
  - !ruby/object:Gem::Version
82
- version: 1.1.0.beta3
82
+ version: 1.1.0.rc1
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: hanami-helpers
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - '='
88
88
  - !ruby/object:Gem::Version
89
- version: 1.1.0.beta3
89
+ version: 1.1.0.rc1
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - '='
95
95
  - !ruby/object:Gem::Version
96
- version: 1.1.0.beta3
96
+ version: 1.1.0.rc1
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: hanami-mailer
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - '='
102
102
  - !ruby/object:Gem::Version
103
- version: 1.1.0.beta3
103
+ version: 1.1.0.rc1
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - '='
109
109
  - !ruby/object:Gem::Version
110
- version: 1.1.0.beta3
110
+ version: 1.1.0.rc1
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: hanami-assets
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - '='
116
116
  - !ruby/object:Gem::Version
117
- version: 1.1.0.beta3
117
+ version: 1.1.0.rc1
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - '='
123
123
  - !ruby/object:Gem::Version
124
- version: 1.1.0.beta3
124
+ version: 1.1.0.rc1
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: hanami-cli
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - '='
130
130
  - !ruby/object:Gem::Version
131
- version: 0.1.0.beta3
131
+ version: 0.1.0.rc1
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - '='
137
137
  - !ruby/object:Gem::Version
138
- version: 0.1.0.beta3
138
+ version: 0.1.0.rc1
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: concurrent-ruby
141
141
  requirement: !ruby/object:Gem::Requirement