Mam moduł który includuje w ApplicationController, chcę teraz żeby w self.included(base) tego modelu wyciągnąć requesta. Próbowałem to zrobić przy wykorzystaniu zmiennej base, ale base to ApplicationController:Class. Próbowałem sprawdzać jakie są metody/zmienne w tej klasie ale nie znalazłem sposobu na dostanie się do requesta takiego jaki jest w ApplicationController.
[code=ruby]class ApplicationController < ActionController::Base
include ModulA
before_filter :test
def test
modula_test(request)
end
end
module ModulA
def modula_test(request)
…
end
end[/code]
Chciałbym aby w application controller było jak najmniej kodu zależnego od tego modułu, tzn. includuje moduł a on później sam wykonuje z automatu odpowiednie akcje. Czyli żeby w module self.included.(base) uzyskać dostęp do requesta z którego to potrzebuje uzyskanie dostepu do params i do session z requesta, jak również do request jest mi potrzebny do SubdomainFu
module ModulA
def self.included(base)
//tutaj nie mogę uzyskać dostępu do requesta tego samogo co mam w ApplicationController ?
end
end
a to ja nie zrozumiałem chyba tego “uniknąć wywołania before_filter”
@wafcio: dalej nie do końca rozumiem co chcesz uzyskać. Jeżeli chodzi o included, to ten kod jest wykonywany podczas ładowania klasy, więc nie ma szansy, żeby tam dostać się do czegoś, co jest dostępne już podczas działania aplikacji.
w self.included(base) wpisuję base.send :include, IntanceMethods a w metodach znajdujących się w module InstaceMethods mam już dostęp do zmiennej request.
[code=ruby]module ModulA
def self.included(base)
base.send :include, InstanceMethods #tutaj wywołuje before filter na metodę w InstanceMathods
end
module InstanceMethods
def test #tutaj już mam dostęp do zmiennej request
end
end
end[/code]
Problem więc jest już rozwiązany, dzięki za wskazówki.