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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Arjan van der Gaag
July 08, 2015
Programming
0
250
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
890
Getting to know Elm
avdgaag
0
160
Beating Impostor Syndrome (NordicRuby 2016)
avdgaag
0
89
Hanami: because sometimes, you need to re-invent the wheel
avdgaag
2
590
Use your database for… Validations! Caching! Logic!
avdgaag
0
110
Web development that hurts even less: taking lessons from Rails
avdgaag
1
360
Ruby acting up: A look at how Celluloid implements the actor model for concurrency in Ruby.
avdgaag
0
300
Ecto: a database wrapper and language integrated query for Elixir
avdgaag
0
470
Using Awk: An old-school text processing tool with surprising versatility
avdgaag
1
410
Other Decks in Programming
See All in Programming
ベクトル検索のフィルタを用いた機械学習モデルとの統合 / python-meetup-fukuoka-06-vector-attr
monochromegane
2
490
grapheme_strrev関数が採択されました(あと雑感)
youkidearitai
PRO
1
240
CS教育のDX AIによる育成の効率化
niftycorp
PRO
0
140
AIに任せる範囲を安全に広げるためにやっていること
fukucheee
0
150
米国のサイバーセキュリティタイムラインと見る Goの暗号パッケージの進化
tomtwinkle
2
610
Redox OS でのネームスペース管理と chroot の実現
isanethen
0
280
How to stabilize UI tests using XCTest
akkeylab
0
130
DevinとClaude Code、SREの現場で使い倒してみた件
karia
1
1.1k
Feature Toggle は捨てやすく使おう
gennei
0
110
AI時代の脳疲弊と向き合う ~言語学としてのPHP~
sakuraikotone
1
980
守る「だけ」の優しいEMを抜けて、 事業とチームを両方見る視点を身につけた話
maroon8021
3
1.1k
[SF Ruby Feb'26] The Silicon Heel
palkan
0
120
Featured
See All Featured
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
67
37k
Git: the NoSQL Database
bkeepers
PRO
432
66k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.7k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
320
BBQ
matthewcrist
89
10k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.2k
Statistics for Hackers
jakevdp
799
230k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.8k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
86
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