前回紹介したLuaのウェブフレームワークLapisが0.0.3にバージョンアップしました。
Tup
MoonScriptの自動コンパイルにmoonc -w .を使っていたのですが、MoonScriptだけでなく、CoffeeScriptやSASSなどの自動コンパイルもできるようにTupというツールを使うようになりました。
Tup本体はLapisに同梱されていないので、別途インストールする必要があります。
–tupオプションを付けてプロジェクトを作ります。
1 |
lapis new --git --tup |
生成されるファイルは以下の通りです。
1 2 3 4 5 6 7 8 |
$ tree -a . ├── .gitignore ├── Tupfile ├── Tuprules.tup ├── mime.types ├── nginx.conf └── web.moon |
Tupを使用するための準備をします。といっても以下のコマンドを実行するだけです。このコマンドは一度だけ実行。
1 |
$ tup init |
Tupをモニターモードで実行します。このコマンドは作業開始ごとに実行。
1 |
$ tup monitor -a |
サーバーを起動。
1 |
$ lapis server |
web.moonなどを自動でluaのコードにコンパイルされます。コンパイルの様子は以下のようにコンソールに表示され、コンパイルの成否も確認できます。
CoffeeScriptとSASSもコンパイルしたければ、Tuprules.tupを以下のように書きます。
Tuprules.tup
1 2 3 |
: foreach *.moon |> moonc %f |> %B.lua : foreach *.coffee |> coffee -c %f |> %B.js : foreach *.scss |> sass -C %f > %o |> %B.css |
build、migrate
buildとmigrateというコマンドが追加されました。
buildはnginx.confをコンパイルしてnginxにHUPシグナルを送って設定の変更を反映させるためのコマンドです。
migrateはウェブフレームワークにはつきものの機能でデータベースのテーブル変更の際に利用するコマンドです。
おまけ
lapisのhelpを見ると[environment]というオプション引数を使えるものがあります。これは開発環境、リリース環境などでポートやDBの接続情報を切り替えることができる機能なのですが、[enviroment]を指定しても反映されないという現象で遭遇しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ lapis help Lapis 0.0.3 usage: lapis <action> [arguments] using nginx: /usr/local/openresty/nginx/sbin/nginx default environment: development Available actions: new create a new lapis project in the current directory server [environment] build config and start server build [environment] build config, send HUP if server running exec <lua-string> execute Lua on the server migrate [environment] run migrations help show this text |
調べたところ、luarocksのconfigモジュールと競合していて、luarocksのconfigモジュールを読み込んでいたのが原因でした。(lapis.confの124行目あたり)