Search code examples
ruby-on-railsconsole

How can I call controller/view helper methods from the console in Ruby on Rails?


When I load script/console, sometimes I want to play with the output of a controller or a view helper method.

Are there ways to:

  • simulate a request?
  • call methods from a controller instance on said request?
  • test helper methods, either via said controller instance or another way?

Solution

  • To call helpers, use the helper object:

    $ ./script/console
    >> helper.number_to_currency('123.45')
    => "R$ 123,45"
    

    If you want to use a helper that's not included by default (say, because you removed helper :all from ApplicationController), just include the helper.

    >> include BogusHelper
    >> helper.bogus
    => "bogus output"
    

    As for dealing with controllers, I quote Nick's answer:

    > app.get '/posts/1'
    > response = app.response
    # you now have a rails response object much like the integration tests
    
    > response.body            # get you the HTML
    > response.cookies         # hash of the cookies
    
    # etc, etc