Sha256: ce00c39043ce9930d63860e46e41b4e89ddb4c45517ba3b225650977451efc73

Contents?: true

Size: 1.23 KB

Versions: 1

Compression:

Stored size: 1.23 KB

Contents

require_relative "../base"

module Rsg
  module Orm
    class ActiveRecordGenerator < Generators::Base
      include Rails::Generators::Database

      SUPPORTED_DBS = %w(sqlite3 mysql postgres)
      class_option :database, type: :string, default: nil, desc: "Configure for selected database (options: #{SUPPORTED_DBS.join("/")})"

      def self.source_root
        Pathname.new(__FILE__).dirname.join("templates").expand_path
      end

      def banner
        say "Configuring active record"
      end

      def enable_active_record
        enable_railtie "active_record"
      end

      def configure_driver
        database = options.fetch(:database) { ask("Which database you'd like to use?", limited_to: SUPPORTED_DBS, default: "sqlite3") }
        template "active_record/#{database}.yml", "config/database.yml"

        name, version = gem_for_database(database)
        append_gem name, version: version
      end

      def write_db_sample
        copy_file "db.rake", "lib/tasks/db.rake"
        copy_file "seeds.rb", "db/seeds.rb"
        copy_file "samples.rb", "db/samples.rb"
      end

      def migrate
        return if no?("Would you like to create the database schema?")

        rake "db:create db:migrate"
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rsg-0.0.1 lib/rsg/generators/orm/active_record_generator.rb