ruby – 未初始化的常量ActiveRecord(NameError)

前端之家收集整理的这篇文章主要介绍了ruby – 未初始化的常量ActiveRecord(NameError)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在运行一个脚本(我失去了一个与我合作的朋友.)它是这样开始的:
require 'ruby-debug'
require 'circle'

first_circle=Circle.new()
@number_of_rounds=1

但我不断收到此错误消息:

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>'

我该怎么办?

解决方法

这是交叉发布到 ruby-talk.

ActiveRecord是一个与数据库对话的类,这个gem期望在与加载的ActiveRecord的数据库连接的上下文中运行.如果你在Rails中,这意味着加载你的Rails环境.或者如果只是ActiveRecord,这样的东西将起作用:

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,: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

但说实话,如果你不知道ActiveRecord是什么,那么这个宝石似乎不太可能为你解决问题.此外,我对这个宝石有点怀疑,它有一个misspelling in its migration,除非你去解决它,它实际上不起作用.这已经被打破了至少7个月而没有被修复.有<宝石的800次下载,并不多(少数用户=发现和修复错误的人数较少),而且看起来并不像作者打算维护它. 好的,我刚刚意识到实际发生了什么.花了大约20分钟把它写在上面,这可能有助于后来谷歌搜索一个问题,所以我要离开它.我怀疑,真正发生的事情是你的系统中有一个名为circle的宝石,你的文件可能位于同一个名为circle的目录中.您的加载路径未正确设置,因此当您需要“circle”时,它会找到gem而不是您编写的文件.简单的回答就是需要File.dirname(__ FILE__)“/圈”,而不是需要“圆圈”这是不是真的正确的答案,但它没有进入要弄清楚什么是正确的所需的细微差别的无数工作事情是.如果你想弄清楚什么是正确的东西,我需要知道你所使用的Ruby版本,你打算如何使用和调用这些代码,以及你的目录结构是什么样的. 也.如果你曾经说过circle.rb是同一目录中的一个文件,那么我最后的答案就不会丢失20分钟.您应该在将来提供足够的背景来理解问题.

原文链接:https://www.f2er.com/ruby/267805.html

猜你在找的Ruby相关文章