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.
On Mon, Nov 17, 2008 at 8:20 AM, Sam P. [email protected] 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:
In Ruby the implementation of a class is not closed. In Ruby, it is incredibly easy to add new methods to any existing class at runtime, even core system classes like String, Array, and Fixum. You …
michele.
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.
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
2008/11/17 Sam P. [email protected] :
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’.
Michele F. wrote:
-cut-
devi ‘riaprire’ la classe. Dai un’occhiata a questo:
http://www.juixe.com/techknow/index.php/2007/01/17/reopening-ruby-classes-2/
michele.
OK, funziona, grazie!
Nel controller ho messo:
String.class_eval do
def mio_metodo
…
end
end
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