如何为位于`lib / `目录的插件实现生成器?

我正在使用Ruby on Rails 3.2.2。 我已经实现了一个Something插件(它几乎是一个gem,但不是 gem),并且所有相关文件都在lib/something目录中。 由于我想自动化与该插件相关的代码生成,我想出了Ruby on Rails生成器 。 因此, 对于Something插件 ,我正在寻找在lib/something目录中实现我自己的生成器

我该怎么做,处方是什么? 也就是说,例如,应该调用rails generate命令行来正确生成lib/something目录中所有需要的文件? 生成器仍然可以使用插件( 而不是gem)? 关于这个问题有什么建议?

我会把它变成一颗gem。 我使用gem制造发电机,但我不知道发电机是否仍然可以使用插件。

如果你在使用命令行时遇到困难,我猜你不需要任何参数。 (如果你需要一个参数,我可以复制提供的模板,如果我需要其他一些参数,我会丢失,所以我的建议仅限于非参数。)

我有一个生成器gem,它生成另一个gem所需的迁移文件。 它检查具有给定根名称(没有时间戳前缀)的迁移是否在db / migrate中,否则创建它。

这是我的代码。 我认为这个例子是你需要的帮助。

 class ItrcClientFilesGenerator < Rails::Generators::Base source_root(File.dirname(__FILE__) + "/../src") desc "Generator to create migrations for needed db tables" def create_itrc_client_files prefix = DateTime.now.strftime("%Y%m%d%H%M") existing_migrations = Dir.glob("db/migrate/*itrc*").map do |path| File.basename(path).gsub(/^\d*_/, '') end Dir.glob(File.dirname(__FILE__) + "/../src/*").sort.each_with_index do |src_filepath, index| src_filename = File.basename(src_filepath) unless existing_migrations.include?(src_filename.gsub(/^\d*_/, '')) then this_prefix = "#{prefix}#{'%02i' % index}_" dst_filename = src_filename.gsub(/^\d*_/, this_prefix) copy_file(src_filename, "db/migrate/" + dst_filename) end end end end