Hi,

vielen Dank für eure Antworten. Genau diese Informationen haben mir gefehlt!

Leider hatte ich die E-Mail-Sammelfunktion der Mailing-List aktiviert, deshalb kann ich nicht auf die einzelnen Antworten zurückschreiben...

Für mich wichtige Punkte liste ich hier noch mal auf:

Die Anwendungsarchitektur (Stichwort: "shared nothing") von Rails sieht vor, dass jeder Request von einem einzelnen Prozess verarbeitet wird und
umgekehrt jeder Prozess nur an einem Request zur Zeit arbeitet.

Dies wird sicherlich noch eine inressanter Aspekt wenn meine Anwendung unter JRuby in einem Application-Container läuft.

Du hast einen Sonderfall erwischt ;-) Der Code in lib wird von Rails
nicht sofort geladen, sondern das Verzeichnis wird nur dem load path
hinzugefügt. Die Klassen werden also erst geladen, wenn sie das erste
mal im Code verwendet werden.



Das erscheint mir logisch, ich hab allerdings keine Erklärung dafür in der Doku gesehen.


Das Problem kannst Du z.B. lösen, indem Du den Code in einer Datei
array_ext.rb im Verzeichnis config/initializers ablegst. Dann wird er
schon beim Start der App geladen.


Hört sich gut an, werde ich ausprobieren.

Wenn sie nicht zur Domänge gehören: Eine simple Lösung für einen
globalen Store wäre ein OpenStruct zu verwenden. Folgende 2 Zeilen
unter lib/context.rb ablegen:

Danke für das Beispiel, soetwas habe ich gesucht, da meine Anwendung komplett ohne DB auskommen soll. Es werden lediglich externe APIs genutzt (Twitter, Google, Amazon).

Vielen Dank!

Am 21.06.2009 um 12:00 schrieb rubyonrails-ug-requ...@headflash.com:

Um E-Mails an die Liste rubyonrails-ug zu schicken, nutzen Sie bitte
die Adresse

        rubyonrails-ug@headflash.com

Um sich via Web von der Liste zu entfernen oder draufzusetzen:

        http://mailman.headflash.com/listinfo/rubyonrails-ug

oder, via E-Mail, schicken Sie eine E-Mail mit dem Wort 'help' in
Subject/Betreff oder im Text an

        rubyonrails-ug-requ...@headflash.com

Sie koennen den Listenverwalter dieser Liste unter der Adresse

        rubyonrails-ug-ow...@headflash.com

erreichen

Wenn Sie antworten, bitte editieren Sie die Subject/Betreff auf einen
sinnvollen Inhalt der spezifischer ist als "Re: Contents of
rubyonrails-ug digest..."


Meldungen des Tages:

  1. Re: in_place edit in sortable List (Guido Pesch)
  2. ROR Projekt im Immobilienbereich (Guido Pesch)
  3. ROR Projekt im Immobilienbereich (Guido Pesch)
  4. Re: wohin stech ich das? (Michael Schuerig)
  5. Re: wohin stech ich das? (Thomas R. Koll)
  6. Re: wohin stech ich das? (Phillip Oertel)


----------------------------------------------------------------------

Message: 1
Date: Sat, 20 Jun 2009 12:08:11 +0200
From: Guido Pesch <guido.pe...@netcologne.de>
To: Mailingliste der Rails-Usergroup-Deutschland
        <rubyonrails-ug@headflash.com>
Subject: Re: [Rubyonrails-ug] in_place edit in sortable List
Message-ID: <20090620120811.20924rb700bly...@netmail.netcologne.de>
Content-Type: text/plain; charset=UTF-8; DelSp="Yes"; format="flowed"

Hallo Martin,

ich habe es schon realisiert.
Aber danke trotzdem.

LG
Guido

Zitat von Martin Wöginger <electronicbi...@googlemail.com>:


Am 17.06.2009 um 14:20 schrieb Guido Pesch:

Guten Tag,

Ich möchte in_place edit in eine sortable List einbauen.
Die sortable List habe ich schon, klapp auch gut.

