■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を実行できます。
今回はここまでにしたいと思います。
