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

- old
+ new

@@ -1,77 +1,79 @@ +# frozen_string_literal: true + require "devise" require "msip/engine" module Msip - # Carga un archivo con semillas SQL de un motor, ruta o app - # @param objeto conexion Tipicamente ActiveRecord::Base.connection() - # @param string motor motor del cual cargar, o cadena con ruta + # @param conexion [Object] Tipicamente ActiveRecord::Base.connection() + # @param motor [String] motor del cual cargar, o cadena con ruta # o nil para que sea de aplicación - # @param string tipoarchivo 'cambios' o 'datos' para indicar si se carga + # @param tipoarchivo [String] 'cambios' o 'datos' para indicar si se carga # cambios-basica.sql o datos-basica.sql. El primero debería tener cambios # a tablas básicas de motor del cual desciende directamente. # El segundo debería tener nuevos datos para las tablas básicas. - # @param patexcluye Excluir lineas que cumplan el patrón + # @param patexcluye [Pattern] Excluir lineas que cumplan el patrón # - # @return void Si el archivo existe lo ejecuta + # @return [void] Si el archivo existe lo ejecuta def self.carga_semillas_sql(conexion, motor, tipoarchivo, patexcluye = nil) - if (tipoarchivo.to_s != 'datos' && tipoarchivo.to_s != 'cambios') - raise 'Las semillas solo pueden ser cambios o datos' + if tipoarchivo.to_s != "datos" && tipoarchivo.to_s != "cambios" + raise "Las semillas solo pueden ser cambios o datos" end - if motor + + if motor if Gem.loaded_specs[motor.to_s] - motor = Gem.loaded_specs[motor.to_s].full_gem_path + "/" - else # Ruta + motor = Gem.loaded_specs[motor.to_s].full_gem_path + "/" + else # Ruta motor = motor.to_s + "/" - if !File.exists?("#{motor}db/#{tipoarchivo.to_s}-basicas.sql") && - motor == '../../' && ENV['RAILS_ENV'] == 'test' + if !File.exist?("#{motor}db/#{tipoarchivo}-basicas.sql") && + motor == "../../" && ENV["RAILS_ENV"] == "test" # En motores se ejecutan pruebas desde directorio del motor # y no desde test/dummy motor = "" end end else motor = "" # Aplicacion end - n = "#{motor}db/#{tipoarchivo.to_s}-basicas.sql" - if File.exist?(n) then + n = "#{motor}db/#{tipoarchivo}-basicas.sql" + if File.exist?(n) l = File.readlines(n) - if (patexcluye) + if patexcluye l = l.select { |u| !u[patexcluye] } end conexion.execute(l.join("\n")) end end # PostgreSQL - # Determina si existe una secuencia - # Considerar https://rubygems.org/gems/activerecord-postgresql-extensions + # Determina si existe una secuencia + # Considerar https://rubygems.org/gems/activerecord-postgresql-extensions # (aunque parece no proveer algo como primary_key_exists?) # http://stackoverflow.com/questions/11905868/Check-if-sequence-exists-in-Postgres-plpgsql/11919600#11919600 def self.existe_secuencia?(conexion, nombre) - cs = conexion.select_all "SELECT c.relkind + cs = conexion.select_all("SELECT c.relkind FROM pg_catalog.pg_namespace n JOIN pg_catalog.pg_class c ON c.relnamespace = n.oid WHERE n.nspname = current_schema - AND c.relname = '#{nombre}' - AND c.relkind = 'S'" + AND c.relname = '#{nombre}' + AND c.relkind = 'S'") return true if cs.count > 0 - return false + + false end # Renombra una secuncia # @return bool true sii puede renombrar def self.renombra_secuencia(conexion, anterior, nuevo) - if Msip::existe_secuencia?(conexion, anterior) && - !Msip::existe_secuencia?(conexion, nuevo) - conexion.execute <<-SQL + if Msip.existe_secuencia?(conexion, anterior) && + !Msip.existe_secuencia?(conexion, nuevo) + conexion.execute(<<-SQL.squish) ALTER SEQUENCE #{anterior} RENAME TO #{nuevo}; SQL return true end - return false + false end - end