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
170
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
160
Prototyping all the things
polarblau
2
160
CoffeeScript vs. ECMAScript 6
polarblau
5
3.4k
Design for a complex Reality — Siili Breakfast Edition
polarblau
0
120
Enabling Design for a Complex Reality
polarblau
2
120
A primer on Content Security Policy
polarblau
1
390
Rails and the future of the open web
polarblau
3
110
Ruby Idioms
polarblau
3
560
How to ask questions and find the right answers
polarblau
2
340
Other Decks in Programming
See All in Programming
AIコードエディタの基盤となるLLMのFlutter性能評価
alquist4121
0
180
ローコードサービスの進化のためのモノレポ移行
taro28
1
350
ミリしらMCP勉強会
watany
4
670
アプリを起動せずにアプリを開発して品質と生産性を上げる
ishkawa
0
2.2k
Devinのメモリ活用の学びを自社サービスにどう組み込むか?
itarutomy
0
1.9k
ノーコードツールの裏側につきまとう「20分岐」との戦い
oguemon
0
110
国漢文混用体からHolloまで
minhee
1
120
SLI/SLOの設定を進めるその前に アラート品質の改善に取り組んだ話
tanden
2
770
体得しよう!RSA暗号の原理と解読
laysakura
3
550
The Weight of Data: Rethinking Cloud-Native Systems for the Age of AI
hollycummins
0
220
OpenTelemetryを活用したObservability入門 / Introduction to Observability with OpenTelemetry
seike460
PRO
1
390
AIコーディングワークフローの試行 〜AIエージェント×ワークフローでの自動化を目指して〜
rkaga
2
1.4k
Featured
See All Featured
Become a Pro
speakerdeck
PRO
27
5.2k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
21k
Embracing the Ebb and Flow
colly
85
4.6k
The Invisible Side of Design
smashingmag
299
50k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
12
630
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
12
1.4k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
31
4.8k
The World Runs on Bad Software
bkeepers
PRO
67
11k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.8k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Bash Introduction
62gerente
611
210k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
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