Marin
NOUS RECHERCHONS DE NOUVEAUX MAINTENANTS !
Caractéristiques
- Compatible avec Lua 5.1, Lua 5.2 et LuaJIT. (Compatibilité 5.3 non testée jusqu'à présent)
- Configuration des Luarocks
- Fonctionne sur les serveurs Web Apache2 (avec mod_lua), NginX (openresty), Mongoose, Lighttpd, Xavante et Lwan
- Utilisation de systèmes Windows, Mac ou Linux
- Compatible avec MySQL, PostgreSQL, SQLite et autres bases de données supportées par la bibliothèque luasql
- Structure MVC
- Analyse des pages Lua
- Routage
- Mappage objet-relationnel de base
- Validation
- Transactions
- L'application est déjà livrée avec Bootstrap
- Inclure, rediriger
- Séances, cookies
- Module de connexion
- Déploiement facile (Unix uniquement) -> Sailor crée "nom de l'application" /dir/to/app
- Génération de formulaire
- Lua chez le client (possible via une machine virtuelle Lua=>JS déployée avec l'application)
- URL conviviales
- Fonction d'inspection pour un meilleur débogage => similaire à un dump var
- Pages 404 personnalisées
- Rapports
- Génération de modèle (lecture depuis DB)
- Génération CRUD (lecture à partir du modèle)
- Thème et mise en page (vous pouvez désormais avoir plusieurs mises en page dans un thème, par exemple 1 colonne et 2 colonnes)
- Intégration avec Busted pour les tests unitaires et fonctionnels de votre application
Feuille de route
- Intégration avec l'API DB de mod_lua et le refactor du module DB
- Améliorations du formulaire et du module de validation
Pour en savoir plus sur la motivation pour construire ce projet, cliquez ici : http://etiene.net/10/sailor
Informations sur l'arborescence du répertoire
- /docs - celui-ci est censé avoir de la documentation
- /lua-to-js-vms - différentes machines virtuelles Lua->Javascript pour utilisation de Lua dans le navigateur avec Sailor
- /rockspecs - Fichiers Rockspec pour l'installation de LuaRocks
- /src - Modules Lua avec des trucs sympas de Sailor et d'autres endroits.
- /sailor - Modules marins
- /sailor/blank-app - application Web Sailor vierge, peut être copiée-collée comme base pour vos propres applications
- /test - applications à des fins de test et de démonstration
Environnements pris en charge
Sailor a été testé sous Linux, Mac OS X et Windows et est actuellement compatible avec Apache avec mod_lua ou mod_pLua, Nginx avec ngx_lua, Lwan, Lighttpd avec mod_magnet, ou tout serveur Web compatible CGI, comme Civetweb, Mongoose et Xavante, si CGILua est présent.
Installation
Pour Linux, voir INSTALL_LINUX.md (Ubuntu) ou INSTALL_LINUX_ARCH.md (Arch Linux)
Pour Windows, voir INSTALL_WIN.md
Pour Mac, voir INSTALL_MAC.md
Utiliser Sailor
Une application Sailor par défaut aura l'arborescence de répertoires suivante :
- /conf - fichiers de configuration, ouvrez-les et modifiez-les.
- /controllers - les contrôleurs que vous fabriquerez !
- /themes - fichiers de thème par défaut.
- /models - les modèles que vous réaliserez !
- /pub - fichiers accessibles au public (bibliothèques js, par exemple)
- /runtime - fichiers temporaires générés pendant l'exécution.
- /tests - tests unitaires et fonctionnels
- /views - c'est là que iront vos pages Lua en .lp
Création de pages
Allez dans /controllers et créez votre premier contrôleur ! Ce devrait être un module Lua. Nommez-le comme vous voulez, notre exemple est "site.lua". Nous desservirons deux pages, une accessible via /?r=site qui exécutera site.index() par défaut et une autre accessible 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
Allez dans /views, créez un répertoire nommé « site » pour correspondre au nom de votre contrôleur et créez votre première page, notre exemple est index.lp
< ?=foo? >
< p >
Hi, < ?=name? >
</ p >
Pour plus d'informations sur ce que vous pouvez faire avec les pages HTML et Lua, visitez http://keplerproject.github.io/cgilua/manual.html#templates
Pour plus d'exemples, vous pouvez vérifier le contrôleur de test (/controllers/test.lua), les vues de test (/views/test/*) et le modèle utilisateur (/models/user.lua).
Documentation et manuel de référence
http://sailorproject.org/?r=docs
Contribuer
Les contributions sont les bienvenues ! Faites simplement une pull request :) Veuillez essayer de suivre le style de code du reste du référentiel.
Si vous avez créé une extension pour Sailor et que vous souhaitez la partager, veuillez nous contacter afin que je puisse l'ajouter au site Web.
Merci
Ce référentiel contient le code tiers sous licence MIT suivant :
- Modèles LP - http://keplerproject.github.io/cgilua/manual.html#templates
- Valua - https://github.com/sailorproject/valua
- Lua chez le client - 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
- Lumière des étoiles - https://github.com/paulcuth/starlight
Suggestions, questions et câlins
Câlins! Pas des bugs. Pour les bugs, remplissez un problème ! :)
[email protected]
https://twitter.com/etiene_d
Liste de diffusion et assistance
Rejoignez notre groupe Google pour la liste de diffusion et l'assistance
Si vous rencontrez des difficultés pour faire fonctionner Sailor ou si vous l'avez fait fonctionner en utilisant des spécifications différentes, veuillez nous contacter afin que nous puissions échanger des informations et que je puisse améliorer le manuel. Merci!