【发布时间】:2011-08-16 01:46:31
【问题描述】:
我写的插件有一个奇怪的问题。奇怪的是,我还有另一个插件可以打开各种 ActiveRecord 类,并且自动重新加载没有问题。
在我的插件 init.rb 文件中
User.class_eval do
has_one :reputation
include Karma
alias :rep :reputation
end
如果我在生产模式或 Rails 控制台中运行它,则没有问题。当我在开发中运行它时,它会加载一次,但除非我重新启动服务器,否则永远不会再次加载。
我在我正在使用的其他插件(acts_as_readable)中找不到任何特别之处,它以相同的方式打开用户。
编辑:
我做到了:
ActiveRecord::Base.class_eval do
class << self
def has_karma_values
has_one :reputation
alias :rep :reputation
end
end
end
在插件的init.rb文件中并做了
class User < ActiveRecord::Base
...
has_karma_values
...
end
并且得到关于 has_karma_values 不存在的相同错误。此时插件尚未加载。
令人困惑的是,作为可读的行为与
完全没有问题User.class_eval do
has_many :readings
end
ActiveRecord::Base.send :include, ActiveRecord::Acts::Readable
但我的却是。
这是我完整的 init.rb 文件
require 'reputation'
require 'karma_name'
require 'karma_tag'
require 'karma_title'
require 'acts_as_karmable'
require 'karma'
require File.expand_path('../lib/generators/karma_generator', __FILE__)
KarmaTitle.setup 'Default'
ActiveRecord::Base.class_eval do
class << self
def has_karma_values
has_one :reputation
alias :rep :reputation
end
end
end
ActiveRecord::Base.send :include, ActiveRecord::Acts::Karmable
这里是错误/home/david/apps/ruby/lib/ruby/gems/1.9.1/gems/activerecord-3.0.9/lib/active_record/base.rb:1014:inmethod_missing':未定义的局部变量或方法has_karma_values' for #<Class:0x9ad1b24> (NameError)
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-plugins