Ich nutze Rails 2.2.2, das plugin für in_place editing ist auch installiert.

Kann mir da jemand bitte helfen.

ähm, wobei jetzt genau? ;-)

abgesehen davon, wie willst du denn das bewerkstelligen? soweit ich
das richtig in erinnerung habe, reagiert beides auf mousedown, bzw
hängt sich in die event kette ein. wenn jemand auf das element
klickt, was soll dann passieren? ein drag oder ein edit?

lg
martin



Danke und Gruß
--
Powered by NetMail
_______________________________________________
rubyonrails-ug mailing list
rubyonrails-ug@headflash.com
http://mailman.headflash.com/listinfo/rubyonrails-ug



---
Martin Wöginger  fon: +49.30/440 3838 7
mobile: +49.179/24044 36
Knaackstrasse 10, 10405 Berlin, Germany
------mailto:woegin...@exasoft.net ------
------Jabber: electronicbi...@jabber.ccc.de ----
-------Skype: electronicbites
-------twitter: electronicbites

_______________________________________________
rubyonrails-ug mailing list
rubyonrails-ug@headflash.com
http://mailman.headflash.com/listinfo/rubyonrails-ug



--
Powered by NetMail


------------------------------

Message: 2
Date: Sat, 20 Jun 2009 12:21:01 +0200
From: Guido Pesch <guido.pe...@netcologne.de>
To: Mailingliste der Rails-Usergroup-Deutschland
        <rubyonrails-ug@headflash.com>
Subject: [Rubyonrails-ug] ROR Projekt im Immobilienbereich
Message-ID: <20090620122101.35686qhs1w6f6...@netmail.netcologne.de>
Content-Type: text/plain; charset=UTF-8; DelSp="Yes"; format="flowed"

Hallo Liste,

wer hat Lust an einem kleinen ROR Projekt mitzuarbeiten.
Es geht um eine Anwendung im Immobilienbereich.
Geld gibt es leider keins dafür (noch nicht).

Gruß
Guido Pesch

--
Powered by NetMail


------------------------------

Message: 3
Date: Sat, 20 Jun 2009 12:24:22 +0200
From: Guido Pesch <guido.pe...@netcologne.de>
To: "rubyonrails-ug@headflash.com" <rubyonrails-ug@headflash.com>
Subject: [Rubyonrails-ug] ROR Projekt im Immobilienbereich
Message-ID: <20090620122422.13377n0ulzwxz...@netmail.netcologne.de>
Content-Type: text/plain; charset=UTF-8; DelSp="Yes"; format="flowed"

Hallo Liste,

wer hat Lust an einem kleinen ROR Projekt mitzuarbeiten.
Es geht um eine Anwendung im Immobilienbereich.
Geld gibt es leider keins dafür (noch nicht).

Gruss
Guido Pesch


--
Powered by NetMail


------------------------------

Message: 4
Date: Sat, 20 Jun 2009 13:26:42 +0200
From: Michael Schuerig <mich...@schuerig.de>
To: rubyonrails-ug@headflash.com
Subject: Re: [Rubyonrails-ug] wohin stech ich das?
Message-ID: <200906201326.43038.mich...@schuerig.de>
Content-Type: Text/Plain;  charset="iso-8859-1"

On Saturday 20 June 2009, peter schröder wrote:
Hi,

ich bin noch frisch in der Rails-Entwicklung und habe ein paar
Fragen, die Google und Co mir noch nicht beantworten konnten.

1. Caching

Ich möchte externe Calls (z.B. zu Twitter) reduzieren und sie für n-
Minuten vorhalten.

In den standard-Rails-Caching-Methoden habe ich hierfür keine Lösung
gefunden (Mem-Cache-Lösung ist nicht möglich). Weshalb ich im Moment
in der environement.rb eine Ruby-Cache-Instanz erzeuge und als
Konstante definiere, die ich dann in allen Controllern benutzen kann.

Du könntest einfach Rails.cache verwenden.

2. Monkey-Patching

