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
Lotus: because sometimes you need to reinvent t...
Search
Arjan van der Gaag
July 08, 2015
Programming
290
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Lotus: because sometimes you need to reinvent the wheel
Arjan van der Gaag
July 08, 2015
More Decks by Arjan van der Gaag
See All by Arjan van der Gaag
How to Lead a Team by Doing Nothing
avdgaag
8
940
Getting to know Elm
avdgaag
0
190
Beating Impostor Syndrome (NordicRuby 2016)
avdgaag
0
100
Hanami: because sometimes, you need to re-invent the wheel
avdgaag
2
630
Use your database for… Validations! Caching! Logic!
avdgaag
0
130
Web development that hurts even less: taking lessons from Rails
avdgaag
1
390
Ruby acting up: A look at how Celluloid implements the actor model for concurrency in Ruby.
avdgaag
0
350
Ecto: a database wrapper and language integrated query for Elixir
avdgaag
0
500
Using Awk: An old-school text processing tool with surprising versatility
avdgaag
1
470
Other Decks in Programming
See All in Programming
[JA] Domain Modeling with Vanilla Rails: 「操作」から再考するRailsの設計論
yasaichi
3
640
ChromeでローカルLLM
ryu1013
0
160
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
410
IBM Bob でAI駆動開発『QC-Playbook』
ichirokano2
0
120
Rでドレミ/Do-Re-Mi_with_R
florets1
0
130
Long Living Tokens, Die, Die, Die! (or: The One Ring is Banned in Modern)
sylph01
0
340
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
810
dotNET_vulnclicker_intro.pdf
deka_morita
0
150
Seven New Principles of Software Engineering
yegor256
0
140
Verilogで学ぶCPU自作入門
uyuki234
8
4.2k
AIに “答え“を書かせるのを やめてみた
___akari11
0
120
複雑なUIコンポーネントとの ⻑い付き合い⽅:波及するバグからテスト戦略を経て、安全な再設計へ
mixplace
0
440
Featured
See All Featured
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
530
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
20k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
290
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Discover your Explorer Soul
emna__ayadi
2
1.3k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
280
Everyday Curiosity
cassininazir
0
360
How to Think Like a Performance Engineer
csswizardry
28
2.9k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
RailsConf 2023
tenderlove
30
1.6k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
640
Transcript
lotus sometimes you need to reinvent the wheel
Arjan van der Gaag @avdgaag brightin
Lotus is a Ruby MVC web framework comprised of many
micro-libraries. It has a simple, stable API, a minimal DSL, and prioritises the use of plain objects over magical, over- complicated classes with too much responsibility.
standalone frameworks
standalone frameworks to build full-stack applications
from small endpoints… require 'bundler/setup' require 'lotus/router' run Lotus::Router.new {
get '/', to: ->(env) { [200, {}, ['Hello, world'] } }
…to containers
some conventions
some conventions many objects
some conventions many objects no monkey patches
simplicity > convenience
testable class Show include Lotus::Action expose :book def initialize(repository: BookRepository)
@repository = repository end def call(params) @book = @repository.find params[:id] end end
focus on maintenance
writing Ruby is fun
Guides and docs at lotusrb.org
@avdgaag arjanvandergaag.nl