Marinheiro
PROCURAMOS NOVOS MANUTENTORES!
Características
- Compatível com Lua 5.1, Lua 5.2 e LuaJIT. (Compatibilidade 5.3 até agora não testada)
- Configuração do Luarocks
- Executa servidores web Apache2 (com mod_lua), NginX (openresty), Mongoose, Lighttpd, Xavante e Lwan
- Usando sistemas Windows, Mac ou Linux
- Compatível com MySQL, PostgreSQL, SQLite e outros bancos de dados suportados pela biblioteca luasql
- Estrutura MVC
- Análise de páginas Lua
- Roteamento
- Mapeamento objeto-relacional básico
- Validação
- Transações
- O aplicativo já vem com Bootstrap
- Incluir, redirecionar
- Sessões, cookies
- Módulo de login
- Fácil implantação (somente Unix) -> marinheiro cria "nome do aplicativo" /dir/to/app
- Geração de formulário
- Lua no cliente (possível através de uma máquina virtual Lua=>JS implantada com o aplicativo)
- URLs amigáveis
- Inspecione a função para melhor depuração => semelhante a um dump var
- Páginas 404 personalizadas
- Relações
- Geração de modelo (leitura do banco de dados)
- Geração CRUD (leitura do modelo)
- Tema e layout (agora você pode ter vários layouts dentro de um tema. Por exemplo, 1 coluna e 2 colunas)
- Integração com Busted para testes unitários e funcionais do seu aplicativo
Roteiro
- Integração com a API DB do mod_lua e refatoração do módulo DB
- Melhorias no módulo de formulário e validação
Mais sobre a motivação para construir este projeto pode ser encontrada aqui: http://etiene.net/10/sailor
Informações da árvore de diretórios
- /docs - este deve ter documentação
- /lua-to-js-vms - diferentes máquinas virtuais Lua->Javascript para uso de Lua no navegador com Sailor
- /rockspecs - Arquivos Rockspec para instalação do LuaRocks
- /src - Módulos Lua com coisas legais do Sailor e de outros lugares.
- /sailor - Módulos de marinheiro
- /sailor/blank-app - aplicativo web Sailor em branco, pode ser copiado e colado como base para seus próprios aplicativos
- /test – aplicativos para fins de teste e demonstração
Ambientes Suportados
Sailor foi testado em Linux, Mac OS X e Windows e atualmente é compatível com Apache com mod_lua ou mod_pLua, Nginx com ngx_lua, Lwan, Lighttpd com mod_magnet ou qualquer servidor web habilitado para CGI, como Civetweb, Mongoose e Xavante, se CGILua está presente.
Instalação
Para Linux, consulte INSTALL_LINUX.md (Ubuntu) ou INSTALL_LINUX_ARCH.md (Arch Linux)
Para Windows, consulte INSTALL_WIN.md
Para Mac, consulte INSTALL_MAC.md
Usando Marinheiro
Um aplicativo Sailor padrão terá a seguinte estrutura de árvore de diretórios:
- /conf - arquivos de configuração, abra e edite-os.
- /controllers – controladores que você fará!
- /themes – arquivos de tema padrão.
- /models – modelos que você fará!
- /pub – arquivos acessíveis publicamente (bibliotecas js, por exemplo)
- /runtime – arquivos temporários gerados durante o tempo de execução.
- /testes - testes unitários e funcionais
- /views - é aqui que suas páginas lua em .lp irão
Criando páginas
Vá para /controllers e crie seu primeiro controlador! Deve ser um módulo lua. Dê o nome que quiser, nosso exemplo é "site.lua". Serviremos duas páginas, uma acessível via /?r=site que executará site.index() por padrão e outra acessível via /?r=site/notindex.
local site = {}
local model = require " sailor.model "
function site . index ( page )
local foo = ' Hello world '
local User = model ( " user " )
local u = User : new ()
u . username = " etiene "
u . password = " a_password "
local valid , err = u : validate () -- validate() will check if your attributes follow the rules!
if not valid then
foo = " Boohoo :( "
end
-- Warning: this is a tech preview and some methods of model class do not avoid SQL injections yet.
page : render ( ' index ' ,{ foo = foo , name = u . username }) -- This will render /views/site/index.lp and pass the variables 'foo' and 'name'
end
function site . notindex ( page )
page : write ( ' <b>Hey you!</b> ' )
end
return site
Vá para /views, crie um diretório chamado 'site' para corresponder ao nome do seu controlador e crie sua primeira página, nosso exemplo é index.lp
< ?=foo? >
< p >
Hi, < ?=name? >
</ p >
Para obter mais informações sobre o que você pode fazer com páginas HTML e Lua, visite http://keplerproject.github.io/cgilua/manual.html#templates
Para mais exemplos, você pode verificar o controlador de teste (/controllers/test.lua), as visualizações de teste (/views/test/*) e o modelo do usuário (/models/user.lua)
Documentação e Manual de Referência
http://sailorproject.org/?r=docs
Contribuindo
Contribuições são bem-vindas! Basta fazer uma solicitação pull :) Por favor, tente seguir o estilo de código do restante do repositório.
Se você fez uma extensão para o Sailor e gostaria de compartilhar, entre em contato para que eu possa adicioná-la ao site.
Obrigado
Este repositório contém o seguinte código licenciado pelo MIT de terceiros:
- Modelos LP - http://keplerproject.github.io/cgilua/manual.html#templates
- Valua - https://github.com/sailorproject/valua
- Lua no cliente - https://github.com/felipedaragon/lua_at_client
- Moonshine - http://moonshinejs.org/
- Lua5.1.js - https://github.com/logiceditor-com/lua5.1.js
- Lua.vm.js - https://kripken.github.io/lua.vm.js/lua.vm.js.html
- Luz das estrelas - https://github.com/paulcuth/starlight
Sugestões, dúvidas e abraços
Abraços! Não são insetos. Para bugs, preencha um problema! :)
[email protected]
https://twitter.com/etiene_d
Lista de e-mail e suporte
Junte-se ao nosso grupo do Google para obter lista de e-mail e suporte
Se você está tendo problemas para fazer o Sailor funcionar ou se conseguiu fazê-lo funcionar com especificações diferentes, entre em contato para que possamos trocar informações e eu possa melhorar o manual. Obrigado!