¿Es esto correcto? ¿Cuánto tiempo para instalar la versión de desarrollo?

Estoy intentando instalar la versión de desarrollo de Discourse en un droplet de Ubuntu 20.04 en DigitalOcean, con el único propósito de migrar un foro de FluxBB a Discourse, exportarlo y luego importarlo a una versión de producción de Discourse.

No tuve ningún problema al instalar la versión de producción de Docker como prueba (sin migrar desde FluxBB).

Sin embargo, cuando intento instalar la versión de desarrollo de Discourse siguiendo esta guía:

Descubro que nunca se completa cuando ejecuto este comando:

bundle exec rake autospec

Después de esperar unos 30 minutos a que termine, mi sesión remota se agota.

Además, obtengo montones de errores; lamentablemente, no los tengo a mano, pero todos son del tipo en el que alguna función siempre devuelve “nil”.

Y como no sé qué hace ese comando ni si es necesario (las instrucciones solo dicen “intenta ejecutar las especificaciones” sin explicar qué hace esto o por qué hacerlo), procedí a probar el siguiente comando:

bundle exec rails server --binding=0.0.0.0

Y descubro que esto también tarda una eternidad y muestra un montón de cosas en la Terminal que no entiendo; quizás sean errores o quizás no.

Así que mi pregunta es: ¿es este comportamiento esperado o estoy haciendo algo mal? ¿Cuánto tiempo se esperaría razonablemente que tardaran estos comandos en completarse?

¿Y es posible migrar el foro de FluxBB utilizando simplemente la versión de producción/Docker de Discourse sin necesidad de usar la versión de desarrollo? En este momento ni siquiera tengo un sitio de producción, así que no me preocupa romperlo; puedo destruirlo y recrearlo cuando quiera.

1 me gusta

Eso significa que el servidor está en ejecución. Y, por supuesto, seguirá funcionando hasta que presiones Control+C o cierres la terminal.

La información se imprime en la terminal indefinidamente a menos que detengas el servidor.

Dentro de unos segundos de que se ejecute, la página web estará disponible en tu navegador.

¿Estás conectándote en el puerto correcto en tu navegador? Por lo general, este es el 3000.

1 me gusta

Hay varios temas de cómo hacer sobre la ejecución de importaciones en servidores de producción. Podrías usar uno de ellos como guía para ejecutar el script que deseas ejecutar.

Parece que has instalado el entorno de desarrollo y que deberías ejecutar el script allí.

1 me gusta

No veo nada en el navegador. Si ejecuto ‘top’ desde la terminal, veo un proceso de Ruby en ejecución.

Si la salida de la terminal sigue ejecutándose indefinidamente después de ejecutar

bundle exec rails server --binding=0.0.0.0

¿no debería quedar explícito en la documentación? Por lo general, cuando sigo una guía paso a paso, espero que un comando realice una acción, finalice y muestre información indicando que la instalación ha terminado y que ya puedo empezar.

1 me gusta

Hay varios temas de cómo hacer sobre la ejecución de importaciones en servidores de producción.

¿Dónde podrían estar ubicados? El único que veo para FluxBB dice explícitamente que se debe hacer en una instalación de desarrollo:

Supongo que se considera de sentido común que, si inicias un servidor web, no está previsto que se detenga a menos que el administrador lo desee. Los servidores web generalmente están diseñados para servir páginas día tras día… pero, por supuesto, alguien podría añadir esa aclaración. Cualquier persona puede enviar mejoras propuestas para la guía a través de una PR.

1 me gusta

¿Pero es de sentido común que ese comando inicie un servidor web? Solo dice ‘rails server’, lo cual no necesariamente implica un servidor web. Cuando inicias un servidor web Apache, vuelves inmediatamente al prompt de comandos; no lanza mensajes interminables en la Terminal…

Rails es un framework para aplicaciones web. No creo que sea justo compararlo directamente con Apache.

Me gusta el hecho de que puedas verlo trabajando activamente. Cuando se detiene, ¡generalmente hay algo mal! La salida puede ser útil en ciertas circunstancias, especialmente en desarrollo. Puedes cambiar la cantidad de información mostrada mediante la configuración del entorno.

Por cierto, según la documentación, Rails puede ejecutarse como un ‘daemon’ con la opción -d. Siéntete libre de investigar por qué parece no funcionar en la instalación estándar; podría haber alguna limitación que introduce. El equipo es la mejor fuente para hablar de eso.

1 me gusta

Hola @epsteindidnt

Cuando te metas de lleno en el desarrollo con Rails, si eres como yo, descubrirás que lo que describes como “lanzar mensajes en la Terminal sin fin” se convierte en uno de tus mejores amigos.

Por ejemplo, actualmente estoy desarrollando una aplicación Rails para un cliente en la que estamos transformando toda su lógica de negocio heredada (de hace muchas décadas) a Rails. De hecho, compré un nuevo monitor solo para poder ver ese “lanzamiento de mensajes en la Terminal sin fin” (tus palabras), porque esa información es oro puro para un desarrollador.

Además del increíble registro del servidor Rails, que ofrece detalles intrincados sobre lo que está ocurriendo, hay otro “mejor amigo del desarrollador”: la consola de Rails.

Cuando escribo código para Rails, básicamente redacto el borrador en VSC y luego copio y pego fragmentos en la consola de Rails para asegurarme de que todo funcione como se espera.

Al depurar, escribo declaraciones de impresión en Ruby (p, puts) en el código y observo lo que sucede en ese “flujo interminable de información dorada del registro del servidor Rails” en la pantalla. ¡Casi todos mis errores se solucionan de esta manera! Como dije, recientemente compré un nuevo monitor curvo independiente para juegos solo para poder ver la información del registro del servidor Rails que te molesta :slight_smile:

Por lo que leo en tus publicaciones, parece que estás un poco en la misma situación que yo a principios de este año, migrando a una aplicación Rails sin experiencia previa en su desarrollo. Al principio, yo también sentí cierta molestia con Rails (quizás un poco más); y ahora, nueve meses después, desarrollo exclusivamente en Rails todos los días para clientes (mi límite es la mitad del tiempo en trabajo para clientes, ya que estoy semi-jubilado) y he dejado todo el desarrollo previo en PHP. Honestamente, he descubierto una nueva pasión por Rails (y Ruby), y mucho. ¡Mejor tarde que nunca, como dice el refrán!

Respecto a Apache2, Apache no ofrece los detalles intrincados sobre lo que ocurre detrás de escena en una aplicación como lo hace Rails. Ejecuto Apache2 como un proxy inverso frente a todas mis aplicaciones Rails y, para ser franco, no recuerdo la última vez que miré un archivo de registro de Apache; porque hago toda la depuración usando el registro del servidor Rails que actualmente te molesta :slight_smile:

Para concluir, espero sinceramente que una perspectiva diferente de alguien que ya ha “migrado un foro a Rails” ayude de alguna pequeña manera. Para mí, verse obligado a abandonar las aplicaciones web LAMP y pasar a las aplicaciones web Rails fue una de las mejores “cosas tecnológicas” que me sucedieron (personalmente) en 2020.

¡Felices fiestas!

1 me gusta

Yo también he estado un poco asustado por esto últimamente. Esto es lo que me di cuenta hoy:

La salida en una terminal de rails s mostrará un montón de consultas al inicio, pero luego también incluye salida de los trabajos sidekiq de discourse (al menos lo hace en la configuración de desarrollo de docker). Así que si estás ejecutando una importación muy grande, entonces obtendrás una cola sidekiq muy grande de trabajos de post-procesamiento que podrían ejecutarse durante mucho tiempo después. Creo que estos son trabajos no esenciales, por ejemplo, cargar cachés, que no parecen impedir que navegues por el sitio antes de que terminen.

Esto me estaba confundiendo mucho porque hice una gran importación, luego me retiré de eso y reinicialicé la base de datos para hacer una pequeña importación de prueba, y todavía estaba dando vueltas sin fin haciendo consultas relacionadas con la base de datos grande que ya no existía. La solución fue vaciar las colas sidekiq usando una consola rails.

Demasiado tarde para ayudarte, pero pensé en compartirlo.