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
170
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
780
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
460
Use your database for… Validations! Caching! Logic!
avdgaag
0
76
Web development that hurts even less: taking lessons from Rails
avdgaag
1
280
Ruby acting up: A look at how Celluloid implements the actor model for concurrency in Ruby.
avdgaag
0
190
Ecto: a database wrapper and language integrated query for Elixir
avdgaag
0
330
Using Awk: An old-school text processing tool with surprising versatility
avdgaag
1
310
Other Decks in Programming
See All in Programming
Streams APIとTCPフロー制御 / Web Streams API and TCP flow control
tasshi
1
300
讓數據說話:用 Python、Prometheus 和 Grafana 講故事
eddie
0
350
僕がつくった48個のWebサービス達
yusukebe
18
17k
RailsのPull requestsのレビューの時に私が考えていること
yahonda
5
1.7k
GCCのプラグインを作る / I Made a GCC Plugin
shouth
1
150
CPython 인터프리터 구조 파헤치기 - PyCon Korea 24
kennethanceyer
0
250
カラム追加で増えるActiveRecordのメモリサイズ イメージできますか?
asayamakk
4
1.6k
Progressive Web Apps für Desktop und Mobile mit Angular (Hands-on)
christianliebel
PRO
0
110
PHP でアセンブリ言語のように書く技術
memory1994
PRO
1
150
Dev ContainersとGitHub Codespacesの素敵な関係
ymd65536
1
130
のびしろを広げる巻き込まれ力:偶然を活かすキャリアの作り方/oso2024
takahashiikki
1
410
Vue3の一歩踏み込んだパフォーマンスチューニング2024
hal_spidernight
3
3.1k
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
53
9k
Facilitating Awesome Meetings
lara
49
6k
A Modern Web Designer's Workflow
chriscoyier
692
190k
Testing 201, or: Great Expectations
jmmastey
38
7k
Adopting Sorbet at Scale
ufuk
73
9k
Being A Developer After 40
akosma
86
590k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
25
1.8k
The Art of Programming - Codeland 2020
erikaheidi
51
13k
Thoughts on Productivity
jonyablonski
67
4.3k
Learning to Love Humans: Emotional Interface Design
aarron
272
40k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
41
2.1k
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