Article View: pl.comp.lang.ruby
Article #163Re: Przeciazanie nazw
From: Marcin Mielżyński
Date: Fri, 25 Aug 2006 22:51
Date: Fri, 25 Aug 2006 22:51
46 lines
2328 bytes
2328 bytes
janu wrote:
>>> latwo mozna sie domyslic to rozwiazanie nie dziala. Moje pytanie brzmi
>> co nie działa ?
>
> Wywolujac posrednio distance_of_time_in_words poprzez
> time_ago_in_words, gdzie distance_of_time_in_words staram sie
> przeciazyc, wywoluje sie tak naprawde stare distance_of_time_in_words.
> I to mi nie dziala - bo chcialbym uzywac mojej funkcji.
>
> Wiec da sie to jakos rozwiazac?
>
1. W Rubym nie istnieje pojęcie przeciążania metod ;) - możliwe że
perlowe multimetody będą w 2.0
2. Podejrzewam że chodzi o widoczność helpera z widoku a nie kontrolera
więc:
w twoim kodzie eval tworzy nowy moduł znajdujący się w bieżącej klasie,
który nie ma nic wspólnego z właściwym. Aby otworzyć istniejący wyżej
moduł musisz wyjść z przestrzeni klasy w której robisz eval poprzez
operator zakresu '::'
eval %{
module ::ApplicationHelper
def tralalala
'hahaha'
end
end
}
ale tak czy inaczej ładniej będzie:
ApplicationHelper.module_eval %{
def tralalala
'hahaha'
end
}
Tutaj już nie ma potrzeby robienia '::' (o ile byłby konflikt) bo
odwołanie sugeruje Rubiemu że moduł już istnieje i jest dostępny.
jeśli chcesz pobrać moduł ze stringa:
Object.const_get "ApplicationHelper"
lopex
Technical Details
Message-ID:
<ecnusm$938$1@news.onet.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mailReferences:
<1156527006.131474.273750@b28g2000cwb.googlegroups.com> <ecnfc7$rbs$1@news.onet.pl> <1156534325.219773.39940@m79g2000cwm.googlegroups.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mail From: Marcin Mielżyński <lopx@gazeta.pl> Newsgroups: pl.comp.lang.ruby Subject: Re: Przeciazanie nazw Date: Sat, 26 Aug 2006 00:51:01 +0200 Organization: Onet.pl Lines: 46 Message-ID: <ecnusm$938$1@news.onet.pl> References: <1156527006.131474.273750@b28g2000cwb.googlegroups.com> <ecnfc7$rbs$1@news.onet.pl> <1156534325.219773.39940@m79g2000cwm.googlegroups.com> NNTP-Posting-Host: chello087207016023.chello.pl Mime-Version: 1.0 X-Trace: news.onet.pl 1156546262 9320 87.207.16.23 (25 Aug 2006 22:51:02 GMT) X-Complaints-To: usenet@news.onet.pl NNTP-Posting-Date: Fri, 25 Aug 2006 22:51:02 +0000 (UTC) X-Sender: 5Da2qcG7AWj7WISFX859Php/OS6q4VnB In-Reply-To: <1156534325.219773.39940@m79g2000cwm.googlegroups.com> User-Agent: Thunderbird 1.5.0.5 (Windows/20060719) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit