7. The App Object

The console also provides an interesting object called app , which is basically an instance of your application. With this object, it’s possible to interact with your application as an HTTP client would, among other interesting things.

Access to GET endpoints:

>> app.get('/') Started GET "/" for 127.0.0.1 at 2018-08-25 22:46:52 +0000

(0.5ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC

Processing by HomeController#show as HTML

Rendering home/show.html.erb within layouts/application

Rendered home/show.html.erb within layouts/application (11417.2ms)

Rendered shared/_menu.html.erb (3.6ms)

Rendered shared/header/_autocomplete.html.erb (292.2ms)

Rendered shared/_header.html.erb (312.9ms)

Rendered shared/_footer.html.erb (3.7ms)

Completed 200 OK in 11957ms (Views: 11945.5ms | ActiveRecord: 0.0ms) => 200

Access to POST endpoints:

>> app.post('/games/zelda/wishlist_placements.js') Started POST "/games/zelda/wishlist_placements.js" for 127.0.0.1 at 2018-08-25 23:03:21 +0000

Processing by OwnlistPlacementsController#create as JS

Parameters: {"game_slug"=>"zelda"}

Game Load (0.6ms) SELECT "games".* FROM "games" WHERE "games"."slug" = $1 LIMIT $2 [["slug", "zelda"], ["LIMIT", 1]]

Rendering wishlist_placements/create.js.erb

Rendered wishlist_placements/create.js.erb (194.8ms)

Completed 200 OK in 261ms (Views: 252.9ms | ActiveRecord: 0.6ms) => 200

Search for a _path helper from a Game route:

>> app.methods.grep(/_path/).grep(/game/) => [:search_games_path, :game_ownlist_placements_path, :game_ownlist_placement_path, :game_wishlist_placements_path, :game_wishlist_placement_path, :game_path]

Combining the previous tricks in a more useful way:

>> app.get(app.root_path) Started GET "/" for 127.0.0.1 at 2018-08-26 02:27:40 +0000

Processing by HomeController#show as HTML

Rendering home/show.html.erb within layouts/application

Rendered home/show.html.erb within layouts/application (12550.2ms)

Rendered shared/_menu.html.erb (3.8ms)

Rendered shared/header/_autocomplete.html.erb (1.2ms)

Rendered shared/_header.html.erb (28.0ms)

Rendered shared/_footer.html.erb (3.8ms)

Completed 200 OK in 12835ms (Views: 12810.0ms | ActiveRecord: 0.0ms) => 200

>> app.body.response => "

<!DOCTYPE html>

<html>

<head>

<title> ...

>> app.cookies => # @default_host =" www.example.com ", @cookies =[# @default_host =" www.example.com ", ...

Have a trick of your own that you'd like to share? Leave a comment, I'd love to hear about it.