gem中的Rails 3发电机

可能听起来像一个简单的问题,但我很难过。

我创建了一个基本上包含生成器的gem。

它包含以下结构:

lib - generators - my_generator my_generator_generator.rb (see below) - templates my_template_files... - my_generator.rb (empty file) test -test files GemFile etc.. 

但是当我将这个Gem添加到我的gem文件并运行rails g时,它没有列出。 我需要做任何其他配置吗?

我的发电机大致看起来像这样……

 class MyGeneratorGenerator < Rails::Generators::NamedBase source_root File.expand_path('../templates', __FILE__) generator code.... end 

奇怪的是,它适用于Cygwin,但不适用于Ubuntu ……

这让我想了一下,但我遇到了同样的问题。 这是我修复它的方法。

树结构看起来像这样:

 lib - generators - gemname install_generator.rb - templates (template files) 

这是install_generator.rb的代码

 #lib/generators/gemname/install_generator.rb require 'rails/generators' module Gemname class InstallGenerator < Rails::Generators::Base desc "Some description of my generator here" # Commandline options can be defined here using Thor-like options: class_option :my_opt, :type => :boolean, :default => false, :desc => "My Option" # I can later access that option using: # options[:my_opt] def self.source_root @source_root ||= File.join(File.dirname(__FILE__), 'templates') end # Generator Code. Remember this is just suped-up Thor so methods are executed in order end end 

当我运行rails g

我知道了:

 Gemname gemname:install 

您可能需要设置的其他一些事项:

 #lib/gemname.rb module Gemname require 'gemname/engine' if defined?(Rails) # any additional requires end 

 #/lib/gemname/engine.rb require 'rails' module Gemname class Engine < Rails::Engine end end 

我在此发现的一些很好的参考资料是:

如果您使用Railtie,您可以在任何地方定义您的发电机:

 generators do require "path/to/my_railtie_generator" end 

在Railtieclass。