Ruby Two's Day (27 jun 13)
http://www.ruby-lang.org/en/news/2013/02/24/ruby-2-0-0-p0-is-released/
Also, Rails Four:
http://edgeguides.rubyonrails.org/4_0_release_notes.html
Ruby 2.0 |
module Strings
refine String do
def bang
"#{self}!"
end
end
end
begin
s = "hello"
puts s.bang
rescue Exception => x
puts "s.bang caused an error: "+x.message
puts "trying s.bang, using module with bang in it first"
using Strings
puts s.bang
end
class Foo
SYMBOLS = %I{ foo bar }
def bar(one: "First argument", two: "")
puts two + " " + one
puts SYMBOLS.map( &:to_s ).join( ' ' )
puts __dir__
end
end
foo = Foo.new
foo.bar
foo.bar( two: "Second argument" )
Bar = Struct.new( :bar, :foo ) do
# nothing
end
bar = Bar.new("FOO", "BAR").to_h
bar.each { |k,v| print "#{k}=>#{v} " }
puts
module Prepender
def bar(one: "1st argument", two: "")
puts one + " " + two # the correct order
end
end
class Prepended
prepend Prepender
def bar(one: "argument 1", two: "argument 2")
puts two + " " + one # the incorrect order
end
end
pre = Prepended.new
# the method is overridden by the one in Prepender, but arguments are as below
pre.bar( two: "2nd argument", one: "1st argument" )
# listed in incorrect order, printed in correct order
class Who
def whose_there_using_locations
caller_locations(1,1).size.times { |t|
puts "#{t + 1}. #{ caller_locations(1,1)[t].label }"
}
end
end
class There
def who
who = Who.new
who.whose_there_using_locations
end
end
There.new.who
# http://blog.marc-andre.ca/2013/02/23/ruby-2-by-example
puts "Thanks Marc André from whom most of this was copied ❤" # utf-8
By the way, it's more difficult to install Ruby 2.0.0 on Mac than on Windows! You run 'brew update'
and it tells you to get Xcode, which you have to get from Apple...
$ brew update
[You have to get the latest Xcode from the Apple website]
$ rvm install ruby-2.0.0
Install of ruby-2.0.0-p247 - #complete
'rvm_codesign_identity' is not set so RVM can't sign ruby
Set it in ~/.rvmrc after reading the following about OS X code signing:
https://developer.apple.com/library/mac/
#documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html
$ rvm use 2.0.0-p247
Using ~/.rvm/gems/ruby-2.0.0-p247
$ ruby -v
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin11.4.2]
$ gem install rails --version 4.0.0 --no-ri --no-rdoc
$ bundle update
$ rails server&
[2013-06-30 13:33:04] INFO WEBrick 1.3.1
[2013-06-30 13:33:04] INFO ruby 2.0.0 (2013-06-27) [x86_64-darwin11.4.2]
[2013-06-30 13:33:04] INFO WEBrick::HTTPServer#start: pid=47210 port=3000
Gemfile:
source 'https://rubygems.org'
gem 'rails', '4.0.0'
gem 'sqlite3'
gem 'jquery-rails'
gem 'sass'
gem 'coffee-rails'
group :assets do
gem 'uglifier', '>= 1.0.3'
end
More about the complexity of using Apple computers for Rails here:
http://rodmclaughlin.com/why-do-rails-developers-use-macs-