Forum: Italian Ruby user group Come aggiungere un metodo alla classe String?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Sam P. (Guest)
on 2008-11-17 09:20
Salve a tutti

Vorrei aggiungere un metodo "mio_metodo" alla classe String, in modo da
poter fare qualcosa tipo:

str = "Mia Stringa".mio_metodo

Perciò nel controller ho messo:

class String
  def mio_metodo

  end
end

Ma non funziona.

Come si fa?

Grazie a tutti.
Michele F. (Guest)
on 2008-11-17 10:01
(Received via mailing list)
On Mon, Nov 17, 2008 at 8:20 AM, Sam P. <removed_email_address@domain.invalid> 
wrote:
> Salve a tutti
>
> Vorrei aggiungere un metodo "mio_metodo" alla classe String, in modo da
> poter fare qualcosa tipo:

[...]

> Ma non funziona.
>
> Come si fa?

devi 'riaprire' la classe. Dai un'occhiata a questo:
http://www.juixe.com/techknow/index.php/2007/01/17...

michele.
Duilio R. (Guest)
on 2008-11-17 19:59
Sam P. wrote:
> Salve a tutti
>
> Vorrei aggiungere un metodo "mio_metodo" alla classe String, in modo da
> poter fare qualcosa tipo:
>
> str = "Mia Stringa".mio_metodo
>
> Perciò nel controller ho messo:

nel controller? Quindi vuoi farlo in Ruby on Rails... sarebbe stato
meglio specificarlo ;)

>
> class String
>   def mio_metodo
>
>   end
> end
>
> Ma non funziona.
>
> Come si fa?

prova ad inserirlo nel file environment.rb (andrebbe messo in una
libreria, ma così è il modo più semplice)

>
> Grazie a tutti.

Prego
Duilio R.
Sam P. (Guest)
on 2008-11-17 20:23
Michele F. wrote:
-cut-
> devi 'riaprire' la classe. Dai un'occhiata a questo:
> http://www.juixe.com/techknow/index.php/2007/01/17...
>
> michele.

OK, funziona, grazie!

Nel controller ho messo:

String.class_eval do
  def mio_metodo
  ...
  end
end
Sam P. (Guest)
on 2008-11-17 20:25
Duilio R. wrote:
-cut-
> nel controller? Quindi vuoi farlo in Ruby on Rails... sarebbe stato
> meglio specificarlo ;)
-cut-
> prova ad inserirlo nel file environment.rb (andrebbe messo in una
> libreria, ma così è il modo più semplice)

Non ho capito bene...

Forse vuoi dire che avendolo messo solo nel controller non funziona in
tutto il progetto?

Si, sono d'accordo, ma potrei metterlo nel controller application, no?

Grazie
Pietro G. (Guest)
on 2008-11-17 22:05
(Received via mailing list)
2008/11/17 Sam P. <removed_email_address@domain.invalid>:
> Duilio R. wrote:
>> prova ad inserirlo nel file environment.rb (andrebbe messo in una
>> libreria, ma così è il modo più semplice)
>
> Non ho capito bene...
>
> Forse vuoi dire che avendolo messo solo nel controller non funziona in
> tutto il progetto?
>
> Si, sono d'accordo, ma potrei metterlo nel controller application, no?

se vuoi che sia disponibile ovunque, cioè controller, model, etc.,
allora devi metterlo nella configurazione di rails.

io di solito piazzo queste cose in /lib, dopo di che in
environments.rb faccio require 'il_mio_file'.
Luca G. (Guest)
on 2008-11-18 00:57
(Received via mailing list)
lib/core_ext/string.rb
class String
  def method
    # implementation here
  end
end

config/initializers/core_ext.rb
Dir["#{RAILS_ROOT}/lib/core_ext/*.rb"].each {|file| require file}

Luca
This topic is locked and can not be replied to.