Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Brief Ruby/Ruby on Rails intro
Search
Florian Plank
March 28, 2014
Programming
3
180
Brief Ruby/Ruby on Rails intro
Florian Plank
March 28, 2014
Tweet
Share
More Decks by Florian Plank
See All by Florian Plank
Ready, set, immersion!
polarblau
0
170
Prototyping all the things
polarblau
2
170
CoffeeScript vs. ECMAScript 6
polarblau
5
3.5k
Design for a complex Reality — Siili Breakfast Edition
polarblau
0
130
Enabling Design for a Complex Reality
polarblau
2
130
A primer on Content Security Policy
polarblau
1
400
Rails and the future of the open web
polarblau
3
120
Ruby Idioms
polarblau
3
570
How to ask questions and find the right answers
polarblau
2
340
Other Decks in Programming
See All in Programming
「兵法」から見る質とスピード
ickx
0
270
Webからモバイルへ Vue.js × Capacitor 活用事例
naokihaba
0
620
アンドパッドの Go 勉強会「 gopher 会」とその内容の紹介
andpad
0
200
インターフェース設計のコツとツボ
togishima
2
710
生成AIコーディングとの向き合い方、AIと共創するという考え方 / How to deal with generative AI coding and the concept of co-creating with AI
seike460
PRO
1
250
実はすごいスピードで進化しているCSS
hayato_yokoyama
0
110
從零到一:搭建你的第一個 Observability 平台
blueswen
1
910
Gleamという選択肢
comamoca
6
720
Cursor AI Agentと伴走する アプリケーションの高速リプレイス
daisuketakeda
1
110
Perplexity Slack Botを作ってAI活用を進めた話 / AI Engineering Summit プレイベント
n3xem
0
650
Cloudflare Realtime と Workers でつくるサーバーレス WebRTC
nekoya3
0
400
LINEヤフー データグループ紹介
lycorp_recruit_jp
0
520
Featured
See All Featured
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
YesSQL, Process and Tooling at Scale
rocio
172
14k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
RailsConf 2023
tenderlove
30
1.1k
Producing Creativity
orderedlist
PRO
346
40k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
16
920
Stop Working from a Prison Cell
hatefulcrawdad
269
20k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
910
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Navigating Team Friction
lara
186
15k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
181
53k
Adopting Sorbet at Scale
ufuk
77
9.4k
Transcript
RUBY A PROGRAMMER’S BEST FRIEND
Background
Yukihiro “Matz” Matsumoto
I hope to see Ruby help every programmer in the
world to be productive, and to enjoy programming, and to be happy. at is the primary purpose of Ruby language.” “
- Programmer happiness - Principle of least astonishment - Human
readable - Beautiful syntax Principles
- RubyGems, Bundler & Rake - Multiple implementations (MRI, JRuby,
Rubinius, mruby, MacRuby, Topaz, …) - Solid Standard Library Ecosystem
- MINASWAN - Self re ective - Open - Quirky
Community
The Language A Sales Pitch
None
Object–oriented 1
5.times { print "We love Ruby" }
class Animal def eat(food) puts "Animal eating" end end my_animal
= Animal.new animal.eat # => "Animal eating"
class Dog < Animal def eat(food) puts "Dog eating" super
end end
module Stomach def digest(food) # ... end end
class Dog < Animal include Stomach end my_dog = Dog.new
dog.digest
-199.abs # => 199 "Foobar".split("").uniq.sort.join # => "abFor" nil.class #
=> "NilClass"
Dynamically typed Duck–typing 2
if dog.is_a? Animal dog.eat end dog.eat if dog.respond_to?(:eat)
Monkey–patching (Duck–punching) 3
… if it walks like a duck and talks like
a duck, it’s a duck, right? So if this duck is not giving you the noise that you want, you’ve got to just punch that duck until it returns what you expect.” “
class String def yell "#{self.upcase}!" end end "hello".yell # =>
"HELLO!"
Meta–programming 4
class Greeter def method_missing(name, *args) name = name.to_s if name
=~ /^hello_/ puts "Hello, #{name.gsub(/^hello_/, '')}!" else super end end end Greeter.new.hello_john # => "Hello, john!"
Blocks & Lambdas 5
[1, 2, 3].map { |i| i ** 2 } #
=> [1, 4, 9]
def greet(&block) # ... greeting = yield("John") # ... end
greet do |name| "Hello, #{name}!" end
A word on speed
Ruby on Rails An (even shorter) sales pitch
None
- Open Source Web Framework - MVC - Convention over
Con guration - DRY - Opinionated Principles
- Generators - ORM - Restful routing - Included webserver
Features
$ gem install rails $ rails new blog $ cd
blog $ rails generate scaffold post title content:text $ rake db:migrate $ rails server
author = Author.find_by :name => "John" author.posts.first.title
Book.where(:title => 'Tale of Two Cities') .first_or_create
class Account < ActiveRecord::Base # Returns all accounts with unread
messages. def self.with_unread_messages joins(:messages).merge(Message.unread) end end
None