Sha256: 19f1bfe9eeb6f028839df3d00442bfef5eced38e38babf679eaa16492bff969b
Contents?: true
Size: 1.71 KB
Versions: 7
Compression:
Stored size: 1.71 KB
Contents
require 'active_support' require 'active_support/core_ext' require 'string/builder' require 'thor' require 'eucalypt/eucalypt-migration/helpers' module Eucalypt module Generators module Create class Table < Thor::Group include Thor::Actions include Eucalypt::Helpers include Eucalypt::Migration::Helpers using String::Builder def self.source_root File.join File.dirname(File.dirname(File.dirname __dir__)) end def generate(columns: [], options: {}, name:) name = Inflect.resources(name.to_s) columns.map!{|c| c.split(?:).map{|i| Inflect.resource_keep_inflection(i)}} sleep 1 migration_name = "create_#{name}" migration = Eucalypt::Helpers::Migration[title: migration_name, template: 'migration_base.tt'] return unless migration.create_anyway? if migration.exists? config = {migration_class_name: migration_name.camelize} template migration.template, migration.file_path, config sanitized_options = sanitize_table_options(options) insert_into_file migration.file_path, :after => "def change\n" do String.build do |s| s << " create_table :#{name}" s << ', ' unless sanitized_options.empty? s << sanitized_options.map{|opt| "#{opt.first}: #{opt.last}"}*', ' unless columns.empty? s << " do |t|\n" columns.each do |column| n, t = column s << " t.#{t} :#{n}\n" end s << " end" end s << "\n" end end end end end end end
Version data entries
7 entries across 7 versions & 1 rubygems