$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Lotus: because sometimes you need to reinvent t...
Search
Arjan van der Gaag
July 08, 2015
Programming
0
240
Lotus: because sometimes you need to reinvent the wheel
Arjan van der Gaag
July 08, 2015
Tweet
Share
More Decks by Arjan van der Gaag
See All by Arjan van der Gaag
How to Lead a Team by Doing Nothing
avdgaag
8
880
Getting to know Elm
avdgaag
0
130
Beating Impostor Syndrome (NordicRuby 2016)
avdgaag
0
84
Hanami: because sometimes, you need to re-invent the wheel
avdgaag
2
560
Use your database for… Validations! Caching! Logic!
avdgaag
0
100
Web development that hurts even less: taking lessons from Rails
avdgaag
1
350
Ruby acting up: A look at how Celluloid implements the actor model for concurrency in Ruby.
avdgaag
0
280
Ecto: a database wrapper and language integrated query for Elixir
avdgaag
0
430
Using Awk: An old-school text processing tool with surprising versatility
avdgaag
1
390
Other Decks in Programming
See All in Programming
ローターアクトEクラブ アメリカンナイト:川端 柚菜 氏(Japan O.K. ローターアクトEクラブ 会長):2720 Japan O.K. ロータリーEクラブ2025年12月1日卓話
2720japanoke
0
400
[SF Ruby Conf 2025] Rails X
palkan
0
420
Rediscover the Console - SymfonyCon Amsterdam 2025
chalasr
2
130
関数の挙動書き換える
takatofukui
4
770
Querying Design System デザインシステムの意思決定を支える構造検索
ikumatadokoro
1
1.2k
dnx で実行できるコマンド、作ってみました
tomohisa
0
130
Combinatorial Interview Problems with Backtracking Solutions - From Imperative Procedural Programming to Declarative Functional Programming - Part 1
philipschwarz
PRO
0
120
AIコードレビューがチームの"文脈"を 読めるようになるまで
marutaku
0
300
【レイトレ合宿11】kagayaki_v4
runningoutrate
0
220
20251127_ぼっちのための懇親会対策会議
kokamoto01_metaps
2
390
Socio-Technical Evolution: Growing an Architecture and Its Organization for Fast Flow
cer
PRO
0
230
【Streamlit x Snowflake】データ基盤からアプリ開発・AI活用まで、すべてをSnowflake内で実現
ayumu_yamaguchi
1
110
Featured
See All Featured
How to train your dragon (web standard)
notwaldorf
97
6.4k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.2k
How to Ace a Technical Interview
jacobian
280
24k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
370
The Pragmatic Product Professional
lauravandoore
37
7k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.8k
GraphQLとの向き合い方2022年版
quramy
49
14k
Producing Creativity
orderedlist
PRO
348
40k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.8k
YesSQL, Process and Tooling at Scale
rocio
174
15k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
1
71
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