2013-03-31 11 views
6

Sto facendo funzionare uno script (che un amico ho perso contatto con scritto per me.) Si inizia così:costante inizializzata ActiveRecord (NameError)

require 'ruby-debug' 
require 'circle' 

first_circle=Circle.new() 
@number_of_rounds=1 

Ma io continuo a ricevere questo messaggio di errore:

C:/Ruby193/lib/ruby/gems/1.9.1/gems/circle-0.0.2/lib/circle/models/friendship.rb:1:in 
`<top (required)>': uninitialized constant ActiveRecord (NameError) 
    from 
C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in 
`require' 
    from 
C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in 
`require' 
    from 
C:/Ruby193/lib/ruby/gems/1.9.1/gems/circle-0.0.2/lib/circle/circle.rb:1:in 
`<top (required)>' 
    from 
C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in 
`require' 
    from 
C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in 
`require' 
    from 
C:/Ruby193/lib/ruby/gems/1.9.1/gems/circle-0.0.2/lib/circle.rb:7:in 
`<top (required)>' 
    from 
C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:60:in 
`require' 
    from 
C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:60:in 
`rescue in require' 
    from 
C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in 
`require' 
    from primes.rb:5:in `<main>' 

Cosa devo fare?

+0

Sei certo' hai installato la gemma? 'gem install circle' dovrebbe avere tutte le dipendenze installate. –

risposta

2

È necessario

gem install activerecord 

Spero che questo aiuti.

7

È stato inviato un messaggio incrociato a ruby-talk.

ActiveRecord è una classe che comunica con i database, questa gemma si aspetta di essere eseguita in un contesto con una connessione al database caricata da ActiveRecord. Se sei in Rails, significa caricare il tuo ambiente Rails. O se semplicemente ActiveRecord, qualcosa come questo funziona:

require 'active_record' 
require 'circle' 

ActiveRecord::Base.establish_connection adapter: 'sqlite3', database: ':memory:' 
ActiveRecord::Schema.define do 
    self.verbose = false 

    create_table :users do |t| 
    t.string :name 
    t.integer :friends_count, :default => 0, :null => false 
    end 

    create_table :friendships, :force => true do |t| 
    t.references :user, :friend 
    t.datetime :requested_at, :accepted_at, :denied_at, :blocked_at 
    t.string :status 
    t.timestamps 
    end 

    create_table :blocked_users, :force => true do |t| 
    t.references :user, :blocked_user 
    t.timestamps 
    end 

    change_table :friendships do |t| 
    t.index :user_id 
    t.index :friend_id 
    t.index :status 
    end 

    change_table :blocked_users do |t| 
    t.index :user_id 
    t.index :blocked_user_id 
    end 
end 

class User < ActiveRecord::Base 
    has_circle 
end 

john = User.create! name: 'john' 
mary = User.create! name: 'mary' 
paul = User.create! name: 'paul' 

john.befriend(mary) 
john.friends?(mary)    # => false 
mary.accept_friend_request(john) 
mary.friends?(john)    # => true 

Ma ad essere onesti, se non sai cosa ActiveRecord è, allora sembra improbabile che questo gioiello sarà risolvere i problemi per voi. Inoltre, sarei un po 'scettico su questo gioiello, ha uno misspelling in its migration tale che non funziona davvero a meno che tu non lo risolvi. Questo è stato rotto per almeno 7 mesi senza essere riparato. C'è < 800 download della gemma, che non è molti (pochi utenti = meno persone che trovano e correggono bug), e non sembra che l'autore abbia intenzione di mantenerla.


Ok, ho appena capito cosa sta realmente accadendo. Ci sono voluti circa 20 minuti per scrivere quello sopra, e potrebbe aiutare qualcuno dopo aver cercato su Google un problema, quindi ho intenzione di lasciarlo. Quello che è successo veramente, sospetto che sia il, è che hai un gioiello sul tuo sistema chiamato circle, e tu hai un file probabilmente nella tua stessa directory chiamata circle. Il tuo percorso di caricamento non è impostato correttamente, quindi quando fai il require 'circle', trova la gemma e non il file che hai scritto. Una semplice risposta è require File.dirname(__FILE__) + '/circle' invece di require 'circle' Questa non è la risposta giusta, ma funzionerà senza entrare nella miriade di sfumature necessarie per capire qual è la cosa giusta. Se vuoi capire qual è la cosa giusta, dovrei sapere che versione di Ruby sei, come intendi usare e invocare questo codice e come appare la tua struttura di directory.

Inoltre. Se avessi detto che circle.rb era un file nella stessa directory, allora non avrei perso 20 minuti con la risposta superiore. Dovresti fornire un contesto sufficiente in futuro per comprendere il problema.

+0

+ 1 per aver scelto di lasciarlo qui. @ JonathanKav - se sei interessato ad andare fino in fondo, potresti modificare le tue domande con gli input che Joshua sta chiedendo? Almeno uno potrebbe fare sorgere problemi in Github. –

+0

richiede 'active_record' ha fatto il trucco – d1jhoni1b

+0

Sì, questa domanda non è veramente generale, è molto specifica per il codice di questo utente. –

6

Dal momento che questa pagina è la prima a venire fuori quando googling il messaggio di errore, potrebbe essere utile notare che questo messaggio di errore può arrise quando si tenta di eseguire rspec su app/models/... invece di spec/models/...

Problemi correlati