PDA

Visualizza la versione completa : Primi problemi


Sgurbat
23-11-2008, 14:51
Ciao a tutti,

sto cercando di seguire la guida di HTML.it su Ruby e ho installato l'editor FreeRIDE ma non riesco a far funzionare i primi esempi.

Nello specifico credo due classi:



class CarroArmato
def initialize
puts "Sono un nuovo carro armato"
end
end

class Camion
def initialize
puts "Sono un nuovo camion"
end
end


e in IRB digito


ca = CarroArmato.new

come indicato nell'esempio, ma in risposta ricevo



NameError: uninitialized constant CarroArmato
from (irb):6
from :0


Dove sbaglio? Grazie in anticipo.

Sgurbat
24-11-2008, 16:04
Nessuno? Eppure dovrebbe essere l'ABC.

In pratica qualsiasi classe definisca con il semplice costruttore, anche:



class Saluto
def initialize
puts "Hello World"
end
end


Nel momento in cui, in FreeRIDE, nell'interfaccia a linea di comando di IRB digito:



ciao = Saluto.new


Mi ritrovo con un messaggio di "uninitialized constant NOME_DELLA_CLASSE".

Sbaglio sicuramente qualche scemata ma avendo appena preso in mano RUBY non riesco a capire dove sia l'errore.

Grazie ancora.

ynw
25-11-2008, 01:08
Dall'errore sembra che irb non conosca la classe; se hai scritto il codice in un file dovresti richiedere l'utilizzo di quel file prima di poter utilizzare la classe definita al suo interno.

Se ad esempio hai salvato il codice nel file "carro.rb" in una cartella e lanci irb all'interno della stessa cartella, dovresti digitare qualcosa di simile:

$ irb
irb(main):001:0> require 'carro'
=> true
irb(main):002:0> c = CarroArmato.new
Sono un nuovo carro armato
=> #<CarroArmato:0x11c10>
irb(main):003:0>

Nota che nell'istruzione

require 'carro'

carro è il nome del file senza l'estensione ".rb"

Sgurbat
25-11-2008, 09:36
Ah ecco, presumevo potesse trattarsi di un problema di path.

L'unica cosa è che pensavo che IRB di FreeRIDE lavorasse direttamente sul file aperto.

Infatti ho specificato che usavo la shell di IRB integrata nell'IDE FreeRIDE.

Va beh poco male, poi a casa appena riesco faccio delle prove e vi faccio sapere.

Grazie mille, molto gentile :zizi:

Sgurbat
25-11-2008, 20:09
Niente da fare, per prima cosa non riesco a capire dove deve mettere i miei file ".rb" rispetto all'eseguibile IRB che si trova in "C:\ruby\bin\"

Grazie ancora.

weppos
25-11-2008, 20:39
I percorsi con require sono normalmente relativi all'ambiente che esegue il processo.
Se irb sta in C:\ruby\quALCOSA difficilmente avrai modo di inserirei i file lì dentro e comunque non avrebbe senso.

Crea una cartella, ad esempio sul desktop.
Apri una shell (DOS se usi windows) e naviga fino ad arrivare a quella cartella (esempio Documents/cartella).

cd Documents/cartella

Dopo di che lancia irb da dentro quella cartella.
Normalmente l'interprete è in un percorso caricato automaticamente dal sistema.
In questo caso basta

irb

Se non è caricato in automatico devi lanciarlo col percorso completo.

C:\ruby\...

Ti ricordo che sei sempre virtualmente nella cartella con il DOS.
In quel momento il percorso base è Documents/cartella.

A quel punto, se metti un file dentro a Documents/cartella chiamato carro.rb (quindi raggiungibile a Documents/cartella/carro.rb) allora da irb sarà sufficiente scrivere

require 'carro.rb'

Se il file lo metti in Documents/cartella/altracartella/carro.rb

scriverai

require 'altracartella/carro'

e così via.

Sgurbat
25-11-2008, 20:45
ok grazie credo di avercela fatta, inoltre ho trovato questa guida in italiano che sembra ben fatta
http://stefano.dscnet.org/page/imparando_ruby

Sicuramente vi romperò i maroni di nuovo a breve, qualcuno che tiene vivo questo forum ci deve pur essere giusto? :mame:

Grazie ancora. :)

Loading