21 May 2017

Awesome Rails console customization using pry

Subj

Улучшаем внешний вид информации в консоли.

Flow

Installation

Добавляем в Gemfile эти строки:
gem "pry-rails"
gem "awesome_print", :require => false

group :development, :test do
  gem "pry-plus"
  gem "hirb", :require => false
  gem "hirb-unicode", :require => false
end

group :development do
  gem "pry-remote"
end
Делаем bundle.
Лабаем .pryrc с таким содержимым:
require "awesome_print"
AwesomePrint.pry!

begin
  require "hirb"
  require "hirb-unicode"
  extend Hirb::Console
rescue LoadError => e
end

Что такое .pryrc?

The .pryrc file is analogous to the .irbrc file for IRB.
You can use the .pryrc file to customize Pry.
When pry starts, it checks for a .pryrc file in your home directory(~/.pryrc)
and also for a per-project .pryrc in the current directory(./.pryrc).
Both files are used if they exist, with the file from your home directory being loaded first.
Создаём config/initializers/pry.rb с таким содержимым:
## config/initializers/pry.rb
## encoding: utf-8

Pry.config.prompt_name = Rails.application.class.parent_name.underscore.dasherize

unless Rails.env.development?
  old_prompt = Pry.config.prompt

  if Rails.env.production?
    env = "\001\e[0;31m\002#{Rails.env.upcase}\001\e[0m\002"
  else
    env = "\001\e[0;33m\002#{Rails.env.upcase}\001\e[0m\002"
  end

 
  Pry.config.prompt = [
    proc { |*a| "#{env} #{old_prompt.first.call(*a)}"  },
    proc { |*a| "#{env} #{old_prompt.second.call(*a)}" }
  ]
end

Usage

Входим в консоль rails c.
Как выглядит выдача в pure irb:
Подключаем awesome_print:
Подключаем hirb:
Подключаем pry:
Можно использовать table что-то, например:
Или: