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