hanami 1.0.0 → 1.1.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (167) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +14 -0
  3. data/FEATURES.md +12 -0
  4. data/README.md +3 -0
  5. data/bin/hanami +3 -3
  6. data/hanami.gemspec +9 -9
  7. data/lib/hanami.rb +27 -0
  8. data/lib/hanami/action/routing_helpers.rb +1 -1
  9. data/lib/hanami/application_configuration.rb +0 -8
  10. data/lib/hanami/application_name.rb +1 -3
  11. data/lib/hanami/application_namespace.rb +1 -1
  12. data/lib/hanami/cli/commands.rb +101 -0
  13. data/lib/hanami/cli/commands/assets.rb +16 -0
  14. data/lib/hanami/cli/commands/assets/precompile.rb +42 -0
  15. data/lib/hanami/cli/commands/command.rb +180 -0
  16. data/lib/hanami/cli/commands/console.rb +95 -0
  17. data/lib/hanami/cli/commands/db.rb +30 -0
  18. data/lib/hanami/cli/commands/db/apply.rb +32 -0
  19. data/lib/hanami/cli/commands/db/console.rb +44 -0
  20. data/lib/hanami/cli/commands/db/create.rb +32 -0
  21. data/lib/hanami/cli/commands/db/drop.rb +32 -0
  22. data/lib/hanami/cli/commands/db/migrate.rb +39 -0
  23. data/lib/hanami/cli/commands/db/prepare.rb +32 -0
  24. data/lib/hanami/cli/commands/db/version.rb +32 -0
  25. data/lib/hanami/cli/commands/destroy.rb +26 -0
  26. data/lib/hanami/cli/commands/destroy/action.rb +131 -0
  27. data/lib/hanami/cli/commands/destroy/app.rb +159 -0
  28. data/lib/hanami/cli/commands/destroy/mailer.rb +74 -0
  29. data/lib/hanami/cli/commands/destroy/migration.rb +51 -0
  30. data/lib/hanami/cli/commands/destroy/model.rb +84 -0
  31. data/lib/hanami/cli/commands/generate.rb +28 -0
  32. data/lib/hanami/cli/commands/generate/action.rb +224 -0
  33. data/lib/hanami/cli/commands/generate/action/action.erb +8 -0
  34. data/lib/hanami/cli/commands/generate/action/action_spec.minitest.erb +11 -0
  35. data/lib/hanami/{generators/action/action_spec.rspec.tt → cli/commands/generate/action/action_spec.rspec.erb} +1 -3
  36. data/lib/hanami/cli/commands/generate/action/action_without_view.erb +9 -0
  37. data/lib/hanami/cli/commands/generate/action/view.erb +5 -0
  38. data/lib/hanami/cli/commands/generate/action/view_spec.minitest.erb +15 -0
  39. data/lib/hanami/{generators/action/view_spec.rspec.tt → cli/commands/generate/action/view_spec.rspec.erb} +2 -4
  40. data/lib/hanami/cli/commands/generate/app.rb +231 -0
  41. data/lib/hanami/{generators/app/application.rb.tt → cli/commands/generate/app/application.erb} +6 -6
  42. data/lib/hanami/{generators → cli/commands/generate}/app/favicon.ico +0 -0
  43. data/lib/hanami/{generators/action/template.tt → cli/commands/generate/app/gitkeep.erb} +0 -0
  44. data/lib/hanami/cli/commands/generate/app/layout.erb +7 -0
  45. data/lib/hanami/cli/commands/generate/app/layout_spec.minitest.erb +11 -0
  46. data/lib/hanami/cli/commands/generate/app/layout_spec.rspec.erb +11 -0
  47. data/lib/hanami/{generators/app/config/routes.rb.tt → cli/commands/generate/app/routes.erb} +0 -0
  48. data/lib/hanami/{generators/app/templates/application.html.erb.tt → cli/commands/generate/app/template.erb.erb} +1 -1
  49. data/lib/hanami/{generators/app/templates/application.html.haml.tt → cli/commands/generate/app/template.haml.erb} +1 -1
  50. data/lib/hanami/{generators/app/templates/application.html.slim.tt → cli/commands/generate/app/template.slim.erb} +1 -1
  51. data/lib/hanami/cli/commands/generate/mailer.rb +94 -0
  52. data/lib/hanami/cli/commands/generate/mailer/mailer.erb +7 -0
  53. data/lib/hanami/cli/commands/generate/mailer/mailer_spec.minitest.erb +7 -0
  54. data/lib/hanami/cli/commands/generate/mailer/mailer_spec.rspec.erb +5 -0
  55. data/lib/hanami/cli/commands/generate/migration.rb +41 -0
  56. data/lib/hanami/{generators/migration/migration.rb.tt → cli/commands/generate/migration/migration.erb} +0 -0
  57. data/lib/hanami/cli/commands/generate/model.rb +98 -0
  58. data/lib/hanami/cli/commands/generate/model/entity.erb +2 -0
  59. data/lib/hanami/cli/commands/generate/model/entity_spec.minitest.erb +5 -0
  60. data/lib/hanami/cli/commands/generate/model/entity_spec.rspec.erb +3 -0
  61. data/lib/hanami/{generators/model/migration.rb.tt → cli/commands/generate/model/migration.erb} +1 -1
  62. data/lib/hanami/cli/commands/generate/model/repository.erb +2 -0
  63. data/lib/hanami/cli/commands/generate/model/repository_spec.minitest.erb +5 -0
  64. data/lib/hanami/cli/commands/generate/model/repository_spec.rspec.erb +3 -0
  65. data/lib/hanami/cli/commands/generate/secret.rb +48 -0
  66. data/lib/hanami/cli/commands/new.rb +575 -0
  67. data/lib/hanami/{generators/application/container/.env.development.tt → cli/commands/new/.env.development.erb} +1 -1
  68. data/lib/hanami/{generators/application/container/.env.test.tt → cli/commands/new/.env.test.erb} +1 -1
  69. data/lib/hanami/{generators/app/config/initializers/.gitkeep → cli/commands/new/.gitkeep.erb} +0 -0
  70. data/lib/hanami/cli/commands/new/Gemfile.erb +57 -0
  71. data/lib/hanami/cli/commands/new/README.md.erb +35 -0
  72. data/lib/hanami/{generators/application/container/config.ru.tt → cli/commands/new/config.ru.erb} +0 -0
  73. data/lib/hanami/{generators/application/container/config/boot.rb.tt → cli/commands/new/config/boot.erb} +0 -0
  74. data/lib/hanami/{generators/application/container/config/environment.rb.tt → cli/commands/new/config/environment.erb} +8 -8
  75. data/lib/hanami/{generators/application/container/gitignore.tt → cli/commands/new/gitignore.erb} +0 -0
  76. data/lib/hanami/{generators/application/container/gitignore_with_sqlite.tt → cli/commands/new/gitignore_with_sqlite.erb} +0 -0
  77. data/lib/hanami/cli/commands/new/hanamirc.erb +3 -0
  78. data/lib/hanami/cli/commands/new/lib/project.erb +2 -0
  79. data/lib/hanami/{generators/application/container/Rakefile.minitest.tt → cli/commands/new/minitest/Rakefile.erb} +0 -0
  80. data/lib/hanami/{generators/application/container/features_helper.rb.minitest.tt → cli/commands/new/minitest/features_helper.erb} +0 -0
  81. data/lib/hanami/{generators/application/container/spec_helper.rb.minitest.tt → cli/commands/new/minitest/spec_helper.erb} +0 -0
  82. data/lib/hanami/{generators/application/container/Rakefile.rspec.tt → cli/commands/new/rspec/Rakefile.erb} +0 -0
  83. data/lib/hanami/{generators/application/container/capybara.rb.rspec.tt → cli/commands/new/rspec/capybara.erb} +0 -0
  84. data/lib/hanami/{generators/application/container/features_helper.rb.rspec.tt → cli/commands/new/rspec/features_helper.erb} +0 -0
  85. data/lib/hanami/{generators/application/container/rspec.rspec.tt → cli/commands/new/rspec/rspec.erb} +0 -0
  86. data/lib/hanami/{generators/application/container/spec_helper.rb.rspec.tt → cli/commands/new/rspec/spec_helper.erb} +0 -0
  87. data/lib/hanami/{generators/application/container/.gitignore → cli/commands/new/schema.sql.erb} +0 -0
  88. data/lib/hanami/cli/commands/project.rb +421 -0
  89. data/lib/hanami/cli/commands/routes.rb +21 -0
  90. data/lib/hanami/cli/commands/server.rb +39 -0
  91. data/lib/hanami/cli/commands/templates.rb +31 -0
  92. data/lib/hanami/cli/commands/version.rb +19 -0
  93. data/lib/hanami/common_logger.rb +14 -4
  94. data/lib/hanami/components.rb +39 -1
  95. data/lib/hanami/components/components.rb +36 -1
  96. data/lib/hanami/config/sessions.rb +1 -1
  97. data/lib/hanami/environment.rb +20 -50
  98. data/lib/hanami/hanamirc.rb +7 -30
  99. data/lib/hanami/middleware.rb +0 -26
  100. data/lib/hanami/static.rb +1 -1
  101. data/lib/hanami/templates/welcome.html.erb +1 -1
  102. data/lib/hanami/version.rb +1 -1
  103. data/lib/hanami/welcome.rb +1 -11
  104. metadata +125 -135
  105. data/lib/hanami/cli.rb +0 -154
  106. data/lib/hanami/cli_base.rb +0 -49
  107. data/lib/hanami/cli_sub_commands/assets.rb +0 -24
  108. data/lib/hanami/cli_sub_commands/db.rb +0 -138
  109. data/lib/hanami/cli_sub_commands/destroy.rb +0 -115
  110. data/lib/hanami/cli_sub_commands/generate.rb +0 -150
  111. data/lib/hanami/commands/apps.rb +0 -4
  112. data/lib/hanami/commands/assets/precompile.rb +0 -26
  113. data/lib/hanami/commands/command.rb +0 -77
  114. data/lib/hanami/commands/console.rb +0 -107
  115. data/lib/hanami/commands/db/apply.rb +0 -19
  116. data/lib/hanami/commands/db/console.rb +0 -41
  117. data/lib/hanami/commands/db/create.rb +0 -19
  118. data/lib/hanami/commands/db/drop.rb +0 -19
  119. data/lib/hanami/commands/db/migrate.rb +0 -30
  120. data/lib/hanami/commands/db/prepare.rb +0 -19
  121. data/lib/hanami/commands/db/version.rb +0 -19
  122. data/lib/hanami/commands/generate/abstract.rb +0 -76
  123. data/lib/hanami/commands/generate/action.rb +0 -322
  124. data/lib/hanami/commands/generate/app.rb +0 -154
  125. data/lib/hanami/commands/generate/mailer.rb +0 -131
  126. data/lib/hanami/commands/generate/migration.rb +0 -75
  127. data/lib/hanami/commands/generate/model.rb +0 -132
  128. data/lib/hanami/commands/generate/secret_token.rb +0 -37
  129. data/lib/hanami/commands/new/abstract.rb +0 -178
  130. data/lib/hanami/commands/new/app.rb +0 -129
  131. data/lib/hanami/commands/new/container.rb +0 -119
  132. data/lib/hanami/commands/routes.rb +0 -26
  133. data/lib/hanami/commands/server.rb +0 -32
  134. data/lib/hanami/generators/action/action.rb.tt +0 -8
  135. data/lib/hanami/generators/action/action_spec.minitest.tt +0 -12
  136. data/lib/hanami/generators/action/action_without_view.rb.tt +0 -9
  137. data/lib/hanami/generators/action/view.rb.tt +0 -5
  138. data/lib/hanami/generators/action/view_spec.minitest.tt +0 -16
  139. data/lib/hanami/generators/app/.gitkeep.tt +0 -1
  140. data/lib/hanami/generators/app/views/application_layout.rb.tt +0 -7
  141. data/lib/hanami/generators/application/container/.gitkeep +0 -1
  142. data/lib/hanami/generators/application/container/Gemfile.tt +0 -56
  143. data/lib/hanami/generators/application/container/config/initializers/.gitkeep +0 -0
  144. data/lib/hanami/generators/application/container/db/.gitkeep +0 -1
  145. data/lib/hanami/generators/application/container/hanamirc.tt +0 -4
  146. data/lib/hanami/generators/application/container/lib/chirp/entities/.gitkeep +0 -1
  147. data/lib/hanami/generators/application/container/lib/chirp/mailers/.gitkeep +0 -0
  148. data/lib/hanami/generators/application/container/lib/chirp/mailers/templates/.gitkeep +0 -0
  149. data/lib/hanami/generators/application/container/lib/chirp/repositories/.gitkeep +0 -1
  150. data/lib/hanami/generators/application/container/lib/project.rb.tt +0 -2
  151. data/lib/hanami/generators/application/container/schema.sql.tt +0 -0
  152. data/lib/hanami/generators/database_config.rb +0 -114
  153. data/lib/hanami/generators/generatable.rb +0 -69
  154. data/lib/hanami/generators/generator.rb +0 -52
  155. data/lib/hanami/generators/mailer/mailer.rb.tt +0 -7
  156. data/lib/hanami/generators/mailer/mailer_spec.rb.minitest.tt +0 -7
  157. data/lib/hanami/generators/mailer/mailer_spec.rb.rspec.tt +0 -5
  158. data/lib/hanami/generators/mailer/template.html.tt +0 -0
  159. data/lib/hanami/generators/mailer/template.txt.tt +0 -0
  160. data/lib/hanami/generators/model/entity.rb.tt +0 -2
  161. data/lib/hanami/generators/model/entity_spec.minitest.tt +0 -5
  162. data/lib/hanami/generators/model/entity_spec.rspec.tt +0 -3
  163. data/lib/hanami/generators/model/repository.rb.tt +0 -2
  164. data/lib/hanami/generators/model/repository_spec.minitest.tt +0 -5
  165. data/lib/hanami/generators/model/repository_spec.rspec.tt +0 -3
  166. data/lib/hanami/generators/template_engine.rb +0 -44
  167. data/lib/hanami/generators/test_framework.rb +0 -55
