Gdzie przechowywac czyste klasy rubyego w strukturze rails ? Chodzi o wlasne rozszerzenia, np wlasna klase zarzadzajaca sesja
Czy istnieje jakas natywna metoda do kodowania struktury do JSON-a i/lub sposob zwracania JSON-a ? Dotychczas wysylalem naglowek application/json i sam skladalem dane do konkretnego lancucha.
Czy znacie jakas metode do wymiany zserializowanych struktur danych z PHP ? Chcialbym wymieniac dane pomiedzy tymi dwoma technologiami, zapisujac je w przestrzeni wymiany i edytujac w zaleznosci od aplikacji w danej technologii. Wiem, ze mozna to napisac samemu, ale ciekaw jestem czy ktos slyszal o takim rozwiazaniu.
[quote=jonesy]1) jaka jest roznica pomiedzy zapisem :
def metoda
end
a
def self.metoda
end
Zakladajac, ze obie przeciazaja metode z obiektu bazowego ?[/quote]
def method to definicja metody instancji klasy (obiektu) a self.metoda to definicja metody klasy (w innych jezykach statycznej)
Innymi słowy def metoda wywołujesz na obiekcie a def self.metoda na klasie, :
[code=ruby]class Test
def metoda1
end
def self.metoda2
end
end
Test.metoda1 - nie istnieje
Test.new.metoda1 - OK
Test.new.metoda2 - nie istnieje
Test.metoda2 - OK[/code]
xhr? to metoda na obiekcie request, czyli request.xhr? Nie możesz wywołać jej w klasie kontrolera bo ona odnosi się do konkretnego requestu.
Dobrą praktyką jest utworzenie lib/ext albo lib/core_ext i przechowywanie tam rozszerzen chociaz, moze to byc np. plugin w vendor/plugins albo cokolwiek innego.
Istnieje, np. obiekty ActiveRecord mają metodę to_json:
[code=ruby]Theme.find(:first).to_json
=> “{“name”: “default”, “updated_at”: “2008/02/15 16:20:35 +0000”, “id”: 4, “created_at”: “2008/02/15 16:20:35 +0000”}”[/code]
Poza tym istnieją biblioteki do obsługi json.
Najlepiej serializować do jakiegoś wspólnego formatu np. json, xml czy yaml.
Mam jeszcze jedno dodatkowe pytanie, ktore przeoczylem.
W jaki sposob rozumiec zapis :nazwa, stosowany np. przy okreslaniu klucza w tablicy asocjacyjnej - sam doczytalem, ze oznacza to odniesienie sie do nazwy zmiennej, a nie do jej wartosci, ale co to w rzeczywistosci oznacza ?
Symbol to po prostu wskaźnik z przypisaną nazwą, rózni się od String’a głównie tym, że Ruby nie rezerwuje pamięci dla Symboli które już istnieją:
[code=ruby]>> “abc”.object_id
=> 23456248630100
“abc”.object_id
=> 23456248618320
:abc.object_id
=> 735228
:abc.object_id
=> 735228[/code]
Jak widzisz id obiektu reprezentującego Symbol się nie zmienia, tzn, że istnieje tylko 1 obiekt :abc dla całego procesu.