Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Brief Ruby/Ruby on Rails intro
Search
Florian Plank
March 28, 2014
Programming
220
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Brief Ruby/Ruby on Rails intro
Florian Plank
March 28, 2014
More Decks by Florian Plank
See All by Florian Plank
Ready, set, immersion!
polarblau
0
220
Prototyping all the things
polarblau
2
200
CoffeeScript vs. ECMAScript 6
polarblau
5
3.7k
Design for a complex Reality — Siili Breakfast Edition
polarblau
0
180
Enabling Design for a Complex Reality
polarblau
2
160
A primer on Content Security Policy
polarblau
1
480
Rails and the future of the open web
polarblau
3
150
Ruby Idioms
polarblau
3
630
How to ask questions and find the right answers
polarblau
2
400
Other Decks in Programming
See All in Programming
Snowflakeで業務アプリを作ろう。 Snowflakeのアプリ機能解説&実践ガイド
ayumu_yamaguchi
1
270
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
160
XHTMLが残したもの
yosuke_furukawa
PRO
2
800
巨大モノリシックアプリ モダン化大作戦
ktcryomm
0
1k
スマート反転とウェブアクセシビリティ
camiha
0
210
標準パッケージに uuid が追加された 背景から見る Go らしい意思決定 / go_127_uuid_decision
convto
5
7k
XP祭りでしか伝わらないフリップネタ #xpjug
murabayashi
0
150
What We Talk About When We Talk About XP
m_seki
2
620
選挙速報を多くのユーザーへ 届ける Live Activities 設計
hamayokokuririn
0
140
AWS Step Functions 大規模並列の壁を越える / jaws-sonic-2026-niigata-step-functions
kasacchiful
PRO
1
450
AIを上手に使っていこうとしたら越境せざるを得なくなった話 〜実践1年で見えた境界を越えなければならない理由と進め方〜 / Crossing borders with AI
tomoyakitaura
4
1.1k
cdk deploy JawsSonic #MARATHONしながらAWSリソースをデプロイしてみよう
akihisaikeda
2
130
Featured
See All Featured
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
350
BBQ
matthewcrist
89
10k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Documentation Writing (for coders)
carmenintech
77
5.5k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
520
The untapped power of vector embeddings
frankvandijk
2
1.9k
Exploring anti-patterns in Rails
aemeredith
4
510
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
330
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
440
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
450
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