|
|
@@ -0,0 +1,128 @@ |
|
|
# === EDITOR === |
|
|
Pry.editor = 'vi' |
|
|
require 'awesome_print' |
|
|
|
|
|
# == Pry-Nav - Using pry as a debugger == |
|
|
Pry.commands.alias_command 'c', 'continue' rescue nil |
|
|
Pry.commands.alias_command 's', 'step' rescue nil |
|
|
Pry.commands.alias_command 'n', 'next' rescue nil |
|
|
|
|
|
# === CUSTOM PROMPT === |
|
|
# This prompt shows the ruby version (useful for RVM) |
|
|
# Pry.prompt = [proc { |obj, nest_level, _| "#{RUBY_VERSION} (#{obj}):#{nest_level} > " }, proc { |obj, nest_level, _| "#{RUBY_VERSION} (#{obj}):#{nest_level} * " }] |
|
|
BLACK = "\001\e[0;30m\002" |
|
|
WHITE = "\001\e[0m\002" |
|
|
Pry.prompt = [ |
|
|
proc { |target_self, nest_level, pry| |
|
|
line_num = pry.input_array.size |
|
|
prompt = "#{line_num} " |
|
|
"#{BLACK}#{prompt}#{WHITE}" |
|
|
}, |
|
|
proc { |target_self, nest_level, pry| |
|
|
prompt = ". " |
|
|
"#{BLACK}#{prompt}#{WHITE}" |
|
|
} |
|
|
] |
|
|
|
|
|
|
|
|
# === Listing config === |
|
|
# Better colors - by default the headings for methods are too |
|
|
# similar to method name colors leading to a "soup" |
|
|
# These colors are optimized for use with Solarized scheme |
|
|
# for your terminal |
|
|
Pry.config.ls.separator = "\n" # new lines between methods |
|
|
Pry.config.ls.heading_color = :magenta |
|
|
Pry.config.ls.public_method_color = :green |
|
|
Pry.config.ls.protected_method_color = :yellow |
|
|
Pry.config.ls.private_method_color = :bright_black |
|
|
|
|
|
# == PLUGINS === |
|
|
# awesome_print gem: great syntax colorized printing |
|
|
# look at ~/.aprc for more settings for awesome_print |
|
|
begin |
|
|
require 'awesome_print' |
|
|
# The following line enables awesome_print for all pry output, |
|
|
# and it also enables paging |
|
|
Pry.config.print = proc { |output, value| Pry::Helpers::BaseHelpers.stagger_output("=> #{value.ai}", output) } |
|
|
|
|
|
# If you want awesome_print without automatic pagination, use the line below |
|
|
# Pry.config.print = proc { |output, value| output.puts value.ai } |
|
|
rescue LoadError => err |
|
|
puts "gem install awesome_print # <-- highly recommended" |
|
|
end |
|
|
|
|
|
# === CUSTOM COMMANDS === |
|
|
# from: https://gist.github.com/1297510 |
|
|
default_command_set = Pry::CommandSet.new do |
|
|
command "copy", "Copy argument to the clip-board" do |str| |
|
|
IO.popen('pbcopy', 'w') { |f| f << str.to_s } |
|
|
end |
|
|
|
|
|
command "clear" do |
|
|
system 'clear' |
|
|
if ENV['RAILS_ENV'] |
|
|
output.puts "Rails Environment: " + ENV['RAILS_ENV'] |
|
|
end |
|
|
end |
|
|
|
|
|
command "sql", "Send sql over AR." do |query| |
|
|
if ENV['RAILS_ENV'] || defined?(Rails) |
|
|
pp ActiveRecord::Base.connection.select_all(query) |
|
|
else |
|
|
pp "No rails env defined" |
|
|
end |
|
|
end |
|
|
command "caller_method" do |depth| |
|
|
depth = depth.to_i || 1 |
|
|
if /^(.+?):(\d+)(?::in `(.*)')?/ =~ caller(depth+1).first |
|
|
file = Regexp.last_match[1] |
|
|
line = Regexp.last_match[2].to_i |
|
|
method = Regexp.last_match[3] |
|
|
output.puts [file, line, method] |
|
|
end |
|
|
end |
|
|
end |
|
|
|
|
|
Pry.config.commands.import default_command_set |
|
|
|
|
|
|
|
|
# === CONVENIENCE METHODS === |
|
|
# Stolen from https://gist.github.com/807492 |
|
|
# Use Array.toy or Hash.toy to get an array or hash to play with |
|
|
class Array |
|
|
def self.toy(n=10, &block) |
|
|
block_given? ? Array.new(n,&block) : Array.new(n) {|i| i+1} |
|
|
end |
|
|
end |
|
|
|
|
|
class Hash |
|
|
def self.toy(n=10) |
|
|
Hash[Array.toy(n).zip(Array.toy(n){|c| (96+(c+1)).chr})] |
|
|
end |
|
|
end |
|
|
|
|
|
# === COLOR CUSTOMIZATION === |
|
|
# Everything below this line is for customizing colors, you have to use the ugly |
|
|
# color codes, but such is life. |
|
|
CodeRay.scan("example", :ruby).term # just to load necessary files |
|
|
# Token colors pulled from: https://github.com/rubychan/coderay/blob/master/lib/coderay/encoders/terminal.rb |
|
|
|
|
|
$LOAD_PATH << File.dirname(File.realpath(__FILE__)) |
|
|
|
|
|
# In CodeRay >= 1.1.0 token colors are defined as pre-escaped ANSI codes |
|
|
if Gem::Version.new(CodeRay::VERSION) >= Gem::Version.new('1.1.0') |
|
|
require "escaped_colors" |
|
|
else |
|
|
require "unescaped_colors" |
|
|
end |
|
|
|
|
|
module CodeRay |
|
|
module Encoders |
|
|
class Terminal < Encoder |
|
|
# override old colors |
|
|
TERM_TOKEN_COLORS.each_pair do |key, value| |
|
|
TOKEN_COLORS[key] = value |
|
|
end |
|
|
end |
|
|
end |
|
|
end |