Ich möchte der Array-Klasse eine eigene Sortierungs-Funktion
verpassen. Wenn ich meine Gepatchte-Klasse ins Lib-Verzeichnis lege,
dann ist die Methode nicht aufrufbar. Ich nehme an, dass ich mich
dort irgendwie im Rails-Namespace bewege.
Wenn ich die Klasse im environment.rb definiere, dann geht es,
allerdings erscheint mir auch dies sehr unsauber.

Ich bin nicht sicher, aber ich glaube, du bist auf dem falschen Weg.
Wozu brauchst du eine eigene Sortiermethode? Hast du schon einen Blick
auf Array#sort_by geworfen? Geht es darum, Objekte zu sortieren, die aus
der Datenbank kommen? Dann ist vermutlich eine :order-Option an
"geeigneter" Stelle der richtige Ansatz.

In environment.rb solltest du nichts definieren, dafür gibt es
Initializer in config/initializers.

3. Kontext

Gibt es einen "globalen" Anwendungs-Kontext in dem ich Werte
definieren kann? So dass ich z.b. im Controller so etwas wie
context.put aufrufen kann um einen Wert zu schreiben oder einen
Counter zu erhöhen?

Nein, gibt es nicht und kann es, ohne zusätzlichen Aufwand, nicht geben. Die Anwendungsarchitektur (Stichwort: "shared nothing") von Rails sieht vor, dass jeder Request von einem einzelnen Prozess verarbeitet wird und
umgekehrt jeder Prozess nur an einem Request zur Zeit arbeitet. Um
gleichzeitig mehrere Requests verarbeiten zu können, sind also mehrere
Rails-Prozesse nötig, die jeweils gegeneinander isoliert sind.

Wenn du nun einen gemeinsamen Kontext brauchst, bedeutet das, dass du
eine Ressource in der Architektur etablierst, die von mehreren Rails-
Prozessen geteilt wird. Zugriffe auf eine solche Ressource müssen
synchronisiert werden und sie ist ein (weiterer, neben der Datenbank)
Flaschenhals und Fehlerpunkt. Was natürlich nichts daran ändert, dass
die Funktionalität oft trotzdem gebraucht wird. Memcached ist genau
dafür ein Beispiel.

Michael

--
Michael Schuerig
mailto:mich...@schuerig.de
http://www.schuerig.de/michael/



------------------------------

Message: 5
Date: Sat, 20 Jun 2009 16:02:34 +0200
From: "Thomas R. Koll" <tom...@gmx.de>
To: Mailingliste der Rails-Usergroup-Deutschland
        <rubyonrails-ug@headflash.com>
Subject: Re: [Rubyonrails-ug] wohin stech ich das?
Message-ID: <08f74939-1114-4539-a5e7-ecab6848b...@gmx.de>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed; delsp=yes


Am 20.06.2009 um 11:42 schrieb peter schröder:

2. Monkey-Patching

Ich möchte der Array-Klasse eine eigene Sortierungs-Funktion
verpassen. Wenn ich meine Gepatchte-Klasse ins Lib-Verzeichnis lege,
dann ist die Methode nicht aufrufbar. Ich nehme an, dass ich mich
dort irgendwie im Rails-Namespace bewege.
Wenn ich die Klasse im environment.rb definiere, dann geht es,
allerdings erscheint mir auch dies sehr unsauber.

wenn du lib/array_monkey.rb hast dann musst du im environment.rb noch
require 'array_monkey' machen.
Die Dateien und Klassen im lib verzeichnis stehen nicht automatisch
zur Verfügung.

ciao, tom

--
Thomas R. "TomK32" Koll || http://tomk32.de || http://ananasblau.com
just a geek trying to change the world
Skype: TomK32 || Mail: tom...@gmx.de
http://flickr.com/people/tomk32



------------------------------

Message: 6
Date: Sat, 20 Jun 2009 17:25:21 +0200
From: Phillip Oertel <m...@phillipoertel.com>
To: Mailingliste der Rails-Usergroup-Deutschland
        <rubyonrails-ug@headflash.com>
