Ruby (programmeerimiskeel)
See artikkel ootab keeletoimetamist. (Jaanuar 2020) |
Ruby on interpreteeritav programmeerimiskeel, mille looja on Yukihiro Matsumoto.
Ruby | |
---|---|
Ruby logo | |
Faililaiend | .rb |
Paradigma | multiparadigmaline: funktsionaalne, imperatiivne, objektorienteeritud, reflektiivne |
Väljalaskeaeg | 1995 |
Looja | Yukihiro "Matz" Matsumoto |
Arendaja | Yukihiro "Matz" Matsumoto |
Viimane väljalase | 3.3.5 (3.09.2024) |
Tüüpimine | dünaamiline, tugev |
Mõjutatud keeltest | Ada[1], BASIC[2], C++[1], CLU[3], Dylan[3], Eiffel[1], Lisp[3], Lua, Perl[3], Python[3], Smalltalk[3] |
Mõjutanud keeli | Apache Groovy, Clojure, CoffeeScript, Crystal, D, Elixir, Julia[4], Rust[5], Swift[6] |
OS | multi-platvormne |
Litsents | GNU GPL, Ruby litsents |
Veebileht | www.ruby-lang.org |
Ruby on dünaamiliselt tüübitud ja mälukoristusvahenditega keel, mis võimaldab kasutada mitmesuguseid programmeerimise paradigmasid, kaasa arvatud protseduraalset, objektorienteeritut ja funktsionaalset programmeerimist. Ruby loomisel võttis Matsumoto inspiratsiooni mitmest programmeerimiskeelest, näiteks Perlist, Smalltalkist, Adast, Eiffelist, BASICust ja Lispist.[7][2]
Ruby teeke tuntakse nimetuse "gem" all ning programmi RubyGems abiga on neid võimalik lihtsasti läbi käsurea installida.[8]
Ajalugu
muudaMatsumoto mõtles Ruby välja aastal 1993 ning kirjeldab Rubyt kui keelt, mis on sisemuselt justkui Lisp, objektisüsteemiga nagu Smalltalk, plokkidega, mis võtavad inspiratsiooni kõrgemat järku funktsioonidelt ning Perli praktilise kasulikkusega.[9][10]
Nimi Ruby pärineb 24. veebruaril 1993 toimunud veebivestlusest Matsumoto ning Keiju Ishitsuka vahel, veel enne kui Matsumoto oli keelt looma hakanud.[11] Algul pakkusid nad välja kaks nime: Coral ja Ruby, millest Matsumoto valis viimase.[12] Matsumoto on hiljem öelnud, et nimevalikus üks mängis rolli ühe tema kolleegi sünnikivi, milleks oli rubiin.[10][13]
Esimene avalik Ruby versioon oli 0.95, mis tuli välja 21. detsembril 1995.[14] Järgmise kahe päeva jooksul ilmus veel kolm uut Ruby versiooni.[11] Selles faasis olid Rubys juba mitmed tuttavad funktsioonid, seehulgas peamiselt objektorienteeritud disain, klassid koos pärimisega, mikserid, iteraatorid, sulundid, eranditöötlus ja mälukoristusvahendid.[15]
Esimene artikkel Ruby kohta kirjutati alles aastal 1997. Samal aastal värvati Matsumoto tööle ettevõttesse netlab.jp, et töötada Ruby kallal täiskohaga arendajana. 1998. aastal lõi Matsumoto Ruby Application Archive'i ning esimese ingliskeelse veebilehe Ruby kohta.[11] 1999. aastal loodi ka ingliskeelne Ruby meililist kasvava huvi tõttu keele vastu väljaspool Jaapanit.[16] 1999. aastal kirjutasid Matsumoto ja Keiju Ishitsuka Ruby kohta raamatu "Objektorienteeritud skriptimiskeel Ruby" (オブジェクト指向スクリプト言語 Ruby), mis avaldati Jaapanis 1999. aasta oktoobris. 2000. aastate alguses kirjutati Ruby kohta Jaapanis veel paarkümmend raamatut.[11]
2000. aastaks oli Ruby Jaapanis populaarsem kui Python.[17] 2000. aasta septembris ilmus Ruby kohta ka ingliskeelne raamat "Programming Ruby", mis avaldati hiljem internetis tasuta, mis suurendas huvi Ruby kohta väljaspool Jaapnit veelgi rohkem.[18] 2002. aasta alguseks oli ingliskeelne Ruby meililist tunduvalt populaarsem kui jaapanikeelne, demonstreerides Ruby kasutuse kasvu mujal maailmas.
Varased Ruby versioonid
muudaPärast Ruby versiooni 0.95 1995. aastal anti välja veel mitu stabiilset Ruby versiooni:
- Ruby 1.0 – 25. detsember 1996[11]
- Ruby 1.2 – 1998. aasta detsember
- Ruby 1.4 – 1999. aasta august
- Ruby 1.6 – 2000. aasta september
Ruby 1.8
muudaRuby versioon 1.8 ilmus algselt 2003. aasta augustis ning oli pikka aega Ruby stabiilne versioon. Ruby 1.8 määratleti aegunud versioonina alles 2013. aasta juunis.[19] Sellest hoolimata leiab veel palju koodi, mis on kirjutatud just selles versioonis. Ruby versioonil 1.8 kirjutati algne versioon veebiraamistikust Ruby on Rails, mis aitas muuta Ruby veelgi populaarsemaks.[19][20]
Ruby 1.9
muudaRuby versioon 1.9 ilmus algselt 25. detsembril 2007. Versioon 1.9 erines päris palju varasematest versioonidest ning seetõttu võttis aega, et 1.9 omaks võetaks, kuna see nõudis suure osa koodi ümberkirjutamist ning ka kolmandate osapoolte kirjutatud gemide uuendamist.[21]
Ruby 1.9 tõi keelde suuri muudatusi, näiteks:[22]
- lokaalsed muutujad
- uue lambda süntaksi:
f = ->(a,b) ( puts a + b )
- uue paisktabeli süntaksi:
{võti: "väärtus"} == {:võti => "väärtus"}
- igale sõnele spetsiifilise tähemärgikodeeringu andmise võimaluse
- uue võrgusokli rakendusliidese (koos toetusega IPv6le)
require_relative
importide turvalisuse
Ruby 1.9 määratleti aegunud versioonina 23. veebruaril 2015.[23]
Ruby 2.0
muudaRuby versioon 2.0 ilmus 24. veebruaril 2013. Peaaegu kogu Ruby 1.9 kood sobitub automaatselt Ruby versiooniga 2.0, esineda võib vaid üksikuid probleeme.[24]
Ruby 2.0 tõi keelde veelgi muudatusi, näiteks:
- meetoditele võtmesõnade argumendid
- meetodi
Module#prepend
klasside laiendamiseks - konstandi, mis sisaldab järjendit sümbolitest
- uue tava kasutada meetodit
#to_h
et muuta objektid paisktabeliteks[24]
Ruby 2.0 määratleti aegunud versioonina 22. veebruaril 2016.[25]
Ruby 2.1
muudaRuby versioon 2.1.0 ilmus 25. detsembril 2013. See versioon aitas kaasa keele optimeerimisele ning parandas mõningaid vigu.[26]
Ruby 2.1 määratleti aegunud versioonina 1. aprillil 2017, viimane versiooninumber oli 2.1.10.[27]
Ruby 2.2
muudaRuby versioon 2.2.0 ilmus 25. detsembril 2014. Versioon optimeeris keelt veelgi ning parandas vigu, samuti uuendati teeke ning eemaldati mõningad aegunud rakendusliidesed. Suurimad muudatused Ruby 2.2.0 puhul on seostatud mäluga, näiteks on mälukoristusvahendid nüüd inkrementaalsed ning töötavad ka sümbolitega.[28]
Ruby 2.2 määratleti aegunud versioonina 31. märtsil 2018, viimane versiooninumber oli 2.2.10.[29]
Ruby 2.3
muudaRuby versioon 2.3.0 ilmus 25. detsembril 2015.[30] Mõned tähtsamad muudatused versioonis 2.3:
- sõneoperatsioone sõnekonstantide peal on võimalik muuta kiiremaks muutes sõnekonstandid hangunuks[31]
- paisktabelite võrdlemisel on võimalik võrrelda võtmeid ja väärtusi korraga, varem sai korraga võrrelda ainult võtmeid
- nagivatsioonioperaator
&.
, mis teeb nil väärtuste käitlemise lihtsamaks (näiteksif obj && obj.foo && obj.foo.bar
asemel saab kasutadaif obj&.foo&.bar
- did_you_mean gem on nüüd baaskoodis ning aitab automaatselt leida sarnaseid objektide nimesid NameErrori või NoMethodErrori puhul
- meetod
#dig
järjendite ja paisktabelite jaoks, mis aitavad kergemini saada andmestruktuuridest sügavamaid väärtusi (näiteks paisktabelistprofiil = { sotsiaal: { vikipeedia: { nimi: 'Mari Mets' } } }
saab väärtuse Mari Mets kätte kasutades koodiprofiil.dig(:sotsiaal, :vikipeedia, :nimi)
)[30]
Versioon 2.3 aitab kaasa ka keele üleüldisele optimeerimisele ning parandab muid vigu.[32]
Ruby 2.3 määratleti aegunud versioonina 31. märtsil 2019, viimane versiooninumber oli 2.3.8.[33]
Ruby 2.4
muudaRuby versioon 2.4.0 ilmus 25. detsembril 2016.[34] Mõned tähtsaad muudatused versioonis 2.4:
- Fixnum ja Bignum objektid on nüüd mõlemad klassifitseeritud osana Integer klassist, ehk täisarvudena
- uus meetod
Regexp#match?
, mis on kiirem versioon meetodistRegexp#match
ning tagastab tõeväärtuse[34]
Ruby 2.4 on jätkuvalt toetatud versioon ning viimane versiooninumber on 2.4.8, kuid määratletakse kui aegunud versioon 1. aprillil 2020.[35]
Ruby 2.5
muudaRuby versioon 2.5.0 ilmus 25. detsembril 2017.[36] Mõned tähtsamad muudatused versioonis 2.5:
- rescue ja ensure laused kasutavad nüüd automaatselt do-end plokki
- paisktabelite muutmiseks meetodid
#slice
ja#transform_keys
[36]
Versioon 2.5 toob kaasa ka palju parandusi keele optimeerimiseks, näiteks plokkide läbimine on 3 korda kiirem ning mõned objektide liitmismeetodid on samuti kiiremad.[36]
Ruby 2.5 on jätkuvalt toetatud versioon ning viimane versiooninumber on 2.5.7.[37]
Ruby 2.6
muudaRuby versioon 2.6.0 ilmus 25. detsembril 2018.[38] Ruby 2.6 on jätkuvalt toetatud versioon ning viimane versiooninumber on 2.6.5.[39]
Ruby 2.7
muudaRuby versioon 2.7.0 ilmus 25. detsembril 2019. Ruby 2.7 on hetkene stabiilne versioon ning viimane versiooninumber on 2.7.0.[40]
Näited
muudaKlassikaline Hello world programm:
puts 'Hello World!'
Rubys käsitletakse kõiki andmetüüpe (sealhulgas täisarve ja tõeväärtusi) objektidena, seega:
-199.abs # => 199
'ruby on lahe'.length # => 12
'ruby on lahe'.index('u') # => 1
"Kena, kas pole?".downcase.split('').uniq.sort.join # => " ,?aeklnops"
Sisendid:
print 'Palun sisesta oma nimi:'
nimi = gets.chomp
puts "Tere, #{nimi}."
Konversioonid:
puts 'Anna mulle arv:'
arv = gets.chomp
puts arv.to_i
arv_välja = arv.to_i + 1
puts arv_välja.to_s + ' on suurem arv.'
Sõned
muudaRubys on sõnesid võimalik defineerida mitmel viisil. Järgnevad muutujad on sama väärtusega:
a = "\nSee on jutumärkides sõne\n"
b = %Q{\nSee on jutumärkides sõne\n}
c = %{\nSee on jutumärkides sõne\n}
d = %/\nSee on jutumärkides sõne\n/
e = <<-BLOCK
See on jutumärkides sõne
BLOCK
Sõnedes saab muutujaid interpoleerida:
var = 3.14159
"pi on #{var}"
=> "pi on 3.14159"
Sõnekonstante saab defineerida järgnevalt:
a = 'See on ülakomades sõne'
a = %q{See on ülakomades sõne}
Andmestruktuurid
muudaRubys on kasutusel mitmed andmestruktuurid.
Järjendite kasutamine käib järgmiselt:
a = [1, 'hi', 3.14, 1, 2, [4, 5]]
a[2] # => 3.14
a.[](2) # => 3.14
a.reverse # => [[4, 5], 2, 1, 3.14, 'hi', 1]
a.flatten.uniq # => [1, 'hi', 3.14, 2, 4, 5]
Rubys on olemas ka sõnastiku tüüpi andmestruktuur, mida nimetatakse paisktabeliks (inglise keeles hash)
hash = Hash.new # samaväärne kui hash = {}
hash = { :vesi => 'märg', :tuli => 'kuum' } # defineerib hash objekti ümber
puts hash[:tuli] # prindib ekraanile "kuum"
hash.each_pair do |key, value| # või ka: hash.each do |key, value|
puts "#{key} on #{value}"
end
# tagastab {:vesti =>"märg", :tuli=>"kuum"} ja prindib:
# vesi on märg
# tuli on kuum
hash.delete :vesi # kustutab paari :vesi => 'märg' ja tagastab "märg"
hash.delete_if {|key,value| value == 'kuum'} # kustutab paari :tuli => 'kuum' ja tagastab {}
Tingimuslaused
muudaIf-lause:
# Genereerib suvalise arvu ning prindib välja kas tegemist on paaris- või paaritu arvuga
if rand(100).even?
puts "Paaris"
else
puts "Paaritu"
end
Plokid ja korduslaused
muudaRubys on kaks süntaksit koodiplokkide loomiseks:
{ puts 'Hello, World!' }
# või:
do
puts 'Hello, World!'
end
Koodiploki saab anda meetodile argumendiks. Paljud meetodid kasutavad neid argumente:
File.open('fail.txt', 'w') do |fail|
fail.puts 'Kirjutasin midagi.'
end # fail suletakse automaatselt
File.readlines('fail.txt').each do |rida|
puts rida
end
# => Kirjutasin midagi.
proc {|arg| puts arg}
Proc.new {|arg| puts arg}
lambda {|arg| puts arg}
->(arg) {puts arg} # alates Ruby versioonist 1.9
Korduslaused vahemike ja järjendite puhul kasutavad plokke:
järjend = [1, 'hi', 3.14]
järjend.each {|item| puts item }
# prindib:
# 1
# 'hi'
# 3.14
järjend.each_index {|index| puts "#{index}: #{array[index]}" }
# prindib:
# 0: 1
# 1: 'hi'
# 2: 3.14
# (a..b) vahemik
(3..6).each {|num| puts num }
# prindib:
# 3
# 4
# 5
# 6
# (a...b) vahemik
(3...6).each {|num| puts num }
# prindib:
# 3
# 4
# 5
Klassid
muudaJärgnev kood defineerib klassi nimega Inimene
. Lisaks initialize
meetodile, millega klass konstrueeritakse, on sellel veel kaks meetodit: üks, mis kirjutab üle võrdlusoperaatori <=>
(nii, et Array#sort
saab sorteerida vanuse järgi) ja teine, mis kirjutab üle #to_s
meetodi (nii, et Kernel#puts
saab väljundit vormindada). attr_reader
on Ruby metaprogrammeerimise näide: attr_accessor
defineerib nii getteri kui ka setteri meetodid, kuid attr_reader
defineerib ainult getter meetodi. Viimane lause meetodis on väärtus mille see väljastab, seega ei ole vaja defineerida return
lauset.[10]
class Inimene
attr_reader :nimi, :vanus
def initialize(nimi, vanus)
@nimi, @vanus = nimi, vanus
end
def <=>(person) # võrdlusoperaator sorteerimiseks
@vanus <=> person.vanus
end
def to_s
"#{@nimi} (#{@vanus})"
end
end
grupp = [
Inimene.new("Mari", 33),
Inimene.new("Marina", 16),
Inimene.new("Martina", 23)
]
puts grupp.sort.reverse
# prindib:
# Mari (33)
# Martina (23)
# Marina (16)
Inimene
on siin konstant ja viitab Class
objektile.
Erindid
muudaErindeid saab tekitada raise
lause abil:
raise
Erindile saab juurde lisada ka mingi sõnumi:
raise "See on sõnum"
Võimalik on defineerida ka erindi tüüpi:
raise ArgumentError, "Mittesobivad argumendid!"
# või ka
# raise ArgumentError.new("Mittesobivad argumendid!")
Erindeid käsitletakse rescue
lausega. See lause püüab kõiki erindeid, mis pärinevad StandardError
klassist. Erindite püüdmisel saab kasutada ka else
ja ensure
lauseid:
begin
# tee midagi
rescue
# käsitle erindit
else
# tee seda juhul kui erindit ei tekkinud
ensure
# tee seda, vahet pole kas tekkis erind või mitte
end
StandardError
ja Exception
on Rubys eraldi klassid, StandardError
pärineb Exception
ist, kuid kuna rescue
käsitleb vaid erindeid, mis pärinevad StandardError
klassist, ei pruugi ta alati kinni püüda kõiki erindeid. Selleks peab eraldi defineerima:
begin
# tee midagi
rescue Exception
# käsitle erindit
end
Või kinni püüdma mõne kindla erindi:
begin
# tee midagi
rescue RuntimeError
# käsitle ainult RuntimeErrorit ja kõiki teisi sellest pärinevaid erindeid
end
Erindi objekti saab kätte sedasi:
begin
# tee midagi
rescue RuntimeError => e
# käsitle RuntimeErrorit ning tee midagi muutujaga e, näiteks
puts e.to_s
end
Vaata ka
muudaViited
muuda- ↑ 1,0 1,1 1,2 Peter Cooper (2009). Beginning Ruby: From Novice to Professional (inglise keeles). Kd 2. Berkley: APress. Lk 101. ISBN 1-4302-2363-4.
To a lesser extent, Python, LISP, Eiffel, Ada, and C++ have also influenced Ruby.
{{raamatuviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ 2,0 2,1 "Confreaks TV | Reasons behind Ruby - Ruby Conference 2008". confreaks.tv (inglise keeles). Originaali arhiivikoopia seisuga 15. jaanuar 2020. Vaadatud 18. detsembril 2019.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ 3,0 3,1 3,2 3,3 3,4 3,5 Ola Bini (2007). Practical JRuby on Rails Web 2.0 Projects: Bringing Ruby on Rails to Java (inglise keeles). Berkeley: APress. Lk 3. ISBN 1-59059-881-4.
It draws primarily on features from Perl, Smalltalk, Python, Lisp, Dylan, and CLU
{{raamatuviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ "Julia 1.4-DEV Documentation". The Julia Language (inglise keeles). Originaali arhiivikoopia seisuga 24. aprill 2020. Vaadatud 18. detsembril 2019.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ "Influences". The Rust Reference (inglise keeles). Vaadatud 18. detsembril 2019.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ Chris Lattner (3. juuni 2014). "Chris Lattner's Homepage" (inglise keeles). Vaadatud 18. detsembril 2019.
The Swift language is the product of tireless effort from a team of language experts, documentation gurus, compiler optimization ninjas, and an incredibly important internal dogfooding group who provided feedback to help refine and battle-test ideas. Of course, it also greatly benefited from the experiences hard-won by many other languages in the field, drawing ideas from Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and far too many others to list.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ "About Ruby" (inglise keeles). Vaadatud 18. detsembril 2019.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ "The Ruby Toolbox". Vaadatud 19. detsembril 2019.
- ↑ Yukihiro Matsumoto (13. veebruar 2006). "ruby-talk: Re: Ruby's lisp features" (inglise keeles). Originaali arhiivikoopia seisuga 20. november 2013. Vaadatud 18. detsembril 2019.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ 10,0 10,1 10,2 Shugo Maeda (17. detsember 2002). "The Ruby Language FAQ" (inglise keeles). Vaadatud 18. detsembril 2019.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ 11,0 11,1 11,2 11,3 11,4 Nick Sieger (20. oktoober 2006). "History of Ruby" (inglise keeles). Vaadatud 18. detsembril 2019.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ Hiroshi Sugihara (23. detsember 2003). "ruby-talk: The decisive moment of the language name Ruby" (inglise keeles). Originaali arhiivikoopia seisuga 17. juuli 2011. Vaadatud 18. detsembril 2019.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ Yukihiro Matsumoto (11. juuni 1999). "ruby-talk: Re: the name of Ruby?" (inglise keeles). Originaali arhiivikoopia seisuga 25. detsember 2018. Vaadatud 18. detsembril 2019.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ Yukihiro Matsumoto (4. juuni 1999). "ruby-talk: Re: history of ruby" (inglise keeles). Originaali arhiivikoopia seisuga 16. juuli 2011. Vaadatud 18. detsembril 2019.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ Yukihiro Matsumoto (5. veebruar 1996). "ruby-list: TUTORIAL - ruby's features" (jaapani keeles). Originaali arhiivikoopia seisuga 24. mai 2003. Vaadatud 18. detsembril 2019.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ Bruce Stewart (29. november 2001). "An Interview with the Creator of Ruby" (inglise keeles). Originaali arhiivikoopia seisuga 8. veebruar 2008. Vaadatud 18. detsembril 2019.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ Yukihiro Matsumoto (2000. aasta oktoober). "Programming Ruby: Forward" (inglise keeles). Vaadatud 18. detsembril 2019.
{{netiviide}}
: kontrolli kuupäeva väärtust:|aeg=
(juhend)CS1 hooldus: tundmatu keel (link) - ↑ Dave Thomas, Chad Fowler, Andrew Hunt (2000. aasta). "Programming Ruby: The Pragmatic Programmer's Guide" (inglise keeles). Vaadatud 18. detsembril 2019.
{{netiviide}}
: kontrolli kuupäeva väärtust:|aeg=
(juhend)CS1 hooldus: mitu nime: autorite loend (link) CS1 hooldus: tundmatu keel (link) - ↑ 19,0 19,1 shyouhei (30. juuni 2013). "We retire Ruby 1.8.7". Ruby Programming Language (inglise keeles). Vaadatud 19. detsembril 2019.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ O'Reilly Media (22. märts 2007). "Web Development: Ruby on Rails". Devarticles.com (inglise keeles). Originaali arhiivikoopia seisuga 24. veebruar 2009. Vaadatud 19. detsembril 2019.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ "Ruby 1.9.0 Released". Ruby Programming Language (inglise keeles). 25. detsember 2007. Vaadatud 19. detsembril 2019.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ Sam Ruby (2008. aasta juuli). "Ruby 1.9: What to Expect". slideshow.rubyforge.org (inglise keeles). Originaali arhiivikoopia seisuga 2017-04-14. Vaadatud 19. detsembril 2019.
{{netiviide}}
: kontrolli kuupäeva väärtust:|aeg=
(juhend)CS1 hooldus: tundmatu keel (link) - ↑ Olivier Lacan (23. veebruar 2015). "Support for Ruby 1.9.3 has ended". Ruby Programming Language. Vaadatud 19. detsembril 2019.
- ↑ 24,0 24,1 Yusuke Endoh (24. veebruar 2014). "Ruby 2.0.0-p0 is released". Ruby Programming Language (inglise keeles). Vaadatud 19. detsembril 2019.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ "Support plans for Ruby 2.0.0 and Ruby 2.1". Ruby Programming Language (inglise keeles). 24. veebruar 2016. Vaadatud 19. detsembril 2019.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ "Ruby 2.1.0 is released". Ruby Programming Language (inglise keeles). 25. detsember 2013. Vaadatud 19. detsembril 2019.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ "Support for Ruby 2.1 has ended". Ruby Programming Language (inglise keeles). 1. aprill 2017. Vaadatud 19. detsembril 2019.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ "Ruby 2.2.0 Released". Ruby Programming Language (inglise keeles). 25. detsember 2014. Vaadatud 19. detsembril 2019.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ "Support of Ruby 2.2 has ended". Ruby Programming Language (inglise keeles). 31. märts 2018. Vaadatud 19. detsembril 2019.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ 30,0 30,1 "Ruby 2.3.0 Released". Ruby Programming Language (inglise keeles). 25. detsember 2015. Vaadatud 19. detsembril 2019.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ Maciej Mensfeld (14. november 2015). "Ruby 2.3.0 changes and features - Running with Ruby". dev.mensfeld.pl (inglise keeles). Vaadatud 19. detsembril 2019.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ "Ruby/NEWS at v.2_3_0 - ruby/ruby - Github". GitHub (inglise keeles). Vaadatud 19. detsembril 2019.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ "Support of Ruby 2.3 has ended". Ruby Programming Language (inglise keeles). 31. märts 2019. Vaadatud 19. detsembril 2019.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ 34,0 34,1 "Ruby 2.4.0 Released". Ruby Programming Language (inglise keeles). 25. detsember 2016. Vaadatud 19. detsembril 2019.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ "Ruby 2.4.6 Released". Ruby Programming Language (inglise keeles). 1. aprill 2019. Vaadatud 19. detsembril 2019.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ 36,0 36,1 36,2 "Ruby 2.5.0 Released". Ruby Programming Language (inglise keeles). 25. detsember 2017. Vaadatud 19. detsembril 2019.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ "Ruby 2.5.7 Released". Ruby Programming Language (inglise keeles). 1. oktoober 2019. Vaadatud 19. detsembril 2019.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ "Ruby 2.6.0 Released". Ruby Programming Language (inglise keeles). 25. detsember 2018. Vaadatud 19. detsembril 2019.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link) - ↑ "Ruby 2.6.5 Released". Ruby Programming Language (inglise keeles). 1. oktober 2019. Vaadatud 18. detsembril 2019.
{{netiviide}}
: kontrolli kuupäeva väärtust:|aeg=
(juhend)CS1 hooldus: tundmatu keel (link) - ↑ "Ruby 2.7.0 Released". Ruby Programming Language (inglise keeles). 25. detsember 2019. Vaadatud 4. jaanuaril 2020.
{{netiviide}}
: CS1 hooldus: tundmatu keel (link)
Välislingid
muudaPildid, videod ja helifailid Commonsis: Ruby (programmeerimiskeel) |