我在自己编写的插件中遇到了一个奇怪的问题。奇怪之处在于我有另外一个插件,在其中打开各种ActiveRecord类时,它可以自动重新加载而没有任何问题。
在插件的init.rb文件中,我有以下代码:
在插件的init.rb文件中执行了以下操作。
但是我的确可以。
这是我的完整init.rb文件。
在插件的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不存在的错误。这个插件在这一步还没有被加载。
让人困惑的是,acts-as-readable插件完全没有问题。
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:in
method_missing'
: 未定义局部变量或方法 has_karma_values' for #<Class:0x9ad1b24> (NameError)
#to_prepare
,而在生产环境中仅在初始化后立即调用一次。 - yfeldblum