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

davidcelis/rack-console

Repository files navigation

Rack::Console

Find yourself missing a rails console analogue in your other Ruby web applications? This lightweight gem provides a Rack::Console class that will load your Rack application's code and environment into an IRB or Pry session. Either use Rack::Console.new(options).start directly, or run the provided rack-console executable.

Installation

Add this line to your application's Gemfile:

gem "rack-console"

And then execute:

$ bundle install

Or install it system-wide:

$ gem install rack-console

Usage

Rack::Console ships with a rack-console executable that will load your application in an IRB shell (or Pry if that's included in your Gemfile and you specify the --pry option). Assuming you have a config.ru file in the current directory, simply run:

$ bundle exec rack-console
Loading development environment (Rack::Console 2.0.0)
irb(main):001>

Rack::Console supports some of the same things that rails console provides, as well as some of the options used in rackup:

  • An app method that will return your underlying Rack application with rack-test methods mixed in. You can perform fake requests to your app (e.g. response = app.get('/'))
  • A reload! method to discard new code or defined variables/constants
  • The -c option (or --config) to specify a non-standard config.ru file
  • The -e option (or --environment) to specify the Rack environment to load
  • The -r option (or --require) to require a file/library before Rack::Console loads
  • The -I option (or --include) to specify paths (colon-separated) to add to $LOAD_PATH before Rack::Console loads
  • The -P option (or --[no-]pry) to specify whether to use Pry instead of IRB (Pry must be installed in your project)

Framework CLI Example

Because Rack::Console is just a class, it's easy to provide a console subcommand to a CLI for your own Rack framework. For example, here's how you could hypothetically implement a console subcommand for a generic Rack CLI using Thor:

require "rack/console"
require "thor"
module Rack
 class CLI < Thor
 desc "console [ENVIRONMENT]", "Start a Rack console"
 method_option :config, aliases: "-c", type: "string", desc: "Specify a Rackup file (default: config.ru)"
 method_option :require, aliases: "-r", type: "string", desc: "Require a file/library before console boots"
 method_option :include, aliases: "-I", type: "string", desc: "Add colon-separated paths to $LOAD_PATH"
 def console
 # Set a custom intro message:
 # ENV["RACK_CONSOLE_INTRO"] = "Loading Rack::Console..."
 #
 # Or, to prevent an intro message from being printed at all:
 # ENV["IGNORE_RACK_CONSOLE_INTRO"] = "true"
 Rack::Console.new(options).start
 end
 end
end
Rack::CLI.start(ARGV)

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

About

πŸ’» `rails console` for your Rack applications

Topics

Resources

License

Stars

Watchers

Forks

Packages

Contributors

Languages

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /