Skip to content

Instantly share code, notes, and snippets.

@misterkak
Created September 3, 2014 18:31
Show Gist options
  • Save misterkak/a87cf4c87584fc28c619 to your computer and use it in GitHub Desktop.
Save misterkak/a87cf4c87584fc28c619 to your computer and use it in GitHub Desktop.
playing with IRB / PRY
misterkak@misterkak-900X4D:~$ pry
[1] pry(main)> print "enter your name: "
enter your name: => nil
[2] pry(main)> name = gets.chomp
mike
=> "mike"
[3] pry(main)> puts name
mike
=> nil
[4] pry(main)> quit
misterkak@misterkak-900X4D:~$ clear
misterkak@misterkak-900X4D:~/work/ruby$ ruby example.rb
Enter your name: mike!!!
Hello, mike!!!
misterkak@misterkak-900X4D:~/work/ruby$ pry
[1] pry(main)> def say_hi(name)
[1] pry(main)* puts "Hi #{name}"
[1] pry(main)* end
=> nil
[2] pry(main)> say_hi "Mike"
Hi Mike
=> nil
[3] pry(main)> methods
=> [:to_s,
:public,
:private,
:include,
:pry,
:__binding__,
:pretty_print,
:pretty_print_cycle,
:pretty_print_instance_variables,
:pretty_print_inspect,
:nil?,
:===,
:=~,
:!~,
:eql?,
:hash,
:<=>,
:class,
:singleton_class,
:clone,
:dup,
:initialize_dup,
:initialize_clone,
:taint,
:tainted?,
:untaint,
:untrust,
:untrusted?,
[4] pry(main)> str = "string!"
=> "string!"
[5] pry(main)> str2 = str!
NoMethodError: undefined method `str!' for main:Object
from (pry):7:in `__pry__'
[6] pry(main)> str! = str
SyntaxError: unexpected '='
str! = str
^
[6] pry(main)> str! == str
NoMethodError: undefined method `str!' for main:Object
from (pry):8:in `__pry__'
[7] pry(main)> str
=> "string!"
[8] pry(main)> str.inspect
=> "\"string!\""
[9] pry(main)> arr = [1,2,3,8,4]
=> [1, 2, 3, 8, 4]
[10] pry(main)> arr = arr.sort!
=> [1, 2, 3, 4, 8]
[11] pry(main)> arr.methods
=> [:inspect,
:to_s,
:to_a,
:to_ary,
:frozen?,
:==,
:eql?,
:hash,
:[],
:[]=,
:at,
:fetch,
:first,
:last,
:concat,
:<<,
:push,
:pop,
:shift,
:unshift,
:insert,
:each,
:each_index,
:reverse_each,
:length,
:size,
:empty?,
:find_index,
:index,
:rindex,
:join,
:reverse,
:reverse!,
:rotate,
:rotate!,
:sort,
:sort!,
:sort_by!,
:collect,
:collect!,
:map,
:map!,
:select,
:select!,
:keep_if,
:values_at,
:delete,
:delete_at,
:delete_if,
:reject,
:reject!,
:zip,
:transpose,
:replace,
:clear,
:fill,
:include?,
:<=>,
:slice,
:slice!,
:assoc,
:rassoc,
:+,
:*,
:-,
:&,
:|,
:uniq,
:uniq!,
:compact,
:compact!,
:flatten,
:flatten!,
:count,
:shuffle!,
:shuffle,
:sample,
:cycle,
:permutation,
:combination,
:repeated_permutation,
:repeated_combination,
:product,
:take,
:take_while,
:drop,
:drop_while,
:pack,
:pretty_print,
:pretty_print_cycle,
:shelljoin,
:entries,
:sort_by,
:grep,
:find,
:detect,
:find_all,
:flat_map,
:collect_concat,
:inject,
:reduce,
:partition,
:group_by,
:all?,
:any?,
:one?,
:none?,
:min,
:max,
:minmax,
:min_by,
:max_by,
:minmax_by,
:member?,
:each_with_index,
:each_entry,
:each_slice,
:each_cons,
:each_with_object,
:chunk,
:slice_before,
:pry,
:__binding__,
:pretty_print_instance_variables,
:pretty_print_inspect,
:nil?,
:===,
:=~,
:!~,
:class,
:singleton_class,
:clone,
:dup,
:initialize_dup,
:initialize_clone,
:taint,
:tainted?,
:untaint,
:untrust,
:untrusted?,
:trust,
:freeze,
:methods,
:singleton_methods,
:protected_methods,
:private_methods,
:public_methods,
:instance_variables,
:instance_variable_get,
:instance_variable_set,
:instance_variable_defined?,
:instance_of?,
:kind_of?,
:is_a?,
:tap,
:send,
:public_send,
:respond_to?,
:respond_to_missing?,
:extend,
:display,
:method,
:public_method,
:define_singleton_method,
:object_id,
:to_enum,
:enum_for,
:pretty_inspect,
:equal?,
:!,
:!=,
:instance_eval,
:instance_exec,
:__send__,
:__id__]
[12] pry(main)> str.each
NoMethodError: undefined method `each' for "string!":String
from (pry):14:in `__pry__'
[13] pry(main)> arr.each
=> #<Enumerator: ...>
[14] pry(main)> arr.each { |x| puts x }
1
2
3
4
8
=> [1, 2, 3, 4, 8]
[15] pry(main)> arr
=> [1, 2, 3, 4, 8]
[16] pry(main)> arr.each
=> #<Enumerator: ...>
[17] pry(main)> { |x| puts x }
SyntaxError: unexpected tIDENTIFIER, expecting keyword_do or '{' or '('
{ |x| puts x }
^
[17] pry(main)> arr.each
=> #<Enumerator: ...>
[18] pry(main)> do {
SyntaxError: unexpected keyword_do_block, expecting $end
[18] pry(main)> names = { "mike" => 1, "rob" => 2, "kak" => "sur" }
=> {"mike"=>1, "rob"=>2, "kak"=>"sur"}
[19] pry(main)> names.each { |x| puts x }
mike
1
rob
2
kak
sur
=> {"mike"=>1, "rob"=>2, "kak"=>"sur"}
[20] pry(main)> names.mike
NoMethodError: undefined method `mike' for {"mike"=>1, "rob"=>2, "kak"=>"sur"}:Hash
from (pry):22:in `__pry__'
[21] pry(main)> puts names["mike"]
1
=> nil
[22] pry(main)> names[:mike]
=> nil
[23] pry(main)> Math.sqrt(1282)
=> 35.805027579936315
[24] pry(main)> Time.now
=> 2014-09-03 11:23:03 -0700
[25] pry(main)> Array.new(10, 'bee')
=> ["bee", "bee", "bee", "bee", "bee", "bee", "bee", "bee", "bee", "bee"]
[26] pry(main)> include Math
=> Object
[27] pry(main)> sqrt (64)
=> 8.0
[28] pry(main)> sqrt 64
=> 8.0
[29] pry(main)> names.inspect
=> "{\"mike\"=>1, \"rob\"=>2, \"kak\"=>\"sur\"}"
[30] pry(main)>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment