Sha256: 302f3ea87f8b1ebe0cbfa6580a201ecb1c7eaf45e8cf8b71cb2216b1ba40d61e

Contents?: true

Size: 1.51 KB

Versions: 5

Compression:

Stored size: 1.51 KB

Contents

# frozen_string_literal: true

require "rails/generators"
require "generators/decidim/app_generator"

module Decidim
  module Generators
    # Generates a development Rails app that works with Docker.
    class DockerGenerator < Rails::Generators::Base
      desc "Generate a docker app for development purposes"

      class_option :docker_app_path, type: :string,
                                     desc: "The path to generate the docker app"

      def source_paths
        [
          File.expand_path("templates", __dir__)
        ]
      end

      def cleanup
        remove_directory_if_exists
      end

      def create_rails_app
        Decidim::Generators::AppGenerator.start(
          [docker_app_path, "--path", "..", "--demo"]
        )
      end

      def build_docker
        inside(docker_app_path) do
          gsub_file "Gemfile",
                    /gem "decidim([^"]*)".*/,
                    'gem "decidim\1", path: "/decidim"'

          run "docker-compose build"
          run "docker-compose run --rm app rails db:drop db:create db:migrate db:seed"
        end
      end

      def after_install
        say "Docker development app generated! To start the app just run:"
        say "cd docker_development_app && docker-compose up"
        say "Open the app at http://localhost:3000"
      end

      private

      def remove_directory_if_exists
        remove_dir(docker_app_path) if File.directory?(docker_app_path)
      end

      def docker_app_path
        options[:docker_app_path]
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
decidim-0.8.4 lib/generators/decidim/docker_generator.rb
decidim-0.8.3 lib/generators/decidim/docker_generator.rb
decidim-0.8.2 lib/generators/decidim/docker_generator.rb
decidim-0.8.1 lib/generators/decidim/docker_generator.rb
decidim-0.8.0 lib/generators/decidim/docker_generator.rb