hanami 1.3.5 → 2.0.0.alpha1
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 +51 -41
- data/FEATURES.md +2 -12
- data/LICENSE.md +1 -1
- data/README.md +5 -8
- data/bin/hanami +6 -4
- data/hanami.gemspec +24 -28
- data/lib/hanami/application.rb +44 -176
- data/lib/hanami/boot.rb +6 -0
- data/lib/hanami/cli/commands/command.rb +21 -29
- data/lib/hanami/cli/commands/server.rb +63 -14
- data/lib/hanami/cli/commands.rb +5 -42
- data/lib/hanami/configuration/cookies.rb +24 -0
- data/lib/hanami/configuration/middleware.rb +8 -28
- data/lib/hanami/configuration/security.rb +141 -0
- data/lib/hanami/configuration/sessions.rb +50 -0
- data/lib/hanami/configuration.rb +181 -191
- data/lib/hanami/container.rb +107 -0
- data/lib/hanami/frameworks.rb +24 -18
- data/lib/hanami/routes.rb +17 -205
- data/lib/hanami/server.rb +5 -69
- data/lib/hanami/version.rb +3 -1
- data/lib/hanami.rb +39 -243
- metadata +36 -233
- data/lib/hanami/action/csrf_protection.rb +0 -211
- data/lib/hanami/action/routing_helpers.rb +0 -40
- data/lib/hanami/app.rb +0 -96
- data/lib/hanami/application_configuration.rb +0 -1495
- data/lib/hanami/application_name.rb +0 -108
- data/lib/hanami/application_namespace.rb +0 -14
- data/lib/hanami/assets/asset.rb +0 -72
- data/lib/hanami/assets/static.rb +0 -102
- data/lib/hanami/cli/commands/assets/precompile.rb +0 -42
- data/lib/hanami/cli/commands/assets.rb +0 -16
- data/lib/hanami/cli/commands/console.rb +0 -95
- data/lib/hanami/cli/commands/db/apply.rb +0 -32
- data/lib/hanami/cli/commands/db/console.rb +0 -44
- data/lib/hanami/cli/commands/db/create.rb +0 -32
- data/lib/hanami/cli/commands/db/drop.rb +0 -32
- data/lib/hanami/cli/commands/db/migrate.rb +0 -39
- data/lib/hanami/cli/commands/db/prepare.rb +0 -32
- data/lib/hanami/cli/commands/db/rollback.rb +0 -59
- data/lib/hanami/cli/commands/db/version.rb +0 -32
- data/lib/hanami/cli/commands/db.rb +0 -32
- data/lib/hanami/cli/commands/destroy/action.rb +0 -137
- data/lib/hanami/cli/commands/destroy/app.rb +0 -159
- data/lib/hanami/cli/commands/destroy/mailer.rb +0 -74
- data/lib/hanami/cli/commands/destroy/migration.rb +0 -51
- data/lib/hanami/cli/commands/destroy/model.rb +0 -84
- data/lib/hanami/cli/commands/destroy.rb +0 -26
- data/lib/hanami/cli/commands/generate/action/action.erb +0 -7
- data/lib/hanami/cli/commands/generate/action/action_spec.minitest.erb +0 -11
- data/lib/hanami/cli/commands/generate/action/action_spec.rspec.erb +0 -9
- data/lib/hanami/cli/commands/generate/action/action_without_view.erb +0 -7
- data/lib/hanami/cli/commands/generate/action/view.erb +0 -7
- data/lib/hanami/cli/commands/generate/action/view_spec.minitest.erb +0 -12
- data/lib/hanami/cli/commands/generate/action/view_spec.rspec.erb +0 -10
- data/lib/hanami/cli/commands/generate/action.rb +0 -321
- data/lib/hanami/cli/commands/generate/app/application.erb +0 -313
- data/lib/hanami/cli/commands/generate/app/favicon.ico +0 -0
- data/lib/hanami/cli/commands/generate/app/gitkeep.erb +0 -0
- data/lib/hanami/cli/commands/generate/app/layout.erb +0 -7
- data/lib/hanami/cli/commands/generate/app/layout_spec.minitest.erb +0 -10
- data/lib/hanami/cli/commands/generate/app/layout_spec.rspec.erb +0 -10
- data/lib/hanami/cli/commands/generate/app/routes.erb +0 -5
- data/lib/hanami/cli/commands/generate/app/template.erb.erb +0 -10
- data/lib/hanami/cli/commands/generate/app/template.haml.erb +0 -7
- data/lib/hanami/cli/commands/generate/app/template.slim.erb +0 -8
- data/lib/hanami/cli/commands/generate/app.rb +0 -243
- data/lib/hanami/cli/commands/generate/mailer/mailer.erb +0 -9
- data/lib/hanami/cli/commands/generate/mailer/mailer_spec.minitest.erb +0 -7
- data/lib/hanami/cli/commands/generate/mailer/mailer_spec.rspec.erb +0 -5
- data/lib/hanami/cli/commands/generate/mailer.rb +0 -104
- data/lib/hanami/cli/commands/generate/migration/migration.erb +0 -4
- data/lib/hanami/cli/commands/generate/migration.rb +0 -41
- data/lib/hanami/cli/commands/generate/model/entity.erb +0 -2
- data/lib/hanami/cli/commands/generate/model/entity_spec.minitest.erb +0 -5
- data/lib/hanami/cli/commands/generate/model/entity_spec.rspec.erb +0 -3
- data/lib/hanami/cli/commands/generate/model/migration.erb +0 -10
- data/lib/hanami/cli/commands/generate/model/repository.erb +0 -5
- data/lib/hanami/cli/commands/generate/model/repository_spec.minitest.erb +0 -5
- data/lib/hanami/cli/commands/generate/model/repository_spec.rspec.erb +0 -3
- data/lib/hanami/cli/commands/generate/model.rb +0 -125
- data/lib/hanami/cli/commands/generate/secret.rb +0 -48
- data/lib/hanami/cli/commands/generate.rb +0 -28
- data/lib/hanami/cli/commands/new/.env.development.erb +0 -3
- data/lib/hanami/cli/commands/new/.env.test.erb +0 -3
- data/lib/hanami/cli/commands/new/.gitkeep.erb +0 -0
- data/lib/hanami/cli/commands/new/Gemfile.erb +0 -57
- data/lib/hanami/cli/commands/new/README.md.erb +0 -33
- data/lib/hanami/cli/commands/new/config/boot.erb +0 -2
- data/lib/hanami/cli/commands/new/config/environment.erb +0 -49
- data/lib/hanami/cli/commands/new/config.ru.erb +0 -3
- data/lib/hanami/cli/commands/new/gitignore.erb +0 -4
- data/lib/hanami/cli/commands/new/gitignore_with_sqlite.erb +0 -5
- data/lib/hanami/cli/commands/new/hanamirc.erb +0 -3
- data/lib/hanami/cli/commands/new/lib/project.erb +0 -2
- data/lib/hanami/cli/commands/new/minitest/Rakefile.erb +0 -12
- data/lib/hanami/cli/commands/new/minitest/features_helper.erb +0 -11
- data/lib/hanami/cli/commands/new/minitest/spec_helper.erb +0 -7
- data/lib/hanami/cli/commands/new/rspec/Rakefile.erb +0 -9
- data/lib/hanami/cli/commands/new/rspec/capybara.erb +0 -8
- data/lib/hanami/cli/commands/new/rspec/features_helper.erb +0 -12
- data/lib/hanami/cli/commands/new/rspec/rspec.erb +0 -2
- data/lib/hanami/cli/commands/new/rspec/spec_helper.erb +0 -103
- data/lib/hanami/cli/commands/new/schema.sql.erb +0 -0
- data/lib/hanami/cli/commands/new.rb +0 -578
- data/lib/hanami/cli/commands/project.rb +0 -421
- data/lib/hanami/cli/commands/routes.rb +0 -21
- data/lib/hanami/cli/commands/templates.rb +0 -31
- data/lib/hanami/cli/commands/version.rb +0 -19
- data/lib/hanami/common_logger.rb +0 -109
- data/lib/hanami/components/app/assets.rb +0 -59
- data/lib/hanami/components/app/controller.rb +0 -74
- data/lib/hanami/components/app/routes.rb +0 -59
- data/lib/hanami/components/app/view.rb +0 -44
- data/lib/hanami/components/component.rb +0 -182
- data/lib/hanami/components/components.rb +0 -479
- data/lib/hanami/components/routes_inspector.rb +0 -72
- data/lib/hanami/components.rb +0 -156
- data/lib/hanami/config/cookies.rb +0 -69
- data/lib/hanami/config/framework_configuration.rb +0 -43
- data/lib/hanami/config/load_paths.rb +0 -46
- data/lib/hanami/config/mapper.rb +0 -47
- data/lib/hanami/config/routes.rb +0 -20
- data/lib/hanami/config/security.rb +0 -110
- data/lib/hanami/config/sessions.rb +0 -119
- data/lib/hanami/configuration/app.rb +0 -21
- data/lib/hanami/early_hints.rb +0 -129
- data/lib/hanami/env.rb +0 -69
- data/lib/hanami/environment.rb +0 -541
- data/lib/hanami/environment_application_configurations.rb +0 -37
- data/lib/hanami/hanamirc.rb +0 -169
- data/lib/hanami/mailer/glue.rb +0 -27
- data/lib/hanami/middleware_stack.rb +0 -172
- data/lib/hanami/rake_helper.rb +0 -78
- data/lib/hanami/rake_tasks.rb +0 -3
- data/lib/hanami/rendering_policy.rb +0 -94
- data/lib/hanami/routing/default.rb +0 -32
- data/lib/hanami/setup.rb +0 -3
- data/lib/hanami/static.rb +0 -63
- data/lib/hanami/templates/default.html.erb +0 -30
- data/lib/hanami/templates/welcome.html.erb +0 -52
- data/lib/hanami/views/default.rb +0 -37
- data/lib/hanami/views/default_template_finder.rb +0 -22
- data/lib/hanami/views/null_view.rb +0 -15
- data/lib/hanami/welcome.rb +0 -41
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
require 'hanami/action/session'
|
|
2
|
-
require 'hanami/action/routing_helpers'
|
|
3
|
-
|
|
4
|
-
module Hanami
|
|
5
|
-
# @since 0.9.0
|
|
6
|
-
# @api private
|
|
7
|
-
module Components
|
|
8
|
-
# @since 0.9.0
|
|
9
|
-
# @api private
|
|
10
|
-
module App
|
|
11
|
-
# hanami-controller configuration for a single Hanami application in the project.
|
|
12
|
-
#
|
|
13
|
-
# @since 0.9.0
|
|
14
|
-
# @api private
|
|
15
|
-
class Controller
|
|
16
|
-
STRICT_TRANSPORT_SECURITY_HEADER = 'Strict-Transport-Security'.freeze
|
|
17
|
-
STRICT_TRANSPORT_SECURITY_DEFAULT_VALUE = 'max-age=31536000'.freeze
|
|
18
|
-
|
|
19
|
-
# Configure hanami-controller for a single Hanami application in the project.
|
|
20
|
-
#
|
|
21
|
-
# @param app [Hanami::Configuration::App] a Hanami application
|
|
22
|
-
#
|
|
23
|
-
# @since 0.9.0
|
|
24
|
-
# @api private
|
|
25
|
-
#
|
|
26
|
-
# rubocop:disable Metrics/AbcSize
|
|
27
|
-
# rubocop:disable Metrics/MethodLength
|
|
28
|
-
def self.resolve(app)
|
|
29
|
-
config = app.configuration
|
|
30
|
-
namespace = app.namespace
|
|
31
|
-
|
|
32
|
-
unless namespace.const_defined?('Controller', false)
|
|
33
|
-
controller = Hanami::Controller.duplicate(namespace) do
|
|
34
|
-
handle_exceptions config.handle_exceptions
|
|
35
|
-
public_directory Hanami.public_directory
|
|
36
|
-
default_request_format config.default_request_format
|
|
37
|
-
default_response_format config.default_response_format
|
|
38
|
-
default_headers(
|
|
39
|
-
Hanami::Config::Security::X_FRAME_OPTIONS_HEADER => config.security.x_frame_options,
|
|
40
|
-
Hanami::Config::Security::X_CONTENT_TYPE_OPTIONS_HEADER => config.security.x_content_type_options,
|
|
41
|
-
Hanami::Config::Security::X_XSS_PROTECTION_HEADER => config.security.x_xss_protection,
|
|
42
|
-
Hanami::Config::Security::CONTENT_SECURITY_POLICY_HEADER => config.security.content_security_policy
|
|
43
|
-
)
|
|
44
|
-
default_headers[STRICT_TRANSPORT_SECURITY_HEADER] = STRICT_TRANSPORT_SECURITY_DEFAULT_VALUE if config.force_ssl
|
|
45
|
-
|
|
46
|
-
if config.cookies.enabled?
|
|
47
|
-
require 'hanami/action/cookies'
|
|
48
|
-
prepare { include Hanami::Action::Cookies }
|
|
49
|
-
cookies config.cookies.default_options
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
if config.sessions.enabled?
|
|
53
|
-
prepare do
|
|
54
|
-
include Hanami::Action::Session
|
|
55
|
-
include Hanami::Action::CSRFProtection
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
prepare { include Hanami::Action::RoutingHelpers }
|
|
60
|
-
|
|
61
|
-
config.controller.__apply(self)
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
namespace.const_set('Controller', controller)
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
Components.resolved "#{app.app_name}.controller", namespace.const_get('Controller').configuration
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
# rubocop:enable Metrics/MethodLength
|
|
71
|
-
# rubocop:enable Metrics/AbcSize
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
end
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
require 'hanami/routes'
|
|
2
|
-
require 'hanami/routing/default'
|
|
3
|
-
|
|
4
|
-
module Hanami
|
|
5
|
-
# @since 0.9.0
|
|
6
|
-
# @api private
|
|
7
|
-
module Components
|
|
8
|
-
# @since 0.9.0
|
|
9
|
-
# @api private
|
|
10
|
-
module App
|
|
11
|
-
# hanami-router configuration for a single Hanami application in the project.
|
|
12
|
-
#
|
|
13
|
-
# @since 0.9.0
|
|
14
|
-
# @api private
|
|
15
|
-
class Routes
|
|
16
|
-
# Configure hanami-router for a single Hanami application in the project.
|
|
17
|
-
#
|
|
18
|
-
# @param app [Hanami::Configuration::App] a Hanami application
|
|
19
|
-
#
|
|
20
|
-
# @since 0.9.0
|
|
21
|
-
# @api private
|
|
22
|
-
def self.resolve(app)
|
|
23
|
-
namespace = app.namespace
|
|
24
|
-
routes = application_routes(app)
|
|
25
|
-
|
|
26
|
-
if namespace.routes.nil? # rubocop:disable Style/IfUnlessModifier
|
|
27
|
-
namespace.routes = Hanami::Routes.new(routes)
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
Components.resolved("#{app.app_name}.routes", routes)
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
# @since 0.9.0
|
|
34
|
-
# @api private
|
|
35
|
-
def self.application_routes(app) # rubocop:disable Metrics/MethodLength
|
|
36
|
-
config = app.configuration
|
|
37
|
-
namespace = app.namespace
|
|
38
|
-
|
|
39
|
-
resolver = Hanami::Routing::EndpointResolver.new(pattern: config.controller_pattern, namespace: namespace)
|
|
40
|
-
default_app = Hanami::Routing::Default.new
|
|
41
|
-
|
|
42
|
-
options = {
|
|
43
|
-
resolver: resolver,
|
|
44
|
-
default_app: default_app,
|
|
45
|
-
scheme: config.scheme,
|
|
46
|
-
host: config.host,
|
|
47
|
-
port: config.port,
|
|
48
|
-
prefix: config.path_prefix,
|
|
49
|
-
force_ssl: config.force_ssl
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
options[:parsers] = config.body_parsers if config.body_parsers.any?
|
|
53
|
-
|
|
54
|
-
Hanami::Router.new(options, &config.routes)
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
module Hanami
|
|
2
|
-
# @since 0.9.0
|
|
3
|
-
# @api private
|
|
4
|
-
module Components
|
|
5
|
-
# @since 0.9.0
|
|
6
|
-
# @api private
|
|
7
|
-
module App
|
|
8
|
-
# hanami-view configuration for a single Hanami application in the project.
|
|
9
|
-
#
|
|
10
|
-
# @since 0.9.0
|
|
11
|
-
# @api private
|
|
12
|
-
class View
|
|
13
|
-
# Configure hanami-view for a single Hanami application in the project.
|
|
14
|
-
#
|
|
15
|
-
# @param app [Hanami::Configuration::App] a Hanami application
|
|
16
|
-
#
|
|
17
|
-
# @since 0.9.0
|
|
18
|
-
# @api private
|
|
19
|
-
#
|
|
20
|
-
# rubocop:disable Metrics/AbcSize
|
|
21
|
-
# rubocop:disable Metrics/MethodLength
|
|
22
|
-
def self.resolve(app)
|
|
23
|
-
config = app.configuration
|
|
24
|
-
namespace = app.namespace
|
|
25
|
-
|
|
26
|
-
unless namespace.const_defined?('View', false)
|
|
27
|
-
view = Hanami::View.duplicate(namespace) do
|
|
28
|
-
root config.templates
|
|
29
|
-
layout config.layout
|
|
30
|
-
|
|
31
|
-
config.view.__apply(self)
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
namespace.const_set('View', view)
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
Components.resolved "#{app.app_name}.view", namespace.const_get('View').configuration
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
# rubocop:enable Metrics/MethodLength
|
|
41
|
-
# rubocop:enable Metrics/AbcSize
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
end
|
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
module Hanami
|
|
2
|
-
# @since 0.9.0
|
|
3
|
-
# @api private
|
|
4
|
-
module Components
|
|
5
|
-
# Base component
|
|
6
|
-
#
|
|
7
|
-
# @since 0.9.0
|
|
8
|
-
# @api private
|
|
9
|
-
#
|
|
10
|
-
# @see Hanami::Components
|
|
11
|
-
class Component
|
|
12
|
-
# Instantiate a new component
|
|
13
|
-
#
|
|
14
|
-
# @param name [String] the component name
|
|
15
|
-
# @param blk [Proc] the logic of the component
|
|
16
|
-
#
|
|
17
|
-
# @return [Hanami::Components::Component]
|
|
18
|
-
#
|
|
19
|
-
# @since 0.9.0
|
|
20
|
-
# @api private
|
|
21
|
-
def initialize(name, &blk)
|
|
22
|
-
@name = name
|
|
23
|
-
@requirements = []
|
|
24
|
-
@_prepare = ->(*) {}
|
|
25
|
-
@_resolve = -> {}
|
|
26
|
-
instance_eval(&blk)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
# Run or resolve the component
|
|
30
|
-
#
|
|
31
|
-
# @param configuration [Hanami::Configuration] the Hanami configuration for the project
|
|
32
|
-
#
|
|
33
|
-
# @since 0.9.0
|
|
34
|
-
# @api private
|
|
35
|
-
def call(configuration)
|
|
36
|
-
resolve_requirements
|
|
37
|
-
_prepare.call(configuration)
|
|
38
|
-
|
|
39
|
-
unless _run.nil?
|
|
40
|
-
_run.call(configuration)
|
|
41
|
-
return
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
resolved(name, _resolve.call(configuration))
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
private
|
|
48
|
-
|
|
49
|
-
# @since 1.3.0
|
|
50
|
-
# @api private
|
|
51
|
-
#
|
|
52
|
-
# @see Hanami::Component#logger_interface?
|
|
53
|
-
LOGGER_METHODS = %i[info warn debug]
|
|
54
|
-
|
|
55
|
-
# Component name
|
|
56
|
-
#
|
|
57
|
-
# @return [String]
|
|
58
|
-
#
|
|
59
|
-
# @since 0.9.0
|
|
60
|
-
# @api private
|
|
61
|
-
attr_reader :name
|
|
62
|
-
|
|
63
|
-
# Component requirements
|
|
64
|
-
#
|
|
65
|
-
# @return [Array<String>]
|
|
66
|
-
#
|
|
67
|
-
# @since 0.9.0
|
|
68
|
-
# @api private
|
|
69
|
-
attr_reader :requirements
|
|
70
|
-
|
|
71
|
-
# Prepare logic
|
|
72
|
-
#
|
|
73
|
-
# @since 0.9.0
|
|
74
|
-
# @api private
|
|
75
|
-
attr_accessor :_prepare
|
|
76
|
-
|
|
77
|
-
# Resolve logic
|
|
78
|
-
#
|
|
79
|
-
# @since 0.9.0
|
|
80
|
-
# @api private
|
|
81
|
-
attr_accessor :_resolve
|
|
82
|
-
|
|
83
|
-
# Run logic
|
|
84
|
-
#
|
|
85
|
-
# @since 0.9.0
|
|
86
|
-
# @api private
|
|
87
|
-
attr_accessor :_run
|
|
88
|
-
|
|
89
|
-
# Declare component requirement(s)
|
|
90
|
-
#
|
|
91
|
-
# @param components [Array<String>] the name of the other components to
|
|
92
|
-
# depend on
|
|
93
|
-
def requires(*components)
|
|
94
|
-
self.requirements = Array(components).flatten
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
# Declare prepare logic
|
|
98
|
-
#
|
|
99
|
-
# @param blk [Proc] prepare logic
|
|
100
|
-
#
|
|
101
|
-
# @since 0.9.0
|
|
102
|
-
# @api private
|
|
103
|
-
def prepare(&blk)
|
|
104
|
-
self._prepare = blk
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
# Declare resolve logic
|
|
108
|
-
#
|
|
109
|
-
# @param blk [Proc] resolve logic
|
|
110
|
-
#
|
|
111
|
-
# @since 0.9.0
|
|
112
|
-
# @api private
|
|
113
|
-
def resolve(&blk)
|
|
114
|
-
self._resolve = blk
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
# Declare run logic
|
|
118
|
-
#
|
|
119
|
-
# @param blk [Proc] run logic
|
|
120
|
-
#
|
|
121
|
-
# @since 0.9.0
|
|
122
|
-
# @api private
|
|
123
|
-
def run(&blk)
|
|
124
|
-
self._run = blk
|
|
125
|
-
end
|
|
126
|
-
|
|
127
|
-
# Set requirements
|
|
128
|
-
#
|
|
129
|
-
# @param names [Array<String>] the requirements
|
|
130
|
-
#
|
|
131
|
-
# @since 0.9.0
|
|
132
|
-
# @api private
|
|
133
|
-
def requirements=(names)
|
|
134
|
-
@requirements = Array(names).flatten
|
|
135
|
-
end
|
|
136
|
-
|
|
137
|
-
# Resolve the requirements before to execute the logic of this component
|
|
138
|
-
#
|
|
139
|
-
# @since 0.9.0
|
|
140
|
-
# @api private
|
|
141
|
-
#
|
|
142
|
-
# @see Hanami::Components.resolve
|
|
143
|
-
def resolve_requirements
|
|
144
|
-
Components.resolve(requirements)
|
|
145
|
-
end
|
|
146
|
-
|
|
147
|
-
# Get a registered component by name
|
|
148
|
-
#
|
|
149
|
-
# @param name [String] the component name
|
|
150
|
-
#
|
|
151
|
-
# @since 0.9.0
|
|
152
|
-
# @api private
|
|
153
|
-
#
|
|
154
|
-
# @see Hanami::Components.component
|
|
155
|
-
def component(name)
|
|
156
|
-
Components.component(name)
|
|
157
|
-
end
|
|
158
|
-
|
|
159
|
-
# Mark a component as resolved by providing a value or a block.
|
|
160
|
-
#
|
|
161
|
-
# @param name [String] the name of the component to mark as resolved
|
|
162
|
-
# @param value [Object] the optional value of the component
|
|
163
|
-
# @param blk [Proc] the optional block which returning value is associated with the component.
|
|
164
|
-
#
|
|
165
|
-
# @since 0.9.0
|
|
166
|
-
# @api private
|
|
167
|
-
#
|
|
168
|
-
# @see Hanami::Components.resolved
|
|
169
|
-
def resolved(name, value = nil, &blk)
|
|
170
|
-
Components.resolved(name, value, &blk)
|
|
171
|
-
end
|
|
172
|
-
|
|
173
|
-
# Check that instance has logger interfaces (#info, #warn and #debug)
|
|
174
|
-
#
|
|
175
|
-
# @since 1.3.0
|
|
176
|
-
# @api private
|
|
177
|
-
def logger_interface?(instance)
|
|
178
|
-
LOGGER_METHODS.all? { |method| instance.respond_to?(method) }
|
|
179
|
-
end
|
|
180
|
-
end
|
|
181
|
-
end
|
|
182
|
-
end
|