🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.ruby
Article #163

Re: Przeciazanie nazw

#163
From: Marcin Mielżyński
Date: Fri, 25 Aug 2006 22:51
46 lines
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-mail
References: <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