Module: Rails::Generators::Devcontainer
Relationships & Source Files | |
Extension / Inclusion / Inheritance Descendants | |
Included In:
| |
Defined in: | railties/lib/rails/generators/devcontainer.rb |
Instance Attribute Summary
- #devcontainer_needs_redis? ⇒ Boolean readonly private
Instance Method Summary
- #db_feature_for_devcontainer(database = ) private
- #db_features private
- #db_name_for_devcontainer(database = ) private
- #db_package_for_dockerfile(database = ) private
- #db_port_for_devcontainer(database = ) private
- #db_service_for_devcontainer(database = ) private
- #db_service_names private
- #db_volume_name_for_devcontainer(database = ) private
- #devcontainer_db_service_yaml(**options) private
- #devcontainer_dependencies private
- #devcontainer_features private
- #devcontainer_forward_ports private
- #devcontainer_mounts private
- #devcontainer_variables private
- #devcontainer_volumes private
- #local_rails_mount private
- #mariadb_service private
- #mysql_feature private
- #mysql_service private
- #postgres_feature private
- #postgres_service private
Instance Attribute Details
#devcontainer_needs_redis? ⇒ Boolean
(readonly, private)
[ GitHub ]
# File 'railties/lib/rails/generators/devcontainer.rb', line 77
def devcontainer_needs_redis? !( .skip_action_cable? && .skip_active_job?) end
Instance Method Details
#db_feature_for_devcontainer(database = ) (private)
[ GitHub ]# File 'railties/lib/rails/generators/devcontainer.rb', line 125
def db_feature_for_devcontainer(database = [:database]) case database when "mysql" then mysql_feature when "postgresql" then postgres_feature end end
#db_features (private)
[ GitHub ]# File 'railties/lib/rails/generators/devcontainer.rb', line 188
def db_features [ "ghcr.io/rails/devcontainer/features/mysql-client", "ghcr.io/rails/devcontainer/features/postgres-client" ] end
#db_name_for_devcontainer(database = ) (private)
[ GitHub ]# File 'railties/lib/rails/generators/devcontainer.rb', line 88
def db_name_for_devcontainer(database = [:database]) case database when "mysql" then "mysql" when "trilogy" then "mariadb" when "postgresql" then "postgres" end end
#db_package_for_dockerfile(database = ) (private)
[ GitHub ]# File 'railties/lib/rails/generators/devcontainer.rb', line 104
def db_package_for_dockerfile(database = [:database]) case database when "mysql" then "default-libmysqlclient-dev" when "postgresql" then "libpq-dev" end end
#db_port_for_devcontainer(database = ) (private)
[ GitHub ]# File 'railties/lib/rails/generators/devcontainer.rb', line 81
def db_port_for_devcontainer(database = [:database]) case database when "mysql", "trilogy" then 3306 when "postgresql" then 5432 end end
#db_service_for_devcontainer(database = ) (private)
[ GitHub ]# File 'railties/lib/rails/generators/devcontainer.rb', line 117
def db_service_for_devcontainer(database = [:database]) case database when "mysql" then mysql_service when "trilogy" then mariadb_service when "postgresql" then postgres_service end end
#db_service_names (private)
[ GitHub ]# File 'railties/lib/rails/generators/devcontainer.rb', line 176
def db_service_names ["mysql", "mariadb", "postgres"] end
#db_volume_name_for_devcontainer(database = ) (private)
[ GitHub ]# File 'railties/lib/rails/generators/devcontainer.rb', line 96
def db_volume_name_for_devcontainer(database = [:database]) case database when "mysql" then "mysql-data" when "trilogy" then "mariadb-data" when "postgresql" then "postgres-data" end end
#devcontainer_db_service_yaml(**options) (private)
[ GitHub ]# File 'railties/lib/rails/generators/devcontainer.rb', line 111
def devcontainer_db_service_yaml(** ) return unless service = db_service_for_devcontainer service.to_yaml(** )[4..-1] end
#devcontainer_dependencies (private)
[ GitHub ]# File 'railties/lib/rails/generators/devcontainer.rb', line 7
def devcontainer_dependencies return @devcontainer_dependencies if @devcontainer_dependencies @devcontainer_dependencies = [] @devcontainer_dependencies << "selenium" if depends_on_system_test? @devcontainer_dependencies << "redis" if devcontainer_needs_redis? @devcontainer_dependencies << db_name_for_devcontainer if db_name_for_devcontainer @devcontainer_dependencies end
#devcontainer_features (private)
[ GitHub ]# File 'railties/lib/rails/generators/devcontainer.rb', line 42
def devcontainer_features return @devcontainer_features if @devcontainer_features @devcontainer_features = { "ghcr.io/devcontainers/features/github-cli:1" => {} } @devcontainer_features["ghcr.io/rails/devcontainer/features/activestorage"] = {} unless [:skip_active_storage] @devcontainer_features["ghcr.io/devcontainers/features/node:1"] = {} if using_node? @devcontainer_features.merge!(db_feature_for_devcontainer) if db_feature_for_devcontainer @devcontainer_features end
#devcontainer_forward_ports (private)
[ GitHub ]# File 'railties/lib/rails/generators/devcontainer.rb', line 67
def devcontainer_forward_ports return @devcontainer_forward_ports if @devcontainer_forward_ports @devcontainer_forward_ports = [3000] @devcontainer_forward_ports << db_port_for_devcontainer if db_port_for_devcontainer @devcontainer_forward_ports << 6379 if devcontainer_needs_redis? @devcontainer_forward_ports end
#devcontainer_mounts (private)
[ GitHub ]# File 'railties/lib/rails/generators/devcontainer.rb', line 57
def devcontainer_mounts return @devcontainer_mounts if @devcontainer_mounts @devcontainer_mounts = [] @devcontainer_mounts << local_rails_mount if .dev? @devcontainer_mounts end
#devcontainer_variables (private)
[ GitHub ]# File 'railties/lib/rails/generators/devcontainer.rb', line 18
def devcontainer_variables return @devcontainer_variables if @devcontainer_variables @devcontainer_variables = {} @devcontainer_variables["CAPYBARA_SERVER_PORT"] = "45678" if depends_on_system_test? @devcontainer_variables["SELENIUM_HOST"] = "selenium" if depends_on_system_test? @devcontainer_variables["REDIS_URL"] = "redis://redis:6379/1" if devcontainer_needs_redis? @devcontainer_variables["DB_HOST"] = db_name_for_devcontainer if db_name_for_devcontainer @devcontainer_variables end
#devcontainer_volumes (private)
[ GitHub ]# File 'railties/lib/rails/generators/devcontainer.rb', line 31
def devcontainer_volumes return @devcontainer_volumes if @devcontainer_volumes @devcontainer_volumes = [] @devcontainer_volumes << "redis-data" if devcontainer_needs_redis? @devcontainer_volumes << db_volume_name_for_devcontainer if db_volume_name_for_devcontainer @devcontainer_volumes end
#local_rails_mount (private)
[ GitHub ]# File 'railties/lib/rails/generators/devcontainer.rb', line 195
def local_rails_mount { type: "bind", source: Rails::Generators::RAILS_DEV_PATH, target: Rails::Generators::RAILS_DEV_PATH } end
#mariadb_service (private)
[ GitHub ]# File 'railties/lib/rails/generators/devcontainer.rb', line 162
def mariadb_service { "mariadb" => { "image" => "mariadb:10.5", "restart" => "unless-stopped", "networks" => ["default"], "volumes" => ["mariadb-data:/var/lib/mysql"], "environment" => { "MARIADB_ALLOW_EMPTY_ROOT_PASSWORD" => "true", }, } } end
#mysql_feature (private)
[ GitHub ]# File 'railties/lib/rails/generators/devcontainer.rb', line 180
def mysql_feature { "ghcr.io/rails/devcontainer/features/mysql-client" => {} } end
#mysql_service (private)
[ GitHub ]# File 'railties/lib/rails/generators/devcontainer.rb', line 147
def mysql_service { "mysql" => { "image" => "mysql/mysql-server:8.0", "restart" => "unless-stopped", "environment" => { "MYSQL_ALLOW_EMPTY_PASSWORD" => "true", "MYSQL_ROOT_HOST" => "%" }, "volumes" => ["mysql-data:/var/lib/mysql"], "networks" => ["default"], } } end
#postgres_feature (private)
[ GitHub ]# File 'railties/lib/rails/generators/devcontainer.rb', line 184
def postgres_feature { "ghcr.io/rails/devcontainer/features/postgres-client" => {} } end
#postgres_service (private)
[ GitHub ]# File 'railties/lib/rails/generators/devcontainer.rb', line 132
def postgres_service { "postgres" => { "image" => "postgres:16.1", "restart" => "unless-stopped", "networks" => ["default"], "volumes" => ["postgres-data:/var/lib/postgresql/data"], "environment" => { "POSTGRES_USER" => "postgres", "POSTGRES_PASSWORD" => "postgres" } } } end