私は Ruby gems を構築するのにかなり慣れていないので、最初の 1 つに挑戦しています。Rails アプリで移行を生成する gem のジェネレーターを作成中です。Railsアプリケーションにgemを含め、「rails g mygem:install」を実行して移行を作成し、「rake db:migrate」を実行してすべてを完成させるだけです。
同様のタスクを達成するためのいくつかの異なる方法を見つけましたが、これまでのところ何も機能していません。Railsアプリケーションでジェネレーターを見つけることができないようです。私が試した最新のガイドはhttp://www.railsdispatch.com/posts/how-rails-3-enables-more-choices-part-1にあります。
私の現在の宝石構造は次のようになります。
-lib/
-generators/
-templates/
-some_migration.rb
-install_generator.rb
-gemname/
-rails/
-railtie.rb
-engine.rb
-tasks/
-gemname.rake
-gemname.rb
-spec/
-gemname.gemspec
私の install_generator.rb ファイルは次のようになります。
require 'rails'
module Gemname
class InstallGenerator < ::Rails::Generators::Base
include Rails::Generators::Migration
source_root File.expand_path('../templates', __FILE__)
desc "add the migrations"
def self.next_migration_number(path)
unless @prev_migration_nr
@prev_migration_nr = Time.now.utc.strftime("%Y%m%d%H%M%S").to_i
else
@prev_migration_nr += 1
end
@prev_migration_nr.to_s
end
def copy_migrations
migration_template "some_migration.rb", "db/migrate/some_migration.rb"
end
end
end
見逃しているものがあるかどうかはわかりません。Gemfile に自分の gem がリストされていて、gem がインストールされている Rails 3.2 アプリケーションでテストしています。ジェネレーターが表示されない原因となっている可能性のある gem フォルダー構造に何か問題がありますか? どこかで何かを要求する必要がありますか?
どんな助けでも大歓迎です。