È 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.
Sei certo' hai installato la gemma? 'gem install circle' dovrebbe avere tutte le dipendenze installate. –