Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

saks/lua-resty-repl

Repository files navigation

Welcome to Resty Repl

Features

Resty Repl is a powerful alternative to the standard luajit shell ispired by pry. It is written from scratch to provide a number of advanced features, including:

  • Full read/write access to locals, upvalues and global variables
  • Pretty print for objects
  • A Powerful and flexible command system
  • Ability to view and replay history
  • Ability to see a context and source of the place in code from where repl was started
  • Runtime invocation (use Resty Repl as a developer console or debugger)
  • Tab completion
  • Simple and easy way to debug lua running in the nginx (openresty)

Runtime invocation

First install luarock

luarocks install lua-resty-repl

Then just drop this snippet anywhere in your code:

require('resty.repl').start()

or run as cli:

resty-repl

Openresty debugger

But what makes it really nice is that now you can debug your openresty code right from running nginx!

master_process off;
error_log stderr notice;
daemon off;
events {
 worker_connections 1024;
}
http {
 server {
 listen 8080;
 lua_code_cache off;
 location / {
 content_by_lua_block {
 require('resty.repl').start()
 }
 }
 }
}

and start debugging:

$ curl -H X-Header:buz 172.17.0.2:8080?foo=bar
nginx -c /tmp/ngx.conf
2016年09月20日 16:26:33 [alert] 2257#0: lua_code_cache is off; this will hurt performance in /tmp/ngx.conf:12
nginx: [alert] lua_code_cache is off; this will hurt performance in /tmp/ngx.conf:12
2016年09月20日 16:26:33 [notice] 2257#0: using the "epoll" event method
2016年09月20日 16:26:33 [notice] 2257#0: openresty/1.11.2.1
2016年09月20日 16:26:33 [notice] 2257#0: built by gcc 4.9.2 (Debian 4.9.2-10)
2016年09月20日 16:26:33 [notice] 2257#0: OS: Linux 4.4.0-38-generic
2016年09月20日 16:26:33 [notice] 2257#0: getrlimit(RLIMIT_NOFILE): 65536:65536
From: content_by_lua(ngx.conf:17) @ line 2
[1] ngx(content)> ngx.req.get_headers()
=> {
 accept = "*/*",
 host = "172.17.0.2:8080",
 ["user-agent"] = "curl/7.47.0",
 ["x-header"] = "buz",
 <metatable> = {
 __index = <function 1>
 }
}
[2] ngx(content)> ngx.req.get_uri_args()
=> {
 foo = "bar"
}
[3] ngx(content)> ngx.say 'it works!'
=> 1
[4] ngx(content)> ngx.exit(ngx.OK)
172.17.0.1 - - [20/Sep/2016:16:26:50 +0000] "GET /?foo=bar HTTP/1.1" 200 20 "-" "curl/7.47.0"

Compatibility

Right now it's only compatible with:

  • luajit
  • lua5.1 (no readline)

Os Support

  • GNU/Linux
  • Mac OS

Roadmap

  • colorized output
  • smarter completion
  • full readline support for lua (no ffi environments)
  • remote debugger
  • command for showing function source
  • test suite with resty-cli, luajit and different versions of lua
  • better inspect library

Code Status

Build Status

License

resty-repl is released under the MIT License.

AltStyle によって変換されたページ (->オリジナル) /