Artículo
· 17 feb, 2023 Lectura de 3 min

Cómo importar todas las clases desde local a un servidor de IRIS

No sé si alguna vez os ha ocurrido. Nosotros trabajamos con VSCode para programar en IRIS, sincronizamos las clases con un servidor de desarrollo y lo tenemos conectado a un repositorio Git. 

Tenemos proyectos que tienen cientos de clases, algunos hasta miles. Nos ocurre a menudo que, estamos realizando un desarrollo en un Namespace, y sin terminarlo, surge una incidencia que hay que solventar (o un nuevo desarrollo más prioritario). Dejamos el desarrollo que estamos haciendo, comiteando todo lo realizado hasta el momento.

Creamos una rama nueva con la versión de Producción para solventar la incidencia, pero... resulta que en el servidor de desarrollo está la versión en la que estábamos trabajando previamente. ¿Qué hacemos?

Lo primero, no entrar en modo pánico. Primero hacemos una copia del contenido del Namespace. Desde el portal, vamos a Explorador > Clases:

Vamos a nuestro Namespace, buscamos las clases de nuestro proyecto, las seleccionamos todas y las exportamos (hacemos un backup):

¿Por qué un backup? Nos gusta hacerlo por si acaso, no sea que se nos haya olvidado exportar algún archivo modificado desde el Portal al VSCode, por ejemplo cheeky

Una vez hecho el backup, las eliminamos:

Con esto hemos dejado el Namespace vacío. 

Ahora, en el VSCode nos posicionamos en la rama que hemos creado desde Producción. Esto nos traerá todo el código a nuestro equipo local. Vamos al sistema de archivos, donde tengamos el repositorio, y comprimimos la carpeta src:

Cogemos este archivo src.zip, lo subimos al servidor de desarrollo y lo descomprimimos:

Entramos a la carpeta src y borramos todo lo que no sean clases:

Si como nosotros, trabajas con Mac, lo más probable es que tengas archivos ocultos en varias carpetas llamados .DS_Store. Los buscamos, y los borramos también:

¿Para qué todo esto? Ya llego, tranquilos...

Ahora tenemos un Namespace vacío y una carpeta en el servidor con nuestras clases. Cómo las importamos?

Podríamos, desde el mismo VSCode, importar y compilar todas las clases. Pero... este proyecto tiene miles de clases, y acaba dando timeout. Podemos ir por lotes, pero podemos tardar una eternidad... Así que...

Si tenemos instalada la aplicación WebTerminal, todo será mucho más sencillo laugh Sino, desde un terminal también se puede ejecutar.

Accedemos al terminal, nos posicionamos en nuestro Namespace, y escribimos la siguiente instrucción (con la ruta donde hemos descomprimido la carpeta src):

set sc = $System.OBJ.ImportDir("C:\\InterSystems\despliegues\TEST\src\","*","ck",.error,1,.imported,0,.list)

Al lanzar esta instrucción se importarán y compilarán todas las clases que hemos descomprimido en el servidor, directamente en nuestro Namespace.

Cuando acabe, si todo ha ido bien, aparecerá un mensaje como el siguiente:

Si por el contrario hubiese habido algún error, veremos esto:

Para saber qué ha ocurrido exactamente, podemos escribir lo que tenga la propiedad error:

(Veis? Por eso borramos los archivos .DS_Store, porque sino son muy molestos a la hora de importar, y generan confusión al importar las clases wink)

---------------------------------------------

Con esto restauramos en desarrollo la versión que había en Producción, permitiéndonos corregir la incidencia sin mezclar desarrollos en diferentes ramas.

Espero que os sea de utilidad!

P.D.: Gracias al equipo de Intersystems por darnos la idea de utilizar esa instrucción smiley

Comentarios (2)1
Inicie sesión o regístrese para continuar