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
Lotus: because sometimes you need to reinvent t...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Arjan van der Gaag
July 08, 2015
Programming
270
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
930
Getting to know Elm
avdgaag
0
170
Beating Impostor Syndrome (NordicRuby 2016)
avdgaag
0
98
Hanami: because sometimes, you need to re-invent the wheel
avdgaag
2
610
Use your database for… Validations! Caching! Logic!
avdgaag
0
120
Web development that hurts even less: taking lessons from Rails
avdgaag
1
380
Ruby acting up: A look at how Celluloid implements the actor model for concurrency in Ruby.
avdgaag
0
330
Ecto: a database wrapper and language integrated query for Elixir
avdgaag
0
490
Using Awk: An old-school text processing tool with surprising versatility
avdgaag
1
430
Other Decks in Programming
See All in Programming
「人を評価する AI」の設計と実装
ryoyanara
0
110
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
470
ビデオ通話が繋がる0.2秒で何が起きているのか
supurazako
2
170
Detecting Compromised CI with eBPF and Cilium Tetragon
lizrice
0
120
AI時代に設計が 最大の生産性レバーになる 意図駆動開発とデータを消さない設計|Don't Delete Your Data or Your Intent — Design as the Deepest Lever in the AI Era
tomohisa
1
520
『コードを書く以外の』エンジニアリング〜課金基盤移行プロジェクト推進のためのTips4選
yuriko1211
0
560
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
160
ルールを書いて終わらせないハーネスエンジニアリング
yug1224
4
1.8k
OpenSpecのproposalにbrainstormingを持たせてみた
tigertora7571
1
190
【やさしく解説 設計編・中級 #6】良いアーキテクチャとは ~ 一本の登り道の、行き先 ~
panda728
PRO
0
200
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
3.6k
2年かけて Deno に DOMMatrix を実装した話 / How I implemented DOMMatrix in Deno over two years
petamoriken
0
190
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
200
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Scaling GitHub
holman
464
140k
The Curse of the Amulet
leimatthew05
2
13k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
Color Theory Basics | Prateek | Gurzu
gurzu
0
400
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
630
Leo the Paperboy
mayatellez
8
2.1k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
190
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
460
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