Glamping

Glamping

Innleggav limbo » ons 07.11.2007 16:15

Jeg ønsker alle rubyutviklere hjertelig velkommen til å være med på utviklingen av Glamping (http://ruby-glamping.com).

Glamping er Camping (http://code.whytheluckystiff.net) som er forbedret.

Det er Magnus Holm (judofyr.net) som har tatt seg av utviklingen. Og vi skal få i gang en SVN og litt annen "snæx" i løpet av uka.

Så, har dere noen endringer på koden så send de inn til mail {ætt] simpleflux (dått} com

Moderator
Brukerens avatar
medlem i 221 måneder
 

Info om Glamping

Innleggav judofyr » ons 07.11.2007 22:30

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 Routes
Nå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


Struktur
Hvis 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...
medlem i 199 måneder
 

Re: Glamping

Innleggav limbo » ons 21.11.2007 13:47

Tenkte jeg kunne poste denne linken.
http://code.google.com/p/glamping/

Moderator
Brukerens avatar
medlem i 221 måneder
 


Returner til Ruby



Hvem er i Forumene

Registrerte brukere: Google [Bot]



cron