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 the wheel
Search
Arjan van der Gaag
July 08, 2015
Programming
0
140
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
730
Getting to know Elm
avdgaag
0
100
Beating Impostor Syndrome (NordicRuby 2016)
avdgaag
0
66
Hanami: because sometimes, you need to re-invent the wheel
avdgaag
2
400
Use your database for… Validations! Caching! Logic!
avdgaag
0
57
Web development that hurts even less: taking lessons from Rails
avdgaag
1
270
Ruby acting up: A look at how Celluloid implements the actor model for concurrency in Ruby.
avdgaag
0
170
Ecto: a database wrapper and language integrated query for Elixir
avdgaag
0
250
Using Awk: An old-school text processing tool with surprising versatility
avdgaag
1
280
Other Decks in Programming
See All in Programming
チームでモデリングを育てるうえで 考えたこと・気づいたこと / Cultivating Modeling in Teams: Thoughts and Insights
mackey0225
5
2.2k
Honoとhtmx
yusukebe
6
1.2k
RubyVM を PHP で実装する 〜Hello World を出力するまで〜
memory1994
PRO
1
490
PHP 8.3で追加されたjson_validate()を徹底的に深掘りしてみよう
mashirou1234
1
720
もうすぐ新年度、Babylon.jsがお勧めな3個の理由
hideg
0
160
Enhancing Applications with Accessibility API
kishikawakatsumi
3
880
DDDはなぜ難しいのか / 良いコードの定義と設計能力の壁
pospome
24
7.2k
Ruby製社内ツールのGo移行
bgpat
2
260
Cloud RunとCloud PubSubでサーバレスなデータ基盤2024 with Terraform / Cloud Run and PubSub with Terraform
shinyorke
7
1.9k
PHPでOfficeファイルを取り扱う! PHP Officeライブラリを プロダクトに組み込んだ話
hirobe1999
0
840
IntelliJ IDEA を知らなかった 自分に教えたい小ネタ集 / IntelliJ IDEA Hints for My Past Self
mackey0225
3
160
「コンパイル時のユニットテスト」導入するとユニットテストを 書かなくてよくなるのか?
tomohisa
9
2.2k
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
113
18k
Design by the Numbers
sachag
274
18k
Docker and Python
trallard
33
2.6k
Building a Scalable Design System with Sketch
lauravandoore
455
32k
Practical Orchestrator
shlominoach
180
9.7k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
124
32k
Music & Morning Musume
bryan
39
5.5k
YesSQL, Process and Tooling at Scale
rocio
160
13k
Building Better People: How to give real-time feedback that sticks.
wjessup
350
18k
The Invisible Side of Design
smashingmag
293
49k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
57
14k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
355
22k
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