Subject: Re: [Rubyonrails-ug] wohin stech ich das?
Message-ID: <b215e44d-5580-4370-b772-81271f87e...@phillipoertel.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed; delsp=yes

Hi Peter,


1. Caching

Ich möchte externe Calls (z.B. zu Twitter) reduzieren und sie für n-
Minuten vorhalten.

In den standard-Rails-Caching-Methoden habe ich hierfür keine Lösung
gefunden (Mem-Cache-Lösung ist nicht möglich). Weshalb ich im Moment
in der environement.rb eine Ruby-Cache-Instanz erzeuge und als
Konstante definiere, die ich dann in allen Controllern benutzen kann.

Ich kann mir einfach nicht vorstellen, dass es hierfür nicht eine
"Saubere" Lösung gibt.

Die anderen Cache-Backends in Rails unterstützen AFAIK tatsächlich
keine expiry. Hier ein Backend, dass das könnte (gerade eben schnell
gehackt, nur als "proof of concept" gedacht) http://gist.github.com/133179
Um es zu verwenden in environment.rb  config.cache_store
= :memory_store_with_expiry setzen.

Aber ... willst Du die Applikation später deployen und (ein bischen)
skalieren? Wenn ja wirst Du einen Cache brauchen auf den von mehreren
Prozessen aus zugegriffen werden kann. Egal ob deployment via Mongrel
Cluster oder mod_passenger. D.h. MemCache oder FileStore.

2. Monkey-Patching

Ich möchte der Array-Klasse eine eigene Sortierungs-Funktion
verpassen. Wenn ich meine Gepatchte-Klasse ins Lib-Verzeichnis lege,
dann ist die Methode nicht aufrufbar. Ich nehme an, dass ich mich
dort irgendwie im Rails-Namespace bewege.

Nee, das ist nicht das Problem.

Wenn ich die Klasse im environment.rb definiere, dann geht es,
allerdings erscheint mir auch dies sehr unsauber.

Du hast einen Sonderfall erwischt ;-) Der Code in lib wird von Rails
nicht sofort geladen, sondern das Verzeichnis wird nur dem load path
hinzugefügt. Die Klassen werden also erst geladen, wenn sie das erste
mal im Code verwendet werden. Das funktioniert bei noch nicht
definierten Klassen wunderbar. Aber nachdem die Array-Klasse schon
bekannt ist, schaut Rails nicht in dem Verzeichnis nach und Dein Code
wird nicht geladen :-(

Das Problem kannst Du z.B. lösen, indem Du den Code in einer Datei
array_ext.rb im Verzeichnis config/initializers ablegst. Dann wird er
schon beim Start der App geladen.

3. Kontext

Gibt es einen "globalen" Anwendungs-Kontext in dem ich Werte
definieren kann? So dass ich z.b. im Controller so etwas wie
context.put aufrufen kann um einen Wert zu schreiben oder einen
Counter zu erhöhen?

Was genau sind das für Werte? Globale Konfiguration? Wieder Cache?
Wenn sie irgendwie zur Domäne gehören würde ich sie auf bestehenden
oder auch neuen Models ablegen.

Wenn sie nicht zur Domänge gehören: Eine simple Lösung für einen
globalen Store wäre ein OpenStruct zu verwenden. Folgende 2 Zeilen
unter lib/context.rb ablegen:

require 'ostruct'
Context = OpenStruct.new

test in script/console:
Context.foo = 'Bar'
=> "Bar"
Context.foo
=> "Bar"

Wenns noch Fragen gibt würdes uns sicher helfen, wenn Du die konkreten
Probleme beschreibst ... dann muss man nicht so viel mutmaßen ;-)

Hope this helps,
Phillip

------------------------------

_______________________________________________
rubyonrails-ug mailing list
rubyonrails-ug@headflash.com
http://mailman.headflash.com/listinfo/rubyonrails-ug


Ende rubyonrails-ug Nachrichtensammlung, Band 46, Eintrag 14
************************************************************

_______________________________________________
rubyonrails-ug mailing list
rubyonrails-ug@headflash.com
http://mailman.headflash.com/listinfo/rubyonrails-ug

Antwort per Email an