hanami 0.9.2 → 1.0.0.beta1
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 +4 -4
- data/CHANGELOG.md +26 -0
- data/FEATURES.md +5 -0
- data/hanami.gemspec +8 -8
- data/lib/hanami.rb +25 -1
- data/lib/hanami/app.rb +4 -0
- data/lib/hanami/application.rb +1 -14
- data/lib/hanami/application_configuration.rb +2 -37
- data/lib/hanami/cli_base.rb +15 -0
- data/lib/hanami/cli_sub_commands/destroy.rb +2 -2
- data/lib/hanami/cli_sub_commands/generate.rb +2 -1
- data/lib/hanami/commands/generate/abstract.rb +5 -0
- data/lib/hanami/commands/generate/mailer.rb +2 -2
- data/lib/hanami/commands/generate/model.rb +24 -8
- data/lib/hanami/commands/new/abstract.rb +1 -1
- data/lib/hanami/commands/new/container.rb +1 -0
- data/lib/hanami/common_logger.rb +73 -0
- data/lib/hanami/components.rb +11 -0
- data/lib/hanami/components/app/controller.rb +1 -0
- data/lib/hanami/components/components.rb +73 -20
- data/lib/hanami/configuration.rb +12 -0
- data/lib/hanami/env.rb +2 -0
- data/lib/hanami/environment.rb +5 -1
- data/lib/hanami/generators/app/application.rb.tt +0 -30
- data/lib/hanami/generators/application/container/Gemfile.tt +0 -1
- data/lib/hanami/generators/application/container/config/boot.rb.tt +2 -0
- data/lib/hanami/generators/application/container/config/environment.rb.tt +14 -5
- data/lib/hanami/generators/database_config.rb +1 -1
- data/lib/hanami/generators/mailer/{mailer_spec.rb.tt → mailer_spec.rb.minitest.tt} +0 -0
- data/lib/hanami/generators/mailer/mailer_spec.rb.rspec.tt +5 -0
- data/lib/hanami/generators/model/migration.rb.tt +10 -0
- data/lib/hanami/mailer/glue.rb +4 -46
- data/lib/hanami/server.rb +4 -12
- data/lib/hanami/static.rb +4 -8
- data/lib/hanami/version.rb +1 -1
- metadata +25 -62
- data/lib/hanami/components/app/logger.rb +0 -30
- data/lib/hanami/config/logger.rb +0 -200
- data/lib/hanami/generators/application/app/.env.development.tt +0 -4
- data/lib/hanami/generators/application/app/.env.test.tt +0 -4
- data/lib/hanami/generators/application/app/.gitignore +0 -0
- data/lib/hanami/generators/application/app/.gitkeep +0 -1
- data/lib/hanami/generators/application/app/Gemfile.tt +0 -57
- data/lib/hanami/generators/application/app/Rakefile.minitest.tt +0 -12
- data/lib/hanami/generators/application/app/Rakefile.rspec.tt +0 -9
- data/lib/hanami/generators/application/app/apps/.gitkeep.tt +0 -1
- data/lib/hanami/generators/application/app/capybara.rb.rspec.tt +0 -8
- data/lib/hanami/generators/application/app/config.ru.tt +0 -3
- data/lib/hanami/generators/application/app/config/application.rb.tt +0 -347
- data/lib/hanami/generators/application/app/config/environment.rb.tt +0 -4
- data/lib/hanami/generators/application/app/config/initializers/.gitkeep +0 -0
- data/lib/hanami/generators/application/app/config/routes.rb.tt +0 -5
- data/lib/hanami/generators/application/app/db/.gitkeep +0 -1
- data/lib/hanami/generators/application/app/favicon.ico +0 -0
- data/lib/hanami/generators/application/app/features_helper.rb.minitest.tt +0 -11
- data/lib/hanami/generators/application/app/features_helper.rb.rspec.tt +0 -12
- data/lib/hanami/generators/application/app/gitignore.tt +0 -2
- data/lib/hanami/generators/application/app/gitignore_with_db.tt +0 -4
- data/lib/hanami/generators/application/app/gitignore_with_sqlite.tt +0 -3
- data/lib/hanami/generators/application/app/hanamirc.tt +0 -4
- data/lib/hanami/generators/application/app/lib/app_name.rb.tt +0 -35
- data/lib/hanami/generators/application/app/lib/chirp/entities/.gitkeep +0 -1
- data/lib/hanami/generators/application/app/lib/chirp/repositories/.gitkeep +0 -1
- data/lib/hanami/generators/application/app/rspec.rspec.tt +0 -2
- data/lib/hanami/generators/application/app/schema.sql.tt +0 -0
- data/lib/hanami/generators/application/app/spec_helper.rb.minitest.tt +0 -7
- data/lib/hanami/generators/application/app/spec_helper.rb.rspec.tt +0 -104
- data/lib/hanami/generators/application/app/templates/application.html.erb.tt +0 -10
- data/lib/hanami/generators/application/app/templates/application.html.haml.tt +0 -7
- data/lib/hanami/generators/application/app/templates/application.html.slim.tt +0 -8
- data/lib/hanami/generators/application/app/views/application_layout.rb.tt +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f3cd82f3f62f3ac1ec9c0fdd9bbcf07acad469b5
|
4
|
+
data.tar.gz: 130099379546f16fa1bc40db4bc902617f9aa7d2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 68533ad169554fa89c2375a54b98f10fd2f6bb7b999ff943b3196e53e535286a4b44cd7bbe55384c6badfcc99fe4c8d8d52190bfc4e1dced51ac126e1a8d89e5
|
7
|
+
data.tar.gz: 4ec5c3a0b46abdacd53f4fe7b853933eb851a957d667c9932eb329e0d51a798aa4f196c8c724d9e6d869fca9a8d707a6ce0ff6ad5f067a9f728cec067794c3bd
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,32 @@
|
|
1
1
|
# Hanami
|
2
2
|
The web, with simplicity.
|
3
3
|
|
4
|
+
## v1.0.0.beta1 - 2017-02-14
|
5
|
+
### Added
|
6
|
+
- [Luca Guidi] Official support for Ruby: MRI 2.4
|
7
|
+
- [yjukaku] CLI: `hanami generate model` now also generates a migration
|
8
|
+
- [Luca Guidi] Generate `config/boot.rb` for new Hanami projects.
|
9
|
+
- [Luca Guidi] Introduced `Hanami.logger` as project logger
|
10
|
+
- [Luca Guidi] Automatic logging of HTTP requests, migrations, and SQL queries
|
11
|
+
- [Luca Guidi] Introduced `environment` for env specific settings in `config/environment.rb`
|
12
|
+
|
13
|
+
### Fixed
|
14
|
+
- [Marcello Rocha] Fix Hanami::Mailer loading
|
15
|
+
- [Kai Kuchenbecker] Serve only existing assets with `Hanami::Static`
|
16
|
+
- [Gabriel Gizotti] Ensure inline ENV vars to not be overwritten by `.env.*` files
|
17
|
+
- [Adrian Madrid] Ensure new Hanami projects to have the right `jdbc` prefix for JRuby
|
18
|
+
- [Luca Guidi] Fixed code reloading for objects under `lib/`
|
19
|
+
- [Semyon Pupkov] Ensure generated mailer to respect the project name under `lib/`
|
20
|
+
- [Semyon Pupkov] Fixed generation of mailer settings for new projects
|
21
|
+
- [Victor Franco] Fixed CLI subcommands help output
|
22
|
+
|
23
|
+
### Changed
|
24
|
+
- [Ozawa Sakuro] Don't include `bundler` as a dependency `Gemfile` for new Hanami projects
|
25
|
+
- [Luca Guidi] Make compatible with Rack 2.0 only
|
26
|
+
- [Luca Guidi] Removed `logger` settings from Hanami applications
|
27
|
+
- [Luca Guidi] Removed logger for Hanami applications (eg `Web.logger`)
|
28
|
+
- [Luca Guidi] Changed mailer syntax in `config/enviroment.rb`
|
29
|
+
|
4
30
|
## v0.9.2 - 2016-12-19
|
5
31
|
## Added
|
6
32
|
- [The Crab] Mark unit tests/specs as pending for generated actions and views
|
data/FEATURES.md
CHANGED
@@ -3,6 +3,11 @@
|
|
3
3
|
|
4
4
|
## Features
|
5
5
|
|
6
|
+
## v1.0.0.beta1 - 2017-02-14
|
7
|
+
- CLI: `hanami generate model` now also generates a migration
|
8
|
+
- Project logger `Hanami.logger`
|
9
|
+
- Automatic logging of HTTP requests, migrations, and SQL queries
|
10
|
+
|
6
11
|
## v0.9.2 - 2016-12-19
|
7
12
|
|
8
13
|
## v0.9.1 - 2016-11-18
|
data/hanami.gemspec
CHANGED
@@ -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', '~> 0.
|
25
|
-
spec.add_dependency 'hanami-validations', '~> 0.
|
26
|
-
spec.add_dependency 'hanami-router', '~> 0.
|
27
|
-
spec.add_dependency 'hanami-controller', '~> 0.
|
28
|
-
spec.add_dependency 'hanami-view', '~> 0.
|
29
|
-
spec.add_dependency 'hanami-helpers', '~> 0.
|
30
|
-
spec.add_dependency 'hanami-mailer', '~> 0.
|
31
|
-
spec.add_dependency 'hanami-assets', '~> 0.
|
24
|
+
spec.add_dependency 'hanami-utils', '~> 1.0.0.beta1'
|
25
|
+
spec.add_dependency 'hanami-validations', '~> 1.0.0.beta1'
|
26
|
+
spec.add_dependency 'hanami-router', '~> 1.0.0.beta1'
|
27
|
+
spec.add_dependency 'hanami-controller', '~> 1.0.0.beta1'
|
28
|
+
spec.add_dependency 'hanami-view', '~> 1.0.0.beta1'
|
29
|
+
spec.add_dependency 'hanami-helpers', '~> 1.0.0.beta1'
|
30
|
+
spec.add_dependency 'hanami-mailer', '~> 1.0.0.beta1'
|
31
|
+
spec.add_dependency 'hanami-assets', '~> 1.0.0.beta1'
|
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'
|
data/lib/hanami.rb
CHANGED
@@ -52,7 +52,7 @@ module Hanami
|
|
52
52
|
# delivery do
|
53
53
|
# development :test
|
54
54
|
# test :test
|
55
|
-
# # production :smtp, address: ENV['SMTP_HOST'], port:
|
55
|
+
# # production :smtp, address: ENV['SMTP_HOST'], port: ENV['SMTP_PORT']
|
56
56
|
# end
|
57
57
|
# end
|
58
58
|
# end
|
@@ -90,6 +90,7 @@ module Hanami
|
|
90
90
|
# @since 0.9.0
|
91
91
|
# @api private
|
92
92
|
def self.boot
|
93
|
+
Components.release if code_reloading?
|
93
94
|
Components.resolve('all')
|
94
95
|
end
|
95
96
|
|
@@ -195,4 +196,27 @@ module Hanami
|
|
195
196
|
Environment.new
|
196
197
|
end
|
197
198
|
end
|
199
|
+
|
200
|
+
# Check if code reloading is enabled.
|
201
|
+
#
|
202
|
+
# @return [TrueClass,FalseClass] the result of the check
|
203
|
+
#
|
204
|
+
# @since 1.0.0.beta1
|
205
|
+
# @api private
|
206
|
+
#
|
207
|
+
# @see http://hanamirb.org/guides/projects/code-reloading/
|
208
|
+
def self.code_reloading?
|
209
|
+
environment
|
210
|
+
Components.resolve('code_reloading')
|
211
|
+
Components['code_reloading']
|
212
|
+
end
|
213
|
+
|
214
|
+
# Project logger
|
215
|
+
#
|
216
|
+
# @return [Hanami::Logger] the logger
|
217
|
+
#
|
218
|
+
# @since 1.0.0.beta1
|
219
|
+
def self.logger
|
220
|
+
Components['logger']
|
221
|
+
end
|
198
222
|
end
|
data/lib/hanami/app.rb
CHANGED
@@ -2,6 +2,7 @@ require 'rack'
|
|
2
2
|
require 'rack/builder'
|
3
3
|
require 'hanami/router'
|
4
4
|
require 'hanami/components'
|
5
|
+
require 'hanami/common_logger'
|
5
6
|
|
6
7
|
module Hanami
|
7
8
|
# Main application that mounts many Rack and/or Hanami applications.
|
@@ -62,6 +63,9 @@ module Hanami
|
|
62
63
|
# @since 0.9.0
|
63
64
|
# @api private
|
64
65
|
def middleware(environment)
|
66
|
+
builder.use Hanami::CommonLogger, Hanami.logger
|
67
|
+
builder.use Rack::ContentLength
|
68
|
+
|
65
69
|
if middleware = environment.static_assets_middleware # rubocop:disable Lint/AssignmentInCondition
|
66
70
|
builder.use middleware
|
67
71
|
end
|
data/lib/hanami/application.rb
CHANGED
@@ -31,19 +31,6 @@ module Hanami
|
|
31
31
|
base.extend(ClassMethods)
|
32
32
|
base.namespace.module_eval do
|
33
33
|
class << self
|
34
|
-
# Logger for this application
|
35
|
-
#
|
36
|
-
# @return [Hanami::Logger] the logger for this Hanami application
|
37
|
-
#
|
38
|
-
# @since 0.9.0
|
39
|
-
# @api public
|
40
|
-
#
|
41
|
-
# @example
|
42
|
-
#
|
43
|
-
# Web.logger
|
44
|
-
# Admin.logger
|
45
|
-
attr_accessor :logger
|
46
|
-
|
47
34
|
# Routes for this application
|
48
35
|
#
|
49
36
|
# @return [Hanami::Routes] the routes for this Hanami application
|
@@ -124,7 +111,7 @@ module Hanami
|
|
124
111
|
# @api private
|
125
112
|
def configuration=(configuration)
|
126
113
|
@_lock.synchronize do
|
127
|
-
raise "Can't assign configuration more than once (#{app_name})" unless @configuration.nil?
|
114
|
+
# raise "Can't assign configuration more than once (#{app_name})" unless @configuration.nil?
|
128
115
|
@configuration = configuration
|
129
116
|
end
|
130
117
|
end
|
@@ -5,7 +5,6 @@ require 'hanami/middleware'
|
|
5
5
|
require 'hanami/config/cookies'
|
6
6
|
require 'hanami/config/framework_configuration'
|
7
7
|
require 'hanami/config/load_paths'
|
8
|
-
require 'hanami/config/logger'
|
9
8
|
require 'hanami/config/routes'
|
10
9
|
require 'hanami/config/security'
|
11
10
|
require 'hanami/config/sessions'
|
@@ -21,7 +20,7 @@ module Hanami
|
|
21
20
|
# @see Hanami::Configuration#ssl?
|
22
21
|
SSL_SCHEME = 'https'.freeze
|
23
22
|
|
24
|
-
# @since
|
23
|
+
# @since 1.0.0.beta1
|
25
24
|
# @api private
|
26
25
|
DEFAULT_SSL_PORT = 443
|
27
26
|
|
@@ -1398,7 +1397,7 @@ module Hanami
|
|
1398
1397
|
# module Bookshelf
|
1399
1398
|
# class Application < Hanami::Application
|
1400
1399
|
# configure do
|
1401
|
-
# adapter :sql, '
|
1400
|
+
# adapter :sql, 'postgresql://localhost/database'
|
1402
1401
|
# model.adapter :sql, 'sqlite://db/bookshelf_development'
|
1403
1402
|
# end
|
1404
1403
|
# end
|
@@ -1495,40 +1494,6 @@ module Hanami
|
|
1495
1494
|
@view ||= Config::FrameworkConfiguration.new
|
1496
1495
|
end
|
1497
1496
|
|
1498
|
-
# Defines a Config::Logger instance to the logger configuration.
|
1499
|
-
#
|
1500
|
-
# This instance will be used to generate the hanami logger available on application module.
|
1501
|
-
#
|
1502
|
-
# @return [Config::Logger] Configure logger instance
|
1503
|
-
#
|
1504
|
-
# @since 0.5.0
|
1505
|
-
#
|
1506
|
-
# @example Define a logger
|
1507
|
-
# require 'hanami'
|
1508
|
-
#
|
1509
|
-
# module Bookshelf
|
1510
|
-
# class Application < Hanami::Application
|
1511
|
-
# configure do
|
1512
|
-
# logger.stream 'path/to/log/file'
|
1513
|
-
# end
|
1514
|
-
# load!
|
1515
|
-
# end
|
1516
|
-
#
|
1517
|
-
# module Controllers::Error
|
1518
|
-
# class Index
|
1519
|
-
# include Bookshelf::Action
|
1520
|
-
#
|
1521
|
-
# def call(params)
|
1522
|
-
# Bookshelf::Logger.info "Logging to STDOUT"
|
1523
|
-
# end
|
1524
|
-
# end
|
1525
|
-
# end
|
1526
|
-
# end
|
1527
|
-
#
|
1528
|
-
def logger
|
1529
|
-
@logger ||= Config::Logger.new
|
1530
|
-
end
|
1531
|
-
|
1532
1497
|
# @since 0.9.0
|
1533
1498
|
# @api private
|
1534
1499
|
def app_name
|
data/lib/hanami/cli_base.rb
CHANGED
@@ -27,5 +27,20 @@ module Hanami
|
|
27
27
|
def define_commands(&blk)
|
28
28
|
class_eval(&blk) if block_given?
|
29
29
|
end
|
30
|
+
|
31
|
+
def banner(command, nspace = true, subcommand = false)
|
32
|
+
super(command, nspace, namespace != 'hanami:cli')
|
33
|
+
end
|
34
|
+
|
35
|
+
def handle_argument_error(command, error, args, arity)
|
36
|
+
name = [(namespace == 'hanami:cli' ? nil : namespace), command.name].compact.join(" ")
|
37
|
+
|
38
|
+
msg = "ERROR: \"#{basename} #{name}\" was called with "
|
39
|
+
msg << "no arguments" if args.empty?
|
40
|
+
msg << "arguments " << args.inspect unless args.empty?
|
41
|
+
msg << "\nUsage: #{banner(command).inspect}"
|
42
|
+
|
43
|
+
raise Thor::InvocationError, msg
|
44
|
+
end
|
30
45
|
end
|
31
46
|
end
|
@@ -28,7 +28,7 @@ module Hanami
|
|
28
28
|
def actions(application_name = nil, controller_and_action_name)
|
29
29
|
if Hanami::Environment.new(options).container? && application_name.nil?
|
30
30
|
msg = "ERROR: \"hanami destroy action\" was called with arguments [\"#{controller_and_action_name}\"]\n" \
|
31
|
-
"Usage: \"hanami action APPLICATION_NAME CONTROLLER_NAME#ACTION_NAME\""
|
31
|
+
"Usage: \"hanami destroy action APPLICATION_NAME CONTROLLER_NAME#ACTION_NAME\""
|
32
32
|
fail Error, msg
|
33
33
|
end
|
34
34
|
|
@@ -60,7 +60,7 @@ module Hanami
|
|
60
60
|
`hanami destroy model` will destroy an entity along with repository
|
61
61
|
and corresponding tests
|
62
62
|
|
63
|
-
> $ hanami
|
63
|
+
> $ hanami destroy model car
|
64
64
|
EOS
|
65
65
|
|
66
66
|
def model(name)
|
@@ -40,7 +40,7 @@ module Hanami
|
|
40
40
|
def actions(application_name = nil, controller_and_action_name)
|
41
41
|
if Hanami::Environment.new(options).container? && application_name.nil?
|
42
42
|
msg = "ERROR: \"hanami generate action\" was called with arguments [\"#{controller_and_action_name}\"]\n" \
|
43
|
-
"Usage: \"hanami action APPLICATION_NAME CONTROLLER_NAME#ACTION_NAME\""
|
43
|
+
"Usage: \"hanami generate action APPLICATION_NAME CONTROLLER_NAME#ACTION_NAME\""
|
44
44
|
fail Error, msg
|
45
45
|
end
|
46
46
|
|
@@ -77,6 +77,7 @@ module Hanami
|
|
77
77
|
> $ hanami generate model vehicles/car
|
78
78
|
EOS
|
79
79
|
method_option :test, desc: 'Defines the testing Framework to be used. Default is defined through your .hanamirc file.'
|
80
|
+
method_option :skip_migration, desc: 'Skips the generation of a migration to create the model\'s table', default: false, type: :boolean
|
80
81
|
def model(name)
|
81
82
|
if options[:help]
|
82
83
|
invoke :help, ['model']
|
@@ -50,7 +50,7 @@ module Hanami
|
|
50
50
|
# @since 0.x.x
|
51
51
|
# @api private
|
52
52
|
def map_templates
|
53
|
-
add_mapping("mailer_spec.rb.tt", mailer_spec_path)
|
53
|
+
add_mapping("mailer_spec.rb.#{test_framework.framework}.tt", mailer_spec_path)
|
54
54
|
add_mapping("mailer.rb.tt", mailer_path)
|
55
55
|
add_mapping("template.txt.tt", txt_template_path)
|
56
56
|
add_mapping("template.html.tt", html_template_path)
|
@@ -110,7 +110,7 @@ module Hanami
|
|
110
110
|
end
|
111
111
|
|
112
112
|
def core_root
|
113
|
-
Pathname.new("lib").join(
|
113
|
+
Pathname.new("lib").join(project_name)
|
114
114
|
end
|
115
115
|
end
|
116
116
|
end
|
@@ -1,16 +1,22 @@
|
|
1
1
|
require 'hanami/commands/generate/abstract'
|
2
|
+
require 'hanami/commands/generate/migration'
|
2
3
|
|
3
4
|
module Hanami
|
4
5
|
module Commands
|
5
6
|
class Generate
|
6
7
|
class Model < Abstract
|
7
8
|
|
8
|
-
attr_reader :input, :model_name
|
9
|
+
attr_reader :input, :model_name, :table_name
|
9
10
|
|
10
11
|
def initialize(options, model_name)
|
11
12
|
super(options)
|
12
13
|
@input = Utils::String.new(model_name).underscore
|
13
14
|
@model_name = Utils::String.new(@input).classify
|
15
|
+
@table_name = Utils::String.new(@input).pluralize
|
16
|
+
|
17
|
+
unless skip_migration?
|
18
|
+
Components.resolve('model.configuration')
|
19
|
+
end
|
14
20
|
|
15
21
|
assert_model_name!
|
16
22
|
end
|
@@ -18,13 +24,17 @@ module Hanami
|
|
18
24
|
def map_templates
|
19
25
|
add_mapping('entity.rb.tt', entity_path)
|
20
26
|
add_mapping('repository.rb.tt', repository_path)
|
27
|
+
unless skip_migration?
|
28
|
+
add_mapping('migration.rb.tt', migration_path)
|
29
|
+
end
|
21
30
|
add_mapping("entity_spec.#{ test_framework.framework }.tt", entity_spec_path,)
|
22
31
|
add_mapping("repository_spec.#{ test_framework.framework }.tt", repository_spec_path)
|
23
32
|
end
|
24
33
|
|
25
34
|
def template_options
|
26
35
|
{
|
27
|
-
model_name: model_name
|
36
|
+
model_name: model_name,
|
37
|
+
table_name: table_name
|
28
38
|
}
|
29
39
|
end
|
30
40
|
|
@@ -57,6 +67,10 @@ module Hanami
|
|
57
67
|
end
|
58
68
|
end
|
59
69
|
|
70
|
+
def skip_migration?
|
71
|
+
options.fetch(:skip_migration, false)
|
72
|
+
end
|
73
|
+
|
60
74
|
def model_root
|
61
75
|
Pathname.new('lib').join(project_name)
|
62
76
|
end
|
@@ -73,6 +87,14 @@ module Hanami
|
|
73
87
|
model_root.join('repositories', "#{ model_name_underscored }_repository.rb").to_s
|
74
88
|
end
|
75
89
|
|
90
|
+
# @since 0.9.1
|
91
|
+
# @api private
|
92
|
+
def migration_path
|
93
|
+
timestamp = Time.now.utc.strftime(Migration::TIMESTAMP_FORMAT)
|
94
|
+
filename = Migration::FILENAME_PATTERN % { timestamp: timestamp, name: "create_#{table_name}"}
|
95
|
+
Hanami::Model.configuration.migrations.join(filename)
|
96
|
+
end
|
97
|
+
|
76
98
|
# @since 0.5.0
|
77
99
|
# @api private
|
78
100
|
def entity_spec_path
|
@@ -91,12 +113,6 @@ module Hanami
|
|
91
113
|
def model_name_underscored
|
92
114
|
input
|
93
115
|
end
|
94
|
-
|
95
|
-
# @since 0.8.0
|
96
|
-
# @api private
|
97
|
-
def project_name
|
98
|
-
Utils::String.new(Hanami::Environment.new.project_name).underscore
|
99
|
-
end
|
100
116
|
end
|
101
117
|
end
|
102
118
|
end
|
@@ -29,7 +29,7 @@ module Hanami
|
|
29
29
|
assert_name!
|
30
30
|
assert_architecture!
|
31
31
|
|
32
|
-
@hanami_model_version = '~> 0.
|
32
|
+
@hanami_model_version = '~> 1.0.0.beta1'
|
33
33
|
@database_config = Hanami::Generators::DatabaseConfig.new(options[:database], project_name)
|
34
34
|
@test_framework = Hanami::Generators::TestFramework.new(hanamirc, @options[:test])
|
35
35
|
@template_engine = Hanami::Generators::TemplateEngine.new(hanamirc, @options[:template])
|
@@ -43,6 +43,7 @@ module Hanami
|
|
43
43
|
add_mapping('.env.test.tt', '.env.test')
|
44
44
|
add_mapping('Gemfile.tt', 'Gemfile')
|
45
45
|
add_mapping('config.ru.tt', 'config.ru')
|
46
|
+
add_mapping('config/boot.rb.tt', 'config/boot.rb')
|
46
47
|
add_mapping('config/environment.rb.tt', 'config/environment.rb')
|
47
48
|
add_mapping('lib/project.rb.tt', "lib/#{ project_name }.rb")
|
48
49
|
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
require 'rack/common_logger'
|
2
|
+
|
3
|
+
module Hanami
|
4
|
+
# Rack logger for Hanami.app
|
5
|
+
#
|
6
|
+
# @since 1.0.0.beta1
|
7
|
+
# @api private
|
8
|
+
class CommonLogger < Rack::CommonLogger
|
9
|
+
private
|
10
|
+
|
11
|
+
# @since 1.0.0.beta1
|
12
|
+
# @api private
|
13
|
+
HTTP_VERSION = 'HTTP_VERSION'.freeze
|
14
|
+
|
15
|
+
# @since 1.0.0.beta1
|
16
|
+
# @api private
|
17
|
+
REQUEST_METHOD = 'REQUEST_METHOD'.freeze
|
18
|
+
|
19
|
+
# @since 1.0.0.beta1
|
20
|
+
# @api private
|
21
|
+
HTTP_X_FORWARDED_FOR = 'HTTP_X_FORWARDED_FOR'.freeze
|
22
|
+
|
23
|
+
# @since 1.0.0.beta1
|
24
|
+
# @api private
|
25
|
+
REMOTE_ADDR = 'REMOTE_ADDR'.freeze
|
26
|
+
|
27
|
+
# @since 1.0.0.beta1
|
28
|
+
# @api private
|
29
|
+
SCRIPT_NAME = 'SCRIPT_NAME'.freeze
|
30
|
+
|
31
|
+
# @since 1.0.0.beta1
|
32
|
+
# @api private
|
33
|
+
PATH_INFO = 'PATH_INFO'.freeze
|
34
|
+
|
35
|
+
# @since 1.0.0.beta1
|
36
|
+
# @api private
|
37
|
+
QUERY_STRING = 'QUERY_STRING'.freeze
|
38
|
+
|
39
|
+
# @since 1.0.0.beta1
|
40
|
+
# @api private
|
41
|
+
RACK_ERRORS = 'rack.errors'.freeze
|
42
|
+
|
43
|
+
# @since 1.0.0.beta1
|
44
|
+
# @api private
|
45
|
+
#
|
46
|
+
# rubocop:disable Metrics/AbcSize
|
47
|
+
# rubocop:disable Metrics/MethodLength
|
48
|
+
def log(env, status, header, began_at)
|
49
|
+
now = Time.now
|
50
|
+
length = extract_content_length(header)
|
51
|
+
|
52
|
+
msg = Hash[
|
53
|
+
http: env[HTTP_VERSION],
|
54
|
+
verb: env[REQUEST_METHOD],
|
55
|
+
status: status.to_s[0..3],
|
56
|
+
ip: env[HTTP_X_FORWARDED_FOR] || env[REMOTE_ADDR],
|
57
|
+
path: env[SCRIPT_NAME] + env[PATH_INFO],
|
58
|
+
query: env[QUERY_STRING],
|
59
|
+
length: length,
|
60
|
+
elapsed: now - began_at
|
61
|
+
]
|
62
|
+
|
63
|
+
logger = @logger || env[RACK_ERRORS]
|
64
|
+
# Standard library logger doesn't support write but it supports << which actually
|
65
|
+
# calls to write on the log device without formatting
|
66
|
+
if logger.respond_to?(:write)
|
67
|
+
logger.write(msg)
|
68
|
+
else
|
69
|
+
logger.info(msg)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|