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
190
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
800
Getting to know Elm
avdgaag
0
110
Beating Impostor Syndrome (NordicRuby 2016)
avdgaag
0
75
Hanami: because sometimes, you need to re-invent the wheel
avdgaag
2
480
Use your database for… Validations! Caching! Logic!
avdgaag
0
81
Web development that hurts even less: taking lessons from Rails
avdgaag
1
300
Ruby acting up: A look at how Celluloid implements the actor model for concurrency in Ruby.
avdgaag
0
210
Ecto: a database wrapper and language integrated query for Elixir
avdgaag
0
340
Using Awk: An old-school text processing tool with surprising versatility
avdgaag
1
330
Other Decks in Programming
See All in Programming
快速入門可觀測性
blueswen
0
480
ChatGPT とつくる PHP で OS 実装
memory1994
PRO
3
160
AppRouterを用いた大規模サービス開発におけるディレクトリ構成の変遷と問題点
eiganken
1
390
Jaspr Dart Web Framework 박제창 @Devfest 2024
itsmedreamwalker
0
140
htmxって知っていますか?次世代のHTML
hiro_ghap1
0
390
QA環境で誰でも自由自在に現在時刻を操って検証できるようにした話
kalibora
1
110
PHPで学ぶプログラミングの教訓 / Lessons in Programming Learned through PHP
nrslib
4
1k
KubeCon NA 2024の全DB関連セッションを紹介
nnaka2992
0
110
競技プログラミングへのお誘い@阪大BOOSTセミナー
kotamanegi
0
390
Внедряем бюджетирование, или Как сделать хорошо?
lamodatech
0
860
ドメインイベント増えすぎ問題
h0r15h0
2
530
KMP와 kotlinx.rpc로 서버와 클라이언트 동기화
kwakeuijin
0
270
Featured
See All Featured
How to Ace a Technical Interview
jacobian
276
23k
How to Think Like a Performance Engineer
csswizardry
22
1.3k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
Fireside Chat
paigeccino
34
3.1k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
29
2k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Code Review Best Practice
trishagee
65
17k
A Tale of Four Properties
chriscoyier
157
23k
GitHub's CSS Performance
jonrohan
1030
460k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
850
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