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
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
180
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
Lean は証明の正しさを確認するためだけのツールって思ってませんか?
inoueasei
1
160
ソフトウェア設計に溶けるインフラ ― AWS CDK のインフラ認識論
konokenj
3
780
夏だ!祭りだ!祭りとはドメインモデリングでは?
ryugen04
0
260
Claude CodeとAgentCore Gatewayを繋ぐ際の認証認可 / Authentication and authorization when connecting Claude Code with AgentCore Gateway
har1101
2
270
型も通る、synthも通る、それでも危ない 〜AIのCDKの権限とコストを機械で検証する〜 / It Passes Type Checks, It Passes Synth Checks, but It’s Still Risky — Automatically Verifying Permissions and Costs in AI’s CDK —
seike460
PRO
1
550
PHP Application における Kubernetes 内 gRPC 通信
ganchiku
0
590
仕様駆動開発へのトライを機に チームに適合する手法を模索し続けている話
freee
PRO
0
500
これって Effect でできたのでは? / TSKaigi Mashup Kansai #2
susisu
0
230
TSX の <Hoge<Fuga>> という構文に驚いた話 / tsx-type-argument-syntax
kanaru0928
0
230
<title><a id="</title>君はこのHTMLをパースできるか"></a></title> #雑LT_study
pizzacat83
0
140
今さら聞けない .NET CLI
htkym
0
190
GDG Korea Android: 2026 I/O Extended ~ What's new in Android development tools
pluu
0
220
Featured
See All Featured
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
380
Testing 201, or: Great Expectations
jmmastey
46
8.2k
Fireside Chat
paigeccino
42
4k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
560
Mind Mapping
helmedeiros
PRO
1
310
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
What's in a price? How to price your products and services
michaelherold
247
13k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
760
BBQ
matthewcrist
89
10k
How to make the Groovebox
asonas
2
2.3k
Believing is Seeing
oripsolob
1
190
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
470
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