lib/generators/msip/tablabasica_generator.rb in msip-2.2.0.alfa3 vs lib/generators/msip/tablabasica_generator.rb in msip-2.2.0.beta1

- old
+ new

@@ -1,117 +1,150 @@ -require 'rails/generators/base' +# frozen_string_literal: true +require "rails/generators/base" + module Msip - class TablabasicaGenerator < Rails::Generators::Base - desc "Genera tabla básica" + class TablabasicaGenerator < Rails::Generators::Base + desc "Genera tabla básica" - source_root File.expand_path('../templates', __FILE__) + source_root File.expand_path("../templates", __FILE__) - argument :tablabasica, :type => :string - argument :tablabasicaplural, :type => :string - class_option :modelo, :type => :boolean, :default => false, - :desc => "Genera modelo" - class_option :controlador, :type => :boolean, :default => true, - :desc => "Genera controlador" - class_option :test, :type => :boolean, :default => true, - :desc => "Genera prueba minitest para el modelo" - class_option :asocia, :type => :string, :default => '', - :desc => 'Crea un belongs_to en un tabla' + argument :tablabasica, type: :string + argument :tablabasicaplural, type: :string + class_option :modelo, + type: :boolean, + default: false, + desc: "Genera modelo" + class_option :controlador, + type: :boolean, + default: true, + desc: "Genera controlador" + class_option :test, + type: :boolean, + default: true, + desc: "Genera prueba minitest para el modelo" + class_option :asocia, + type: :string, + default: "", + desc: "Crea un belongs_to en un tabla" - def genera_tablabasica - if ENV['DISABLE_SPRING'].to_i != 1 then - #http://makandracards.com/makandra/24525-disabling-spring-when-debugging - puts "Ejecutar con DISABLE_SPRING=1" - exit 1 - end - if tablabasica == tablabasicaplural - puts "El nombre en singular debe ser diferente al nombre en plural para que opere bien agregar registros a la tabla basica" - exit 1 - end - genera_modelo if options.modelo - genera_controlador if options.controlador - genera_test if options.test - genera_asociacion if options.asocia != '' + def genera_tablabasica + if ENV["DISABLE_SPRING"].to_i != 1 + # http://makandracards.com/makandra/24525-disabling-spring-when-debugging + puts "Ejecutar con DISABLE_SPRING=1" + exit(1) end - - private - def genera_modelo - template "tablabasica.rb.erb", - "app/models/#{nom_arch}.rb" - generate "migration", "Create#{nom_arch.camelize} " + - "nombre:string{500} observaciones:string{5000} " + - "fechacreacion:date fechadeshabilitacion:date " - ab='app/models/ability.rb' - if !File.exist?(ab) - ab='spec/dummy/app/models/ability.rb' - end - if File.exist?(ab) && - File.readlines(ab).grep(/#{nom_arch}/).size == 0 - gsub_file( - ab, - /(BASICAS_PROPIAS = \[.*)/, - "\\1\n ['', '#{nom_arch}']," - ) - end - puts "Aregue manualmente null:false en :nombre, :fechacreacion, :created_at y :update_at en migración" - puts "Aregue manualmente infleccion no regular en config/initializers/inflections.rb al estilo:" - puts " inflect.irregular '#{tablabasica}', '#{tablabasicaplural}' " - puts "Aregue nombre en español en config/locales/es.yml al estilo:" - puts " \"#{tablabasica}\":" - puts " #{tablabasica.capitalize}: Descripción singular" - puts " #{tablabasicaplural.capitalize}: Descripción plural" + if tablabasica == tablabasicaplural + puts <<~EOF + El nombre en singular debe ser diferente al nombre en plural + para que opere bien agregar registros a la tabla basica + EOF + exit(1) end + genera_modelo if options.modelo + genera_controlador if options.controlador + genera_test if options.test + genera_asociacion if options.asocia != "" + end - def genera_controlador - template "tablasbasicas_controller.rb.erb", - "app/controllers/admin/#{nom_arch_plural}_controller.rb" - end + private - def genera_test - template "tablabasica_test.rb.erb", - "test/models/#{nom_arch}_test.rb" - template "tablasbasicas_controller_test.rb.erb", - "test/controllers/#{nom_arch_plural}_controller_test.rb" + def genera_modelo + template( + "tablabasica.rb.erb", + "app/models/#{nom_arch}.rb", + ) + generate("migration", "Create#{nom_arch.camelize} " \ + "nombre:string{500} observaciones:string{5000} " \ + "fechacreacion:date fechadeshabilitacion:date ") + ab = "app/models/ability.rb" + unless File.exist?(ab) + ab = "spec/dummy/app/models/ability.rb" end + if File.exist?(ab) && + File.readlines(ab).grep(/#{nom_arch}/).empty? + gsub_file( + ab, + /(BASICAS_PROPIAS = \[.*)/, + "\\1\n ['', '#{nom_arch}'],", + ) + end + puts "Aregue manualmente null:false en :nombre, :fechacreacion, :created_at y :update_at en migración" + puts "Aregue manualmente infleccion no regular en config/initializers/inflections.rb al estilo:" + puts " inflect.irregular '#{tablabasica}', '#{tablabasicaplural}' " + puts "Aregue nombre en español en config/locales/es.yml al estilo:" + puts " \"#{tablabasica}\":" + puts " #{tablabasica.capitalize}: Descripción singular" + puts " #{tablabasicaplural.capitalize}: Descripción plural" + end - def genera_asociacion - puts "Para asociarla en #{options.asocia}:" - puts "Cree migracion que incluya + def genera_controlador + template( + "tablasbasicas_controller.rb.erb", + "app/controllers/admin/#{nom_arch_plural}_controller.rb", + ) + end + + def genera_test + template( + "tablabasica_test.rb.erb", + "test/models/#{nom_arch}_test.rb", + ) + template( + "tablasbasicas_controller_test.rb.erb", + "test/controllers/#{nom_arch_plural}_controller_test.rb", + ) + end + + def genera_asociacion + puts "Para asociarla en #{options.asocia}:" + puts <<~EOF + Cree migracion que incluya add_column :#{options.asocia}, :#{nom_arch}_id, :integer - add_foreign_key :#{options.asocia}, :#{nom_arch}, column: :#{nom_arch}_id" - if File.readlines("app/models/#{options.asocia}.rb").grep(/#{nom_arch}/).size == 0 - puts "Aregue a 'app/models/#{options.asocia}.rb' - belongs_to :#{nom_arch}, class_name: \"#{nom_clase}\", - foreign_key: \"#{nom_arch}_id\", validate: true" - puts "Aregue a 'app/models/#{nom_arch}.rb' - has_many :#{options.asocia}, - class_name: \"#{options.asocia.capitalize}\", - foreign_key: \"#{nom_arch}_id\", + add_foreign_key :#{options.asocia}, :#{nom_arch}, + column: :#{nom_arch}_id" + EOF + if File.readlines("app/models/#{options.asocia}.rb").grep(/#{nom_arch}/).empty? + puts <<~EOF + Aregue a 'app/models/#{options.asocia}.rb' + belongs_to :#{nom_arch}, class_name: "#{nom_clase}", + foreign_key: "#{nom_arch}_id", validate: true" + EOF + puts <<~EOF + Aregue a 'app/models/#{nom_arch}.rb' + has_many :#{options.asocia}, + class_name: "#{options.asocia.capitalize}", + foreign_key: "#{nom_arch}_id", validate: true" - end - puts "Modifique el controlador que edita el modelo y cambie atributos_index y/o atributos_show y/o atributos_form para incluir el campo, por ejemplo: - def atributos_index - [ :id, - :nombre, - :#{nom_arch}_id, - ] - end" + EOF + puts <<~EOF + Modifique el controlador que edita el modelo y cambie + atributos_index y/o atributos_show y/o atributos_form para + incluir el campo, por ejemplo: + def atributos_index + [ + :id, + :nombre, + :#{nom_arch}_id, + ] + end + EOF end + end - def nom_arch - tablabasica.underscore - end + def nom_arch + tablabasica.underscore + end - def nom_arch_plural - tablabasicaplural.underscore - end + def nom_arch_plural + tablabasicaplural.underscore + end - def nom_clase - tablabasica.capitalize - end + def nom_clase + tablabasica.capitalize + end - def nom_clase_plural - tablabasicaplural.capitalize - end + def nom_clase_plural + tablabasicaplural.capitalize end + end end -