Vel, siden det er jeg som er utvikleren av Glamping får jeg vel fortelle litt mer om det.
I Simple Flux har vi tenkt til å bruke Camping som hovedrammeverk når vi skal utvikle ting. Vi syns Camping er genialt (akkurat som andre ting _why har laget). Men grensen på 4k kan bli litt knapp. Og Camping sitt oppsett passer ikke så veldig godt for store prosjekter. Derfor tenkte jeg fremover og begynte å lage
plugins til Camping. Koden var lite pen og det krevdes en del kode for å få det til å virke.
Men jeg fikk nå stappet inn nyttige ting. Etterhvert ble jeg lei av den stygge in-time "patchingen" av _why's kode og starter
Glamping (som står for Glamorous Camping). Ideen var å putte ting som ikke får plass i Camping inn i Glamping. Selve grunnsystemet skal ikke endres slik at alt som er laget til Camping virker i Glamping også.
Nå har jeg lagt til følgene:
- Nyeste trunk fra Camping
- Funky Routes (namespacing)
- Auto Migration (klarte å slette dette, så jeg må implementere det på nytt)
- Page Caching
- Erubis/ERB isteden for Markaby (som er treigt)
- Mulighet for Rails-lignende mappe-struktur
Funky RoutesNår man skriver i Camping ender man ofte opp slik:
- Kode: Merk alt
class Post < R '/post'
...
class PostNew < R '/post/new/'
...
class PostList < R '/post/list'
...
class Admin < R '/admin'
...
class AdminPages < R '/admin/pages'
...
class AdminPagesList < R '/admin/pages/list'
Men det er ikke spesielt DRY å gjenta "/post" og "/admin" så ofte. Derfor la jeg til namespace-funksjon:
- Kode: Merk alt
class Post < R '/post'
...
class PostNew < Post '/new'
...
class PostList < Post '/list'
...
class Admin < R '/admin'
...
class AdminPages < Admin '/pages'
...
class AdminPagesList < AdminPages '/list'
Hvis du nå vil endre "/admin" til "/secret-area" trenger du bare å endre en linje
Erubis/ERB- Kode: Merk alt
Glamping.goes :Demo
module Demo
VIEWS_ROOT = "/full/path/to/views"
end
module Demo::Controllers
class Index < R '/'
def get
@time = Time.now
render :index
end
end
end
# /full/path/to/views/index.erb
Hello World! The time is: <%= @time %>
Page Caching(orginal idé: http://operation0.org/2006/10/simple-page-caching-with-hidden-carrots)Caching er en viktig del som Camping mangler. Glamping har foreløpig støtte for Page Caching:
- Kode: Merk alt
Glamping.goes :Demo
module Demo
CACHE_DIR = "/full/path/to/cache"
VIEWS_ROOT = "/full/path/to/views"
end
module Demo::Controllers
class Index < R '/'
def get
cache_page do
@user = User.find(1)
@lots_of_stuff = :takes_long_time
render :index
end
end
end
class NewThing '/new'
def post
sweep_page(Index)
# parametere kan også sendes: sweep_page(Post, 45)
# sweep_page(:all) #=> sletter alt
"Sweeped!"
end
end
end
StrukturHvis du ikke vil ha alt i en fil kan du bruke Glamping.boot:
- Kode: Merk alt
app/
controllers/
helpers/
models/ # Migration puttes også her
views/
config/
database.yml # kun hvis du trenger å bruke database
schema.rb # kun hvis auto-migration skal brukes
demo.rb
I demo.rb trenger du kun følgende kode:
- Kode: Merk alt
require 'glamping/boot'
Glamping.boot(binding)
Så skjer det en del magiske ting:
- Glamping setter opp en Glamping-app ved hjelp av filnavnet (demo.rb => Demo, sample_app.rb => SampleApp)
- Hvis config/database.yml finnes vil den koble til database
- Alle filer som ligger i app/ puttes der de hører hjemme. (I de filene trenger du ikke "module Demo::Controllers" i starten. Glamping tar seg av det )
- CACHE_ROOT settes til cache/
- VIEWS_ROOT settes til app/views
Mer info kommer senere...