@@ -1,150 +0,0 @@
1
- require 'hanami/routing/route'
2
- require 'hanami/commands/generate/action'
3
- require 'hanami/commands/generate/mailer'
4
-
5
- module Hanami
6
- class CliSubCommands
7
- # A set of generator subcommands
8
- #
9
- # It is run with:
10
- #
11
- # `bundle exec hanami generate`
12
- #
13
- # @since 0.6.0
14
- # @api private
15
- class Generate < Thor
16
- extend CliBase
17
- include Thor::Actions
18
-
19
- namespace :generate
20
-
21
- desc 'action APPLICATION_NAME CONTROLLER_NAME#ACTION_NAME', 'Generate a hanami action'
22
- long_desc <<-EOS
23
- `hanami generate action` generates an an action, view and template along with specs and a route.
24
-
25
- For Application architecture the application name is 'app'. For Container architecture the default application is called 'web'.
26
-
27
- > $ hanami generate action app cars#index
28
-
29
- > $ hanami generate action other-app cars#index
30
-
31
- > $ hanami generate action web cars#create --method=post
32
- EOS
33
- method_option :method, desc: "The HTTP method to be used for the generated route. Default is #{Hanami::Commands::Generate::Action::DEFAULT_HTTP_METHOD}. Must be one of (#{Hanami::Routing::Route::VALID_HTTP_VERBS.join('/')})"
34
- method_option :url, desc: 'Relative URL for action, will be used for the route', default: nil
35
- method_option :test, desc: 'Defines the testing Framework to be used. Default is defined through your .hanamirc file.'
36
- method_option :skip_view, desc: 'Skip the generation of the view. Also skips template generation.', default: false, type: :boolean
37
- method_option :template, desc: 'Extension to be used for the generated template. Default is defined through your .hanamirc file.'
38
- # @since 0.6.0
39
- # @api private
40
- def actions(application_name = nil, controller_and_action_name)
41
- if Hanami::Environment.new(options).container? && application_name.nil?
42
- msg = "ERROR: \"hanami generate action\" was called with arguments [\"#{controller_and_action_name}\"]\n" \
43
- "Usage: \"hanami generate action APPLICATION_NAME CONTROLLER_NAME#ACTION_NAME\""
44
- fail Error, msg
45
- end
46
-
47
- if options[:help]
48
- invoke :help, ['action']
49
- else
50
- Hanami::Commands::Generate::Action.new(options, application_name, controller_and_action_name).start
51
- end
52
- end
53
-
54
- desc 'migration NAME', 'Generate a migration'
55
- long_desc <<-EOS
56
- `hanami generate migration` will generate an empty migration file.
57
-
58
- > $ hanami generate migration do_something
59
- EOS
60
- # @api private
61
- def migration(name)
62
- if options[:help]
63
- invoke :help, ['migration']
64
- else
65
- require 'hanami/commands/generate/migration'
66
- Hanami::Commands::Generate::Migration.new(options, name).start
67
- end
68
- end
69
-
70
- desc 'model NAME', 'Generate an entity'
71
- long_desc <<-EOS
72
- `hanami generate model` will generate an entity along with repository
73
- and corresponding tests. The name of the model can contain slashes to
74
- indicate module names.
75
-
76
- > $ hanami generate model car
77
-
78
- > $ hanami generate model vehicles/car
79
- EOS
80
- method_option :test, desc: 'Defines the testing Framework to be used. Default is defined through your .hanamirc file.'
81
- method_option :skip_migration, desc: 'Skips the generation of a migration to create the model\'s table', default: false, type: :boolean
82
- # @api private
83
- def model(name)
84
- if options[:help]
85
- invoke :help, ['model']
86
- else
87
- require 'hanami/commands/generate/model'
88
- Hanami::Commands::Generate::Model.new(options, name).start
89
- end
90
- end
91
-
92
- desc 'mailer NAME', 'Generate a mailer'
93
- long_desc <<-EOS
94
- `hanami generate mailer` will generate an empty mailer, along with templates and specs.
95
-
96
- > $ hanami generate mailer forgot_password
97
- > $ hanami generate mailer forgot_password --to "'log@bookshelf.com'" --from "'support@bookshelf.com'" --subject "'New Password'"
98
- EOS
99
- method_option :to, desc: 'Sender email', default: Hanami::Commands::Generate::Mailer::DEFAULT_TO
100
- method_option :from, desc: 'Sendee email', default: Hanami::Commands::Generate::Mailer::DEFAULT_FROM
101
- method_option :subject, desc: 'Email subject', default: Hanami::Commands::Generate::Mailer::DEFAULT_SUBJECT
102
- # @api private
103
- def mailer(name)
104
- if options[:help]
105
- invoke :help, ['mailer']
106
- else
107
- Hanami::Commands::Generate::Mailer.new(options, name).start
108
- end
109
- end
110
-
111
- desc 'app APPLICATION_NAME', 'Generate an app'
112
- long_desc <<-EOS
113
- `hanami generate app` creates a new app inside the 'apps' directory.
114
-
115
- It can only be called for hanami applications with container architecture.
116
-
117
- > $ hanami generate app admin
118
-
119
- > $ hanami generate app reporting --application_base_url=/reports
120
- EOS
121
- method_option :application_base_url, desc: 'Base URL for the new app. If missing, then it is inferred from APPLICATION_NAME'
122
- # @api private
123
- def app(application_name)
124
- if options[:help]
125
- invoke :help, ['app']
126
- else
127
- require 'hanami/commands/generate/app'
128
- Hanami::Commands::Generate::App.new(options, application_name).start
129
- end
130
- end
131
-
132
- desc 'secret APPLICATION_NAME', 'Print a fresh secret token for production'
133
- long_desc <<-EOS
134
- `hanami generate secret` prints a new secret for a given app
135
-
136
- > $ hanami generate secret web
137
-
138
- EOS
139
- # @api private
140
- def secret(application_name = nil)
141
- if options[:help]
142
- invoke :help, ['secret']
143
- else
144
- require 'hanami/commands/generate/secret_token'
145
- Hanami::Commands::Generate::SecretToken.new(application_name).start
146
- end
147
- end
148
- end
149
- end
150
- end
@@ -1,4 +0,0 @@
1
- module Hanami
2
- module Components
3
- end
4
- end
@@ -1,26 +0,0 @@
1
- require 'hanami/assets'
2
- require 'hanami/commands/command'
3
-
4
- module Hanami
5
- module Commands
6
- # @api private
7
- class Assets
8
- # @api private
9
- class Precompile < Command
10
- requires 'apps.assets.configurations'
11
-
12
- # @api private
13
- def start
14
- Hanami::Assets.precompile(configurations)
15
- end
16
-
17
- private
18
-
19
- # @api private
20
- def configurations
21
- requirements['apps.assets.configurations']
22
- end
23
- end
24
- end
25
- end
26
- end
@@ -1,77 +0,0 @@
1
- require 'hanami'
2
- require 'hanami/environment'
3
- require 'hanami/components'
4
- require 'concurrent'
5
-
6
- module Hanami
7
- module Commands
8
- # Abstract command
9
- #
10
- # @since 0.9.0
11
- class Command
12
- # @since 0.9.0
13
- # @api private
14
- def self.inherited(component)
15
- super
16
-
17
- component.class_eval do
18
- @_requirements = Concurrent::Array.new
19
- extend ClassMethods
20
- end
21
- end
22
-
23
- # Class level interface
24
- #
25
- # @since 0.9.0
26
- # @api private
27
- module ClassMethods
28
- # @since 0.9.0
29
- # @api private
30
- def register_as(name)
31
- Hanami::Components.register(name, self)
32
- end
33
-
34
- # @since 0.9.0
35
- # @api private
36
- def requires(*names)
37
- requirements.concat(names)
38
- end
39
-
40
- # @since 0.9.0
41
- # @api private
42
- def requirements
43
- @_requirements
44
- end
45
- end
46
-
47
- # @param options [Hash] Environment's options
48
- #
49
- # @since 0.9.0
50
- # @api private
51
- def initialize(options)
52
- @environment = Hanami::Environment.new(options)
53
- @environment.require_project_environment
54
- @configuration = Hanami.configuration
55
-
56
- requirements.resolved('environment', environment)
57
- requirements.resolve(self.class.requirements)
58
- end
59
-
60
- private
61
-
62
- # @since 0.9.0
63
- # @api private
64
- attr_reader :environment
65
-
66
- # @since 0.9.0
67
- # @api private
68
- attr_reader :configuration
69
-
70
- # @since 0.9.0
71
- # @api private
72
- def requirements
73
- Hanami::Components
74
- end
75
- end
76
- end
77
- end
@@ -1,107 +0,0 @@
1
- require 'hanami/commands/command'
2
-
3
- module Hanami
4
- # @api private
5
- module Commands
6
- # REPL that supports different engines.
7
- #
8
- # It is run with:
9
- #
10
- # `bundle exec hanami console`
11
- #
12
- # @since 0.1.0
13
- # @api private
14
- class Console < Command
15
- requires 'all'
16
-
17
- # Implements console code reloading
18
- #
19
- # @since 0.2.0
20
- module CodeReloading
21
- # @since 0.2.0
22
- def reload!
23
- puts 'Reloading...'
24
- Kernel.exec "#{$PROGRAM_NAME} console"
25
- end
26
- end
27
-
28
- # Supported engines
29
- #
30
- # @since 0.2.0
31
- # @api private
32
- ENGINES = {
33
- 'pry' => 'Pry',
34
- 'ripl' => 'Ripl',
35
- 'irb' => 'IRB'
36
- }.freeze
37
-
38
- # @api private
39
- DEFAULT_ENGINE = ['irb'].freeze
40
-
41
- # @since 0.1.0
42
- # @api private
43
- attr_reader :options
44
-
45
- # @param options [Hash] Environment's options
46
- #
47
- # @since 0.1.0
48
- # @api private
49
- #
50
- # @see Hanami::Environment#initialize
51
- def initialize(options)
52
- super(options)
53
-
54
- @options = @environment.to_options
55
- end
56
-
57
- # @since 0.1.0
58
- # @api private
59
- def start
60
- prepare
61
- engine.start
62
- end
63
-
64
- # @since 0.1.0
65
- # @api private
66
- def engine
67
- load_engine options.fetch(:engine) { engine_lookup }
68
- end
69
-
70
- private
71
-
72
- # @since 0.9.0
73
- # @api private
74
- def prepare
75
- # Clear out ARGV so Pry/IRB don't attempt to parse the rest
76
- ARGV.shift until ARGV.empty?
77
-
78
- # Add convenience methods to the main:Object binding
79
- TOPLEVEL_BINDING.eval('self').__send__(:include, CodeReloading)
80
- end
81
-
82
- # @since 0.1.0
83
- # @api private
84
- def engine_lookup
85
- (ENGINES.find { |_, klass| Object.const_defined?(klass) } || DEFAULT_ENGINE).first
86
- end
87
-
88
- # @since 0.1.0
89
- # @api private
90
- #
91
- # rubocop:disable Lint/HandleExceptions
92
- # rubocop:disable Lint/EnsureReturn
93
- def load_engine(engine)
94
- require engine
95
- rescue LoadError
96
- ensure
97
- return Object.const_get(
98
- ENGINES.fetch(engine) do
99
- raise ArgumentError.new("Unknown console engine: `#{engine}'")
100
- end
101
- )
102
- end
103
- # rubocop:enable Lint/EnsureReturn
104
- # rubocop:enable Lint/HandleExceptions
105
- end
106
- end
107
- end
@@ -1,19 +0,0 @@
1
- require 'hanami/commands/command'
2
-
3
- module Hanami
4
- module Commands
5
- # @api private
6
- class DB
7
- # @api private
8
- class Apply < Command
9
- requires 'model.sql'
10
-
11
- # @api private
12
- def start
13
- require 'hanami/model/migrator'
14
- Hanami::Model::Migrator.apply
15
- end
16
- end
17
- end
18
- end
19
- end
@@ -1,41 +0,0 @@
1
- require 'hanami/utils/class'
2
- require 'hanami/commands/command'
3
-
4
- module Hanami
5
- module Commands
6
- # @api private
7
- class DB
8
- # @api private
9
- class Console < Command
10
- requires 'model.sql'
11
-
12
- # @api private
13
- def initialize(options, name)
14
- super(options)
15
- @name = name
16
- end
17
-
18
- # @api private
19
- def start
20
- exec console.connection_string
21
- end
22
-
23
- private
24
-
25
- # @api private
26
- attr_reader :name
27
-
28
- # @api private
29
- def configuration
30
- Hanami::Components['model.configuration']
31
- end
32
-
33
- # @api private
34
- def console
35
- require 'hanami/model/sql/console'
36
- Hanami::Model::Sql::Console.new(configuration.url)
37
- end
38
- end
39
- end
40
- end
41
- end
@@ -1,19 +0,0 @@
1
- require 'hanami/commands/command'
2
-
3
- module Hanami
4
- module Commands
5
- # @api private
6
- class DB
7
- # @api private
8
- class Create < Command
9
- requires 'model.configuration'
10
-
11
- # @api private
12
- def start
13
- require 'hanami/model/migrator'
14
- Hanami::Model::Migrator.create
15
- end
16
- end
17
- end
18
- end
19
- end