Module: Kuby

Defined in:
lib/kuby/plugin.rb,
lib/kuby.rb,
lib/kuby/tasks.rb,
lib/kuby/docker.rb,
lib/kuby/plugins.rb,
lib/kuby/railtie.rb,
lib/kuby/version.rb,
lib/kuby/cli_base.rb,
lib/kuby/commands.rb,
lib/kuby/definition.rb,
lib/kuby/docker/cli.rb,
lib/kuby/kubernetes.rb,
lib/kuby/middleware.rb,
lib/kuby/docker/spec.rb,
lib/kuby/environment.rb,
lib/kuby/basic_logger.rb,
lib/kuby/docker/image.rb,
lib/kuby/docker/layer.rb,
lib/kuby/docker/alpine.rb,
lib/kuby/docker/debian.rb,
lib/kuby/docker/distro.rb,
lib/kuby/docker/errors.rb,
lib/kuby/trailing_hash.rb,
lib/kuby/docker/packages.rb,
lib/kuby/kubernetes/spec.rb,
lib/kuby/plugin_registry.rb,
lib/kuby/docker/app_image.rb,
lib/kuby/docker/copy_phase.rb,
lib/kuby/docker/docker_uri.rb,
lib/kuby/docker/dockerfile.rb,
lib/kuby/docker/local_tags.rb,
lib/kuby/docker/yarn_phase.rb,
lib/kuby/kubernetes/errors.rb,
lib/kuby/plugins/rails_app.rb,
lib/kuby/docker/credentials.rb,
lib/kuby/docker/layer_stack.rb,
lib/kuby/docker/remote_tags.rb,
lib/kuby/docker/setup_phase.rb,
lib/kuby/docker/assets_phase.rb,
lib/kuby/docker/inline_layer.rb,
lib/kuby/docker/package_list.rb,
lib/kuby/kubernetes/deployer.rb,
lib/kuby/kubernetes/manifest.rb,
lib/kuby/kubernetes/provider.rb,
lib/kuby/docker/bundler_phase.rb,
lib/kuby/docker/package_phase.rb,
lib/kuby/docker/packages/yarn.rb,
lib/kuby/docker/timestamp_tag.rb,
lib/kuby/plugins/nginx_ingress.rb,
lib/kuby/docker/packages/nodejs.rb,
lib/kuby/docker/webserver_phase.rb,
lib/kuby/kubernetes/deploy_task.rb,
lib/kuby/docker/packages/package.rb,
lib/kuby/middleware/health_check.rb,
lib/kuby/plugins/rails_app/mysql.rb,
lib/kuby/docker/timestamped_image.rb,
lib/kuby/kubernetes/docker_config.rb,
lib/kuby/plugins/rails_app/assets.rb,
lib/kuby/plugins/rails_app/plugin.rb,
lib/kuby/plugins/rails_app/sqlite.rb,
lib/kuby/kubernetes/registry_secret.rb,
lib/kuby/plugins/rails_app/database.rb,
lib/kuby/plugins/rails_app/postgres.rb,
lib/kuby/kubernetes/bare_metal_provider.rb,
lib/kuby/plugins/rails_app/assets_image.rb,
lib/kuby/docker/packages/managed_package.rb,
lib/kuby/plugins/rails_app/asset_copy_task.rb,
lib/kuby/kubernetes/docker_desktop_provider.rb,
lib/kuby/plugins/rails_app/rewrite_db_config.rb,
lib/kuby/docker/packages/simple_managed_package.rb

Overview

typed: strict

Defined Under Namespace

Modules: Docker, Kubernetes, Middleware, Plugins Classes: BasicLogger, CLIBase, Commands, Definition, Environment, MissingConfigError, Plugin, PluginRegistry, Railtie, Tasks, TrailingHash, UndefinedEnvironmentError

Constant Summary collapse

DEFAULT_ENV =
'development'.freeze
DEFAULT_DB_USER =
'root'.freeze
DEFAULT_DB_PASSWORD =
'password'.freeze
VERSION =
'0.12.0'.freeze

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.definitionObject (readonly)

Returns the value of attribute definition.



34
35
36
# File 'lib/kuby.rb', line 34

def definition
  @definition
end

.loggerObject



95
96
97
# File 'lib/kuby.rb', line 95

def logger
  @logger ||= BasicLogger.new(STDERR)
end

Class Method Details

.define(name, &block) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/kuby.rb', line 47

def define(name, &block)
  raise 'Kuby is already configured' if @definition

  @definition = Definition.new(name.to_s)
  @definition.instance_eval(&block)

  @definition.environments.each do |_, env|
    env.kubernetes.after_configuration
  end

  @definition.environments.each do |_, env|
    env.configured = true
  end

  @definition
end

.distrosObject



87
88
89
# File 'lib/kuby.rb', line 87

def distros
  @distros ||= {}
end

.envObject



126
127
128
129
130
# File 'lib/kuby.rb', line 126

def env
  ENV.fetch('KUBY_ENV') do
    (@env || Rails.env rescue nil || DEFAULT_ENV).to_s
  end
end

.env=(env_name) ⇒ Object



122
123
124
# File 'lib/kuby.rb', line 122

def env=(env_name)
  @env = env_name.to_s
end

.environment(name = env) ⇒ Object



64
65
66
67
68
69
# File 'lib/kuby.rb', line 64

def environment(name = env)
  definition.environment(name.to_s) || raise(
    UndefinedEnvironmentError, "couldn't find a Kuby environment named "\
    "'#{name}'"
  )
end

.load!(config_file = nil) ⇒ Object



37
38
39
40
41
42
43
44
45
# File 'lib/kuby.rb', line 37

def load!(config_file = nil)
  config_file ||= ENV['KUBY_CONFIG'] || File.join('.', 'kuby.rb')

  unless File.exist?(config_file)
    raise MissingConfigError, "couldn't find Kuby config file at #{config_file}"
  end

  require config_file
end

.packagesObject



118
119
120
# File 'lib/kuby.rb', line 118

def packages
  @packages ||= {}
end

.pluginsObject



91
92
93
# File 'lib/kuby.rb', line 91

def plugins
  @plugins ||= PluginRegistry.new
end

.providersObject



75
76
77
# File 'lib/kuby.rb', line 75

def providers
  @providers ||= {}
end

.register_distro(distro_name, distro_klass) ⇒ Object



83
84
85
# File 'lib/kuby.rb', line 83

def register_distro(distro_name, distro_klass)
  distros[distro_name] = distro_klass
end

.register_package(package_name, package_def = nil) ⇒ Object



99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/kuby.rb', line 99

def register_package(package_name, package_def = nil)
  packages[package_name] = case package_def
    when NilClass
      Kuby::Docker::Packages::SimpleManagedPackage.new(
        package_name
      )
    when String
      Kuby::Docker::Packages::SimpleManagedPackage.new(
        package_def
      )
    when Hash
      Kuby::Docker::Packages::ManagedPackage.new(
        package_name, package_def
      )
    else
      package_def.new(package_name)
  end
end

.register_plugin(*args, **kwargs) ⇒ Object



79
80
81
# File 'lib/kuby.rb', line 79

def register_plugin(*args, **kwargs)
  plugins.register(*args, **kwargs)
end

.register_provider(provider_name, provider_klass) ⇒ Object



71
72
73
# File 'lib/kuby.rb', line 71

def register_provider(provider_name, provider_klass)
  providers[provider_name] = provider_klass
end