Falta archivo lumen.lua

Falta archivo lumen.lua

de Santiago Rosas Caissiols -
Número de respuestas: 1

Hola Jorge, hola todos.

Estamos teniendo problemas con Lumen cuando intentamos inicializar la clase lumen.tasks.selector para escuchar un socket UDP:

local selector = require 'lumen.tasks.selector'.init({service='nixio'})

Esa línea tira este error:

lua: ./lumen/tasks/selector-nixio.lua:1: module 'lumen' not found:
        no field package.preload['lumen']
        no file './lumen.lua'
        no file '/usr/local/share/lua/5.1/lumen.lua'
        no file '/usr/local/share/lua/5.1/lumen/init.lua'
        no file '/usr/local/lib/lua/5.1/lumen.lua'
        no file '/usr/local/lib/lua/5.1/lumen/init.lua'
        no file '/usr/share/lua/5.1/lumen.lua'
        no file '/usr/share/lua/5.1/lumen/init.lua'
        no file './lumen.so'
        no file '/usr/local/lib/lua/5.1/lumen.so'
        no file '/usr/lib/i386-linux-gnu/lua/5.1/lumen.so'
        no file '/usr/lib/lua/5.1/lumen.so'
        no file '/usr/local/lib/lua/5.1/loadall.so'
stack traceback:
        [C]: in function 'require'
        ./lumen/tasks/selector-nixio.lua:1: in main chunk
        [C]: in function 'require'
        ./lumen/tasks/selector.lua:19: in function 'init'
        socketTest.lua:4: in main chunk
        [C]: ?

Parece que está faltando el archivo lumen.lua.

Buscando "lumen.lua" en el repositorio https://github.com/xopxe/lumen, no nos aparecen resultados.

¿Alguna idea?

Gracias, saludos

Santiago.

En respuesta a Santiago Rosas Caissiols

Re: Falta archivo lumen.lua

de Jorge Visca -
Una cosa frecuente en Lua para las librerias es usar un directrio de la

siguiente forma: en vez de tener 'lumen.lua', se tiene un directorio y

adentro un init.lua, así: 'lumen/init.lua'.



Como se buscan las librerias está controlado por la variable

package.path. Eso le dice al intérprete en qué directorio y con qué path

intentar cargar los modulos (es la lista que ven intentar y fallar en su

ejecución). Pueden fijarese como lo usan los scripts de test (ubicados

en el directrio lumen/test/, por lo que tienen que ir a buscar a lumen

un directorio mas arriba).



Si quieren buscar primero adentro del directorio actual, y luego un

nivel mas arriba pueden setear los directorios de búsqueda de la

siguiente manera:



package.path = package.path .. ";;;?/init.lua;../?.lua;../?/init.lua"



Eso va hacer que 'require xxx' intente (despues de los paths estandar

tipo /usr/lib, etc) con



xxx/init.lua

../xxx.lua

../xxx/init.lua



Jorge