:ジェネレータ内でレーキタスクを実行できますか?私はシンプルなレールは、私が作っているエンジンの発電機を設置している
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
をジェネレータ内で実行できると思っていました。これどうやってするの?
ええ、私はそれをインストールタスクの一部として実行しようとしていますが、私はあなたがジェネレータの中でレーキタスクを実行できないのですか? – stephenmurdoch
あなたのコードを再利用することで、私が知る限り、直接使用することはできません。しかし、あなたのコードからrakeコマンドをシェルコマンドとして実行すると、正しいディレクトリで実行するようにしてください。 – Vapire
ああ、ありがとうございます。私は 'Rake :: Task ['rake bouncer_engine:install:migrations']。execute'を私のジェネレータの中から使用するようにしていましたが、今はあなたの言うことをやって、[this technique]を使ってファイルをコピーしますhttp://www.dixis.com/?p=444) – stephenmurdoch