Skip to content

Instantly share code, notes, and snippets.

@devonzuegel
Last active September 18, 2024 04:59
Show Gist options
  • Save devonzuegel/c6e69d1d9981fc740a46 to your computer and use it in GitHub Desktop.
Save devonzuegel/c6e69d1d9981fc740a46 to your computer and use it in GitHub Desktop.

Revisions

  1. devonzuegel revised this gist Jul 27, 2015. No changes.
  2. devonzuegel revised this gist Jul 24, 2015. 1 changed file with 9 additions and 1 deletion.
    10 changes: 9 additions & 1 deletion .pryrc
    Original file line number Diff line number Diff line change
    @@ -43,7 +43,15 @@ 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) }
    Pry.config.print = proc { |output, value|
    formatted = value.ai
    value.ai.split("\n").each_with_index do |v, i|
    prefix = (i == 0) ? "=>" : '. '
    output.puts "#{BLACK}#{prefix}#{WHITE} #{v}"
    end
    # output.puts formatted
    # Pry::Helpers::BaseHelpers.stagger_output("#{BLACK}=>#{WHITE} #{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 }
  3. devonzuegel created this gist Jul 24, 2015.
    128 changes: 128 additions & 0 deletions .pryrc
    Original file line number Diff line number Diff line change
    @@ -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