Tutorial: Tudo o que você (não) precisa saber com Lua

Iniciado por bred81, 24 de Julho de 2012, 00:55

tópico anterior - próximo tópico

bred81

Bom, tive que fazer vários programas para a faculdade em Lua e já passei muito perrengue para configurar um ambiente de desenvolvimento em Lua.
Como gosto de ficar formatando minha máquina para testar várias coisas, volta e meia eu tenho que quebrar a cabeça para reinstalar o Lua aqui. Então, para não ter que ficar procurando em toda a web, vou colocar aqui o que eu preciso pra mim e espero que ajude mais alguém que queira descobrir como é legal e fácil programar em Lua.

Antes de começar, vou falar das versões: em Julho de 2012, existem as versões 5.2 e 5.1.4. Este tutorial será para a 5.1.4 porque os módulos listados aqui ainda não estão feitos para a versão mais recente.

O editor de texto que eu recomendo usar é o Sublime Text 2

Sites muito úteis para as dúvidas diárias: Lua.org / Lua-users Wiki

Bom, vamos lá, primeira, instalar o Lua:
sudo aptitude install lua5.1

Bom, agora já temos o lua instalado.
Citarfred@Pangolin:~$ lua -v
Lua 5.1.4  Copyright (C) 1994-2008 Lua.org, PUC-Rio

Se você chegou nesse ponto e não sabe nada de Lua, sugiro a leitura dos sites sugeridos, lá tem exemplos fáceis de visualizar.

Bom, precisamos do luarocks agora para instalar os próximos módulos.
- Instalar o LuaMySQL ou o LuaPostgres ou o LuaSQLite.
sudo apt-get install liblua5.1-sql-mysql-2 liblua5.1-sql-mysql-dev libmysqlclient-dev luarocks
sudo luarocks install luasql-mysql MYSQL_INCDIR=/usr/include/mysql


Desses, o que deixa curiosidade é o libmysqlclient-dev, necessário para instalar um módulo que o luasql-mysql / luasql-postgres / luasql-sqlite procura no momento da instalação. Sem ele, não funcionará!

Para usar este módulo temos que:
Citardriver = require "luasql.mysql"
env = assert(driver.mysql())
con = assert (env:connect("nome_banco", "usario", "senha"))
cur = assert(con:execute("SELECT * FROM TABELA))
row = cur:fetch({}, "a")
if row ~= nil then
  print(row.nome_de_uma_coluna)
end

Instalando o módulo LFS - Lua File System
sudo luarocks install luafilesystem

Sugiro acessar esta página para entender como funciona este módulo.

Lua também tem um módulo http:
sudo apt-get install liblua5.1-socket2 liblua5.1-socket-dev

Aqui é interessante, não estamos instalando o pacote luasocket porque, de acordo com esta thread ele aponta para o a versão 5.0 ao invés da 5.1.4 como estamos usando.

Exemplo de uso:
Citarlocal http = require "socket.http"
exemplo = http.request(www.lua.org)
print(exemplo)

Bem simples, não?

Agora, só falta a integração do Lua + Apache ou Lua + Xavante. Este eu vou deixar para depois pois não estou achando o meu tutorial para o Lua + Apache e a página do Projeto Kepler está fora do ar. Quando tiver um tempo eu coloco aqui o que falta.


O que o Mario foi fazer no pscicólogo?
- Ele estava passando por uma fase difícil...