Ruby on rails 我想知道如何在开发环境中强制加载模型
我想知道如何在开发环境中强制加载模型。(第2.3.10条) 当我处于测试或开发模式时,一些项目在使用之前是不会启动的。以下是控制台的说明:Ruby on rails 我想知道如何在开发环境中强制加载模型,ruby-on-rails,class,Ruby On Rails,Class,我想知道如何在开发环境中强制加载模型。(第2.3.10条) 当我处于测试或开发模式时,一些项目在使用之前是不会启动的。以下是控制台的说明: > project = Project.find(:some) RuntimeError: Can not find 'some' from /path/to/rails/lib/identifier.rb:23:in `class_from_key' from /path/to/rails/lib/identifi
> project = Project.find(:some)
RuntimeError: Can not find 'some'
from /path/to/rails/lib/identifier.rb:23:in `class_from_key'
from /path/to/rails/lib/identifier.rb:8:in `find'
from (irb):4
> Projects::SomeProject
=> Projects::SomeProject
> project = Project.find(:some)
=> #<Projects::SomeProject:0x10810ceb8 @key="some", @full_name="Some Project">
但这恰恰消除了发展的好处
关于确保所有子类都自动加载的好方法,有什么想法吗
代码详细信息
我有一个项目
课程
class Project
extend Identifier
def full_name
@full_name
end
def key
@key
end
end
这是更具体的项目类的基类
class Projects::SomeProject < Project
identifier :some
def initialize
@key = 'some'
@full_name = "Some Project"
end
end
补充一句可能没什么坏处
require 'some_project'
如果您有这样的需求,请在文件的顶部
module Identifier
def find(*args)
key = args.shift
klass = class_from_key(key)
if args.empty?
klass.new
else
klass.new args
end
end
private
def class_from_key(key)
raise "Can not find '#{key}'" unless identifiers.has_key?(key)
identifiers[key]
end
def identifiers
@@identifiers ||= {}
end
def identifier(key)
identifiers[key] = self
end
end
require 'some_project'