kuby-core 0.17.0 → 0.18.0

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.
Files changed (91) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +44 -0
  3. data/Gemfile +6 -2
  4. data/Rakefile +5 -3
  5. data/bin/tapioca +29 -0
  6. data/kuby-core.gemspec +9 -11
  7. data/lib/kuby/basic_logger.rb +34 -34
  8. data/lib/kuby/cli_base.rb +43 -43
  9. data/lib/kuby/commands.rb +94 -11
  10. data/lib/kuby/definition.rb +12 -12
  11. data/lib/kuby/dependable.rb +20 -0
  12. data/lib/kuby/dependency.rb +14 -0
  13. data/lib/kuby/docker/alpine.rb +10 -10
  14. data/lib/kuby/docker/app_image.rb +11 -11
  15. data/lib/kuby/docker/app_phase.rb +36 -0
  16. data/lib/kuby/docker/assets_phase.rb +2 -2
  17. data/lib/kuby/docker/bundler_phase.rb +42 -40
  18. data/lib/kuby/docker/cli.rb +71 -43
  19. data/lib/kuby/docker/copy_phase.rb +7 -7
  20. data/lib/kuby/docker/credentials.rb +1 -0
  21. data/lib/kuby/docker/debian.rb +10 -10
  22. data/lib/kuby/docker/distro.rb +13 -13
  23. data/lib/kuby/docker/docker_uri.rb +20 -20
  24. data/lib/kuby/docker/dockerfile.rb +48 -39
  25. data/lib/kuby/docker/image.rb +66 -54
  26. data/lib/kuby/docker/inline_layer.rb +4 -4
  27. data/lib/kuby/docker/layer.rb +6 -6
  28. data/lib/kuby/docker/layer_stack.rb +35 -35
  29. data/lib/kuby/docker/local_tags.rb +16 -16
  30. data/lib/kuby/docker/package_list.rb +16 -16
  31. data/lib/kuby/docker/package_phase.rb +16 -16
  32. data/lib/kuby/docker/packages/managed_package.rb +13 -13
  33. data/lib/kuby/docker/packages/nodejs.rb +5 -5
  34. data/lib/kuby/docker/packages/package.rb +8 -8
  35. data/lib/kuby/docker/packages/simple_managed_package.rb +7 -7
  36. data/lib/kuby/docker/packages/yarn.rb +6 -6
  37. data/lib/kuby/docker/remote_tags.rb +16 -16
  38. data/lib/kuby/docker/setup_phase.rb +18 -20
  39. data/lib/kuby/docker/spec.rb +93 -72
  40. data/lib/kuby/docker/timestamp_tag.rb +16 -11
  41. data/lib/kuby/docker/timestamped_image.rb +59 -40
  42. data/lib/kuby/docker/webserver_phase.rb +20 -20
  43. data/lib/kuby/docker/yarn_phase.rb +29 -5
  44. data/lib/kuby/docker.rb +2 -1
  45. data/lib/kuby/kubernetes/bare_metal_provider.rb +9 -9
  46. data/lib/kuby/kubernetes/deployer.rb +22 -10
  47. data/lib/kuby/kubernetes/docker_config.rb +1 -0
  48. data/lib/kuby/kubernetes/provider.rb +1 -0
  49. data/lib/kuby/kubernetes/spec.rb +47 -7
  50. data/lib/kuby/plugin.rb +22 -1
  51. data/lib/kuby/plugins/nginx_ingress.rb +8 -6
  52. data/lib/kuby/plugins/rails_app/assets.rb +16 -4
  53. data/lib/kuby/plugins/rails_app/assets_image.rb +17 -8
  54. data/lib/kuby/plugins/rails_app/crdb/plugin.rb +473 -0
  55. data/lib/kuby/plugins/rails_app/crdb.rb +9 -0
  56. data/lib/kuby/plugins/rails_app/database.rb +12 -8
  57. data/lib/kuby/plugins/rails_app/generators/kuby.rb +17 -16
  58. data/lib/kuby/plugins/rails_app/plugin.rb +29 -18
  59. data/lib/kuby/plugins/rails_app/sqlite.rb +7 -3
  60. data/lib/kuby/plugins/rails_app/tasks.rake +25 -12
  61. data/lib/kuby/plugins/rails_app.rb +1 -0
  62. data/lib/kuby/plugins/system.rb +16 -0
  63. data/lib/kuby/plugins.rb +1 -0
  64. data/lib/kuby/railtie.rb +31 -1
  65. data/lib/kuby/tasks.rb +72 -5
  66. data/lib/kuby/trailing_hash.rb +2 -2
  67. data/lib/kuby/utils/sem_ver/constraint.rb +68 -0
  68. data/lib/kuby/utils/sem_ver/constraint_set.rb +25 -0
  69. data/lib/kuby/utils/sem_ver/version.rb +49 -0
  70. data/lib/kuby/utils/sem_ver.rb +17 -0
  71. data/lib/kuby/utils/which.rb +65 -0
  72. data/lib/kuby/utils.rb +7 -1
  73. data/lib/kuby/version.rb +1 -1
  74. data/lib/kuby.rb +37 -2
  75. data/rbi/kuby-core.rbi +2128 -0
  76. data/spec/docker/spec_spec.rb +50 -26
  77. data/spec/dummy/app/channels/application_cable/channel.rb +2 -1
  78. data/spec/dummy/app/channels/application_cable/connection.rb +2 -1
  79. data/spec/dummy/app/controllers/application_controller.rb +2 -1
  80. data/spec/dummy/app/jobs/application_job.rb +2 -1
  81. data/spec/dummy/app/mailers/application_mailer.rb +2 -1
  82. data/spec/dummy/app/models/application_record.rb +2 -1
  83. data/spec/dummy/config/application.rb +2 -1
  84. data/spec/dummy/config/initializers/wrap_parameters.rb +2 -1
  85. data/spec/dummy/config/routes.rb +2 -1
  86. data/spec/dummy/test/application_system_test_case.rb +2 -1
  87. data/spec/dummy/test/channels/application_cable/connection_test.rb +2 -1
  88. data/spec/spec_helper.rb +13 -1
  89. metadata +44 -39
  90. data/lib/kuby/plugins/rails_app/mysql.rb +0 -158
  91. data/lib/kuby/plugins/rails_app/postgres.rb +0 -163
@@ -1,163 +0,0 @@
1
- # typed: false
2
-
3
- require 'kube-dsl'
4
- require 'kuby/kube-db'
5
-
6
- module Kuby
7
- module Plugins
8
- module RailsApp
9
- class Postgres < ::Kuby::Plugin
10
- ROLE = 'web'.freeze
11
-
12
- attr_reader :environment, :configs
13
-
14
- def initialize(environment, configs)
15
- @environment = environment
16
- @configs = configs
17
-
18
- user(config['username'])
19
- password(config['password'])
20
- end
21
-
22
- def requires_credentials?
23
- true
24
- end
25
-
26
- def name
27
- :postgres
28
- end
29
-
30
- def resources
31
- @resources ||= [secret, database]
32
- end
33
-
34
- def after_configuration
35
- environment.docker.package_phase.add(:postgres_dev)
36
- environment.docker.package_phase.add(:postgres_client)
37
- end
38
-
39
- def host
40
- # host is the same as the name thanks to k8s DNS
41
- @host ||= database.metadata.name
42
- end
43
-
44
- def rewritten_configs
45
- # deep dup
46
- @rewritten_configs ||= Marshal.load(Marshal.dump(configs)).tap do |new_configs|
47
- new_configs[environment.name]['host'] = host
48
- end
49
- end
50
-
51
- def user(user)
52
- secret do
53
- data do
54
- set :POSTGRES_USER, user
55
- end
56
- end
57
- end
58
-
59
- def password(password)
60
- secret do
61
- data do
62
- set :POSTGRES_PASSWORD, password
63
- end
64
- end
65
- end
66
-
67
- def storage(amount)
68
- database do
69
- spec do
70
- storage do
71
- resources do
72
- requests do
73
- set :storage, amount
74
- end
75
- end
76
- end
77
- end
78
- end
79
- end
80
-
81
- def secret(&block)
82
- context = self
83
-
84
- @secret ||= KubeDSL.secret do
85
- metadata do
86
- name "#{context.base_name}-postgres-secret"
87
- namespace context.kubernetes.namespace.metadata.name
88
- end
89
-
90
- type 'Opaque'
91
- end
92
-
93
- @secret.instance_eval(&block) if block
94
- @secret
95
- end
96
-
97
- def database(&block)
98
- context = self
99
-
100
- @database ||= Kuby::KubeDB.postgres do
101
- api_version 'kubedb.com/v1alpha1'
102
-
103
- metadata do
104
- name "#{context.base_name}-postgres"
105
- namespace context.kubernetes.namespace.metadata.name
106
- end
107
-
108
- spec do
109
- database_secret do
110
- secret_name context.secret.metadata.name
111
- end
112
-
113
- version '11.2'
114
- standby_mode 'Hot'
115
- streaming_mode 'asynchronous'
116
- storage_type 'Durable'
117
-
118
- storage do
119
- storage_class_name context.kubernetes.provider.storage_class_name
120
- access_modes ['ReadWriteOnce']
121
-
122
- resources do
123
- requests do
124
- add :storage, '10Gi'
125
- end
126
- end
127
- end
128
-
129
- termination_policy 'DoNotTerminate'
130
- end
131
- end
132
-
133
- @database.instance_eval(&block) if block
134
- @database
135
- end
136
-
137
- def base_name
138
- @base_name ||= "#{kubernetes.selector_app}-#{ROLE}"
139
- end
140
-
141
- def kubernetes
142
- environment.kubernetes
143
- end
144
-
145
- private
146
-
147
- def config
148
- configs[environment.name]
149
- end
150
- end
151
- end
152
- end
153
- end
154
-
155
- Kuby.register_package(:postgres_dev,
156
- debian: 'postgresql-client',
157
- alpine: 'postgresql-dev'
158
- )
159
-
160
- Kuby.register_package(:postgres_client,
161
- debian: 'postgresql-client',
162
- alpine: 'postgresql-client'
163
- )