我正在尝试生成资源,并且已删除对Active_record的所有引用并删除了databse.yml文件。
rails服务器启动正常,但是当我尝试生成模型时:
rails g resource contact
我收到以下错误:
没有为所需选项' - ''提供价值
有没有办法在生成资源时不指定数据库?
答案 0 :(得分:0)
没有简单的方法,没有。如果您查看资源生成器的source code,您将看到有关orm的此部分:
# Loads the ORM::Generators::ActiveModel class. This class is responsible
# to tell scaffold entities how to generate an specific method for the
# ORM. Check Rails::Generators::ActiveModel for more information.
def orm_class
@orm_class ||= begin
# Raise an error if the class_option :orm was not defined.
unless self.class.class_options[:orm]
raise "You need to have :orm as class option to invoke orm_class and orm_instance"
end
begin
"#{options[:orm].to_s.camelize}::Generators::ActiveModel".constantize
rescue NameError
Rails::Generators::ActiveModel
end
end
end
因此它明确拒绝任何没有ORM运行此命令的尝试,如果您指定了ORM,它正在寻找ORM::Generators::ActiveModel
。在顶部的评论中,它指定了查找更多信息的位置Rails::Generators::ActiveModel。顶部的注释解释了如何扩展它以创建ORM规范。
默认情况下,唯一内置于rails的是the ActiveRecord generator。
有一个名为rails3-generators的gem,其中包含许多常见库的生成器,但您可以see对于ORM,它只会为data_mapper
,mongo_mapper
添加功能,mongoid
和active_model
。
据我所知,“无数据库”没有预先构建的ORM生成器。如果需要,您可以按照Rails::Generators::ActiveModel
顶部的说明自行编写一个(并使用rails3-generators
宝石来源作为您需要的参考)。
但是,如果这看起来太费劲,我建议只是告诉它使用内置的ActiveRecord生成器生成,然后只需手动修改/删除它生成的与该ORM相关的任何内容。