0

Ruby on Rails 3.2.2 を使用しています。Somethingプラグインを実装しました(ほとんど宝石ですが、宝石ではありません)。関連するすべてのファイルはlib/somethingディレクトリにあります。そのプラグインに関するコード生成を自動化したいので、Ruby on Rails Generatorsを思い付きました。したがって、プラグインについてSomething、ディレクトリに独自のジェネレーターを実装することを探しています。lib/something

作り方と処方箋とは?たとえば、必要なすべてのファイルをディレクトリrails generateに適切に生成するには、どのコマンド ラインを呼び出す必要がありますか? lib/somethingジェネレーターは引き続きプラグイン ( gemではない) で動作しますか? この問題についてのアドバイスは何ですか?

4

1 に答える 1

0

私はそれを宝石にします。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
于 2012-09-19T19:05:13.223 に答える