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
Arjan van der Gaag
July 08, 2015
Programming
0
230
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
860
Getting to know Elm
avdgaag
0
120
Beating Impostor Syndrome (NordicRuby 2016)
avdgaag
0
81
Hanami: because sometimes, you need to re-invent the wheel
avdgaag
2
540
Use your database for… Validations! Caching! Logic!
avdgaag
0
92
Web development that hurts even less: taking lessons from Rails
avdgaag
1
330
Ruby acting up: A look at how Celluloid implements the actor model for concurrency in Ruby.
avdgaag
0
270
Ecto: a database wrapper and language integrated query for Elixir
avdgaag
0
410
Using Awk: An old-school text processing tool with surprising versatility
avdgaag
1
380
Other Decks in Programming
See All in Programming
Swift Updates - Learn Languages 2025
koher
2
470
Android端末で実現するオンデバイスLLM 2025
masayukisuda
1
150
1から理解するWeb Push
dora1998
7
1.9k
Ruby Parser progress report 2025
yui_knk
1
440
FindyにおけるTakumi活用と脆弱性管理のこれから
rvirus0817
0
510
Compose Multiplatform × AI で作る、次世代アプリ開発支援ツールの設計と実装
thagikura
0
150
速いWebフレームワークを作る
yusukebe
5
1.7k
Navigation 2 を 3 に移行する(予定)ためにやったこと
yokomii
0
160
奥深くて厄介な「改行」と仲良くなる20分
oguemon
1
520
[FEConf 2025] 모노레포 절망편, 14개 레포로 부활하기까지 걸린 1년
mmmaxkim
0
1.6k
Introducing ReActionView: A new ActionView-compatible ERB Engine @ Rails World 2025, Amsterdam
marcoroth
0
690
「手軽で便利」に潜む罠。 Popover API を WCAG 2.2の視点で安全に使うには
taitotnk
0
850
Featured
See All Featured
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
GitHub's CSS Performance
jonrohan
1032
460k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
580
Documentation Writing (for coders)
carmenintech
74
5k
The Power of CSS Pseudo Elements
geoffreycrofte
77
6k
Done Done
chrislema
185
16k
Building Adaptive Systems
keathley
43
2.7k
Why Our Code Smells
bkeepers
PRO
339
57k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.9k
Git: the NoSQL Database
bkeepers
PRO
431
66k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
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