■Flash Air で Lua を動かしてみる
前回の更新から間が空いてしまい申し訳ありません。
今後は月1回は更新していく予定ですのでよろしくお願いします。
さて前回は以下3つの方法のうち「起動時に実行する」を勉強しました。
・起動時に実行する
・書き込みイベントで実行する
・HTTPリクエストで実行する
今回は「HTTPリクエストで実行する」を勉強したいと思います。
「書き込みイベントで実行する」を飛ばして「HTTPリクエストで実行する」を先にやるのかというと
ブラウザ上に結果が出力される為、Luaが正しく動作しているのかが、わかりやすいのが理由です。
また、文法エラーや実行時エラーが発生しても結果が出力されず原因がわかりません。
そこで以下の方法を紹介します。この方法は他のサイトで紹介されています。
この方法を使えばLuaのデバッグができます。
ではさっそく始めたいと思います。
はじめに、デバッグ用のLuaを用意します。
ファイル名は flashair_debug.lua としておきます。
-- HTTPリクエスト用Luaのファイルからチャンクを取得する f = loadfile("HttpRequest.lua") -- 保護モードでHTTPリクエスト用LuaをCallする -- 内部で何らかのエラーが発生しても伝搬されず、 代わりに pcall がエラーをキャッチし、ステータスコードを返します。 local statcode, errormsg = pcall(f) if statcode then -- 成功 print("") print("Server: FlashAir") else -- 失敗 print("HTTP/1.1 500 Internal Server Error\n\n") print("<pre>") print("Server: FlashAir") print(" Faild!\n") print("------------\n") print(errormsg) print("\n------------\n") print("</pre>") end
次にHTTPリクエスト用Luaを用意します。
ファイル名は HttpRequest.lua とします。
あえてバグを仕込みます。
print("HttpRequest.Lua!! ") print("Start HttpRequest.lua
") 文法エラー error("実行中エラー") print("Success!") print("")
では以下順番でデバッグを行います。
・文法エラー(Luaが実行されない)
・実行中エラー
・成功
・文法エラー(Luaが実行されない)
ブラウザよりデバッグ用のLuaを実行します。
http://flashair/flashair_debug.lua
以下結果がブラウザに出力されました。
Luaが実行されていないことがわかります。
HTTPリクエスト用Luaから “文法エラー” を削除します。
Faild!!
————
attempt to call a nil value
————
・実行中エラー
ブラウザよりデバッグ用のLuaを実行します。
以下結果がブラウザに出力されました。
Luaが実行されてエラーが発生したことが分かります。
HTTPリクエスト用Luaから “error(“実行中エラー”) を削除します。
Start HttpRequest.lua
HTTP/1.1 500 Internal Server Error
Faild!!
————
body.lua:4: 実行中エラー
————
・成功
ブラウザよりデバッグ用のLuaを実行します。
http://flashair/flashair_debug.lua
以下結果がブラウザに出力されました。
Luaが正しく実行されました。
Start HttpRequest.lua
Success!
これでデバッグは終わりました。
直接、HTTPリクエスト用Luaを実行できます。
今回はここまでにしたいと思います。