2010-05-01 4 views
1

J'ai installé la gemme 'simple_uuid' mais rien ne semble fonctionner.Gem installé et nécessite mais "Constante manquant"

et en cours d'exécution à l'aide irb les éléments suivants:

require 'rubygems' 
require 'simple_uuid' 

est très bien, revenez à la fois vrai. Mais en cours d'exécution suivantes:

retours

NameError: uninitialized constant UUID 
    from (irb):3 
    from :0 

Je suis un débutant rubis, donc ne présumez pas beaucoup dans les réponses. Merci.

Répondre

3

La classe est à l'intérieur d'un module SimpleUUID. Donc, soit « Inclure SimpleUUID » après l'exigent, ou se référer à la classe avec l'espace de noms complet: SimpleUUID :: UUID

require 'rubygems' 
require 'simple_uuid' 

> UUID.new 
NameError: uninitialized constant UUID 
     from (irb):3 

> SimpleUUID::UUID.new 
=> <UUID#70305762670060 time: Sat May 01 21:11:28 +0200 2010, usecs: 843284 jitter: 13605115058679102872> 
+0

Ainsi, les pierres précieuses ne sont pas comme espaces de noms .NET/Java? – tgandrews

+2

Non. Une gemme est une bibliothèque qui peut inclure plusieurs classes et modules. Exiger inclut un fichier et le fichier peut définir ce qu'il veut. Habituellement, cela est conduit par des conventions (comme la plupart des choses dans Ruby). J'ai figuré le nom du module en regardant le fichier: http://github.com/ryanking/simple_uuid/blob/master/lib/simple_uuid.rb Vous pouvez voir la classe dans "module". Les modules ne sont pas seulement des espaces de noms. Je vous recommande de lire sur les mixins dans les classes. – duncan

+1

@Tom: vous pouvez contourner ce problème en faisant 'include SimpleUUID' pour l'inclure dans l'espace de travail' main'. –

Questions connexes