Задать вопрос
Ответы пользователя по тегу Lua
  • Как заставить nginx запускать lua скрипты через luaJIT?

    starius
    @starius
    программист, аспирант МГУ
    Надо устанвить LuaJIT и пересобрать nginx с LuaJIT вместо Lua.
    В Debian для этого применили такой патч (баг):

    diff -ruN nginx-1.6.0.orig/debian/modules/nginx-lua/config nginx-1.6.0/debian/modules/nginx-lua/config
    --- nginx-1.6.0.orig/debian/modules/nginx-lua/config	2014-04-24 13:23:46.000000000 -0300
    +++ nginx-1.6.0/debian/modules/nginx-lua/config	2014-07-24 03:48:10.816586362 -0300
    @@ -131,9 +131,9 @@
                 ngx_feature="Lua library in /usr/"
                 ngx_feature_path="/usr/include/lua5.1"
                 if [ $NGX_RPATH = YES ]; then
    -                ngx_feature_libs="-R/usr/lib -L/usr/lib -lm -llua5.1"
    +                ngx_feature_libs="-R/usr/lib -L/usr/lib -lm -lluajit-5.1"
                 else
    -                ngx_feature_libs="-L/usr/lib -lm -llua5.1"
    +                ngx_feature_libs="-L/usr/lib -lm -lluajit-5.1"
                 fi
                 . auto/feature
             fi


    ```
    Ответ написан
    Комментировать
  • Как использовать stub/mock в lua (busted)?

    starius
    @starius
    программист, аспирант МГУ
    Попробовал протестировать как-то так с использованием stub:

    it("calls getEventType with the event", function()
        function getEventType()
          return 3
        end
        stub(_G, "getEventType")
        processEvent(42)
        assert.stub(getEventType).was.called_with(42)
        getEventType:revert()
      end)


    Не работает, хотя должно бы, исходя из документации. Написал об этом разработчикам.

    В итоге протестировал всё без spy, mock и stub. На мой взгляд, если отслеживаемых функций не безумное множество, то лучше по-простому.

    Не совсем понятно как правильно загружать код из другого фаила, если код не завернут в модуль.
    Используйте функцию dofile. Но лучше делать из тестируемых файлов модули и загружать при помощи require.

    Замечание по коду: не злоупотребляйте глобальными переменными.

    UPD. В busted ответили, что из-за того busted применяет песочницу для тестов, глобальные переменные имеют область видимости в рамках текущего spec-файла или describe-блока. Предложили, как всё-таки протестировать функцию processEvent (присваивать к полям _G), но это потребовало изменять её код. Мораль такова: не пользуйтесь глобальными переменными.

    UPD 2. Советуют объявить глобальные функции в отдельном модуле, который подключать через require в тестах. Тогда глобальные переменные попадут в _G тестов и всё будет работать, как ожидалось. Пример кода взят из ответа:

    -- processEvent.lua
    function getEventType(e)
      ...
    end
    
    function processEvent(e)
      eventId = getEventType(e)
      if eventId == 3 then
        return 3
      else
        return 0
      end
    end
    
    -- process_event_spec.lua
    require 'processEvent'
    
    describe("processEvent", function()
      it("calls getEventType with the event", function()
        stub(_G, "getEventType")
        processEvent(42)
        assert.stub(getEventType).was.called_with(42)
        getEventType:revert()
      end)
    end)
    Ответ написан
    Комментировать
  • Gentoo ошибка при сборке luatex: как исправить?

    starius
    @starius
    программист, аспирант МГУ
    Разработчик пишет, что проблема исправлена. Исправили?
    Ответ написан
    Комментировать
  • Можно ли в nginx конфиге написать код на lua, который бы просто показывал простейшую форму?

    starius
    @starius
    программист, аспирант МГУ
    Ответ - можно.
    См. wiki.nginx.org/HttpLuaModule
    wiki.nginx.org/HttpLuaModule#ngx.print - чтобы что-то напечатать.
    wiki.nginx.org/HttpLuaModule#ngx.req.get_post_args - доступ к данным, отправленным через POST
    Функция Lua os.execute() - выполняет команду.
    Примеры простых конфигов см. по ссылкам выше.

    PS. На Lua можно и полноценный сайт написать: habrahabr.ru/post/240217
    Ответ написан
    1 комментарий
  • Существуют ли готовые ~CMS решения для Lua (Lapis) + Nginx?

    starius
    @starius
    программист, аспирант МГУ
    Не Lapis+Nginx, но Lua: sputnik.freewisdom.org
    Everything is done using Lua. Node storage format? Lua! The permission rules? Lua!
    Ответ написан
    Комментировать