Sinatra dressed for interactive ruby - a sinatra shell
Switch branches/tags
Latest commit 3c1b443 May 23, 2014
cldwalker Merge pull request #8 from case/patch-1
Typo: let's you you -> lets you
Failed to load latest commit information.
bin to comfort the hoi polloi Apr 5, 2011
lib Bumped to version 0.3.0 Apr 10, 2011
test add dev deps Apr 10, 2011
.gemspec add dev deps Apr 10, 2011
.travis.yml add travis Feb 23, 2012
CHANGELOG.rdoc update changelog Apr 10, 2011
LICENSE.txt gemification Apr 4, 2011
README.rdoc Typo: let's you you -> lets you May 1, 2014
Rakefile gemification Apr 4, 2011 update gemspec + deps Apr 5, 2011



Tux dresses up sinatra in a shell. Use it to interact with your helpers, view rendering and your app's response objects. Tux also gives you commands to view your app's routes and settings.


Install the gem with:

gem install tux


Start with:

$ tux

If your app's config file isn't, specify with -c

$ tux -c

To interact with your helpers:

>> app.my_helper_method

To interact with any built-in sinatra methods i.e. request and response specific helper methods:

# depends on request
>> app.uri '/'
=> "http://:/"

# depends on response
>> app.headers
=> {"Content-Type"=>"text/html"}

For the above to work, tux sets up default empty request and response objects. To try the helpers with custom requests and responses:

>> app.request ={})
>> app.response =

To interact with your views:

>> app.erb :my_template
=> 'template rendered'

# also
>> app.haml
>> app.markdown

Tux lets you make requests and interact with rack response objects thanks to rack-test:

>> get '/'
=> #<Rack::MockResponse:0x13d452c @headers={"Content-Type"=>"text/html;charset=utf-8",
"Content-Length"=>"4"}, @errors=" - - [05/Apr/2011 02:22:27] \"GET / \" 200 4
0.0015\n", @status=200, @original_headers={"Content-Type"=>"text/html;charset=utf-8",
"Content-Length"=>"4"}, @body="dude">

>> puts last_response.body

>> post '/create'

To see the full list of rack-test actions you can make

>> rack.actions
=> [:request, :get, :post, :put, :delete, :head, :follow_redirect!, :header, :set_cookie,
:clear_cookies, :authorize, :basic_authorize, :digest_authorize, :last_response, :last_request]

Tux also comes with commands to give you a good overview of your app

>> routes
HEAD  "/"
HEAD  /book/:id
GET   "/"
GET   /book/:id

>> settings
absolute_redirects  true
add_charset         [/^text\//, "application/javascript", "application/xml",
app_file            "./sample.rb"
bind                ""
default_encoding    "utf-8"
dump_errors         true
empty_path_info     nil
environment         :development
lock                false
logging             false
method_override     false
port                4567
prefixed_redirects  false
public              "/my/path/public"
raise_errors        false
reload_templates    true
root                "/my/path"
run                 false
running             false
server              ["thin", "mongrel", "webrick"]
session_secret      "XXX"
sessions            false
show_exceptions     true
static              true
views               "/my/path/views"


Since tux is a ripl shell, tux is highly configurable. You can create tux commands in the format tux-COMMAND and enhance your shell by adding ripl plugins to ~/.riplrc. Read ripl’s readme for more.