私が作っているエンジン用のシンプルなレールインストールジェネレーターがあります:
module Bouncer
module Generators
class InstallGenerator < Rails::Generators::Base
source_root File.expand_path("../../templates", __FILE__)
desc "Copies locale file and migrations to your application."
def copy_locale
copy_file "../../../config/locales/en.yml", "config/locales/bouncer.en.yml"
end
def copy_migrations
# I would like to run "rake bouncer_engine:install:migrations" right here
# rather than copy_file "../../../db/migrate/blah.rb", "db/migrate/blah.rb"
end
end
end
end
ユーザーが実行するrails g bouncer:install
と、ロケールファイルがアプリにコピーされます。移行もコピーしたいのですが、copy_file
メソッドを使用するのではなくrake bouncer_engine:install:migrations
、コマンドラインから実行するのと同じように、ジェネレーター内で実行できることを望んでいました。これどうやってするの?