Instance / class attr accessors
class User
attr_reader ( :id )
attr_writer ( :name )
attr_accessor ( :city )
class << self
attr_reader ( :service_id )
end
end
def with_log ( &block )
log ( "Call starts" )
block . call
end
def with_log
log ( "Call starts" )
yield
end
def delete ( user )
yield ( user ) if block_given?
DB . delete ( user )
end
def save_user ( user )
user . save
rescue SaveError => err
log_error ( err )
if user . validation_on?
user . turn_off_validation
retry
end
rescue => err
log_error ( user )
ensure
log ( user )
end
[ 0 , 1 , 2 ] . each { next if it . odd? ; puts ( it ) }
p ( 10 . times . map do |i |
die_1 = rand ( 1 ..6 )
die_2 = rand ( 1 ..6 )
redo unless die_1 + die_2 == 7
[ die_1 , die_2 ]
end )
for n in [ 1 , 2 , 3 ]
p ( n )
end
[ 1 , 2 , 3 ] . each do |i |
p ( i )
end
doubled_evens = 10 . times . filter_map do
next false if it . odd?
it << 1
end
def fibonacci
Enumerator . new do |yielder |
yielder . yield ( 0 )
a = 0
b = 1
loop {
a , b = b , a + b
yielder . yield ( a )
}
end
end
fibonacci . take ( 10 )
GC . start
ObjectSpace . count_objects
succ = Proc . new { |x | x + 1 }
succ = lambda { |x | x + 1 }
require 'benchmark/ips'
Benchmark . ips do |x |
x . report ( "String +" ) { "Hello, " + "world!" }
x . report ( "String <<" ) { str = "Hello, " ; str << "world!" }
x . report ( "String interpolation" ) { "Hello, #{ 'world!' } " }
x . compare!
end
ruby --dump=insns < source> .rb