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
220
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
850
Getting to know Elm
avdgaag
0
120
Beating Impostor Syndrome (NordicRuby 2016)
avdgaag
0
80
Hanami: because sometimes, you need to re-invent the wheel
avdgaag
2
530
Use your database for… Validations! Caching! Logic!
avdgaag
0
89
Web development that hurts even less: taking lessons from Rails
avdgaag
1
320
Ruby acting up: A look at how Celluloid implements the actor model for concurrency in Ruby.
avdgaag
0
260
Ecto: a database wrapper and language integrated query for Elixir
avdgaag
0
400
Using Awk: An old-school text processing tool with surprising versatility
avdgaag
1
370
Other Decks in Programming
See All in Programming
複数アプリケーションを育てていくための共通化戦略
irof
10
3.9k
セキュリティマネジャー廃止とクラウドネイティブ型サンドボックス活用
kazumura
1
180
事業戦略を理解してソフトウェアを設計する
masuda220
PRO
22
6.2k
AWS CDKの推しポイント 〜CloudFormationと比較してみた〜
akihisaikeda
3
280
Javaに鉄道指向プログラミング (Railway Oriented Pro gramming) のエッセンスを取り入れる/Bringing the Essence of Railway-Oriented Programming to Java
cocet33000
2
580
Effect の双対、Coeffect
yukikurage
5
1.4k
ktr0731/go-mcpでMCPサーバー作ってみた
takak2166
0
170
今ならAmazon ECSのサービス間通信をどう選ぶか / Selection of ECS Interservice Communication 2025
tkikuc
0
300
既存デザインを変更せずにタップ領域を広げる方法
tahia910
1
230
第9回 情シス転職ミートアップ 株式会社IVRy(アイブリー)の紹介
ivry_presentationmaterials
1
160
Practical Tips and Tricks for Working with Compose Multiplatform Previews (mDevCamp 2025)
stewemetal
0
130
Cursor AI Agentと伴走する アプリケーションの高速リプレイス
daisuketakeda
1
120
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
94
14k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Statistics for Hackers
jakevdp
799
220k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Practical Orchestrator
shlominoach
188
11k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
123
52k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
GraphQLとの向き合い方2022年版
quramy
46
14k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
20k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.8k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.3k
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