Ich habe eine einfache Schienen installieren Generator für einen Motor Ich mache:Kann ich eine Rake-Task in einem Generator ausführen?
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
Wenn ein Benutzer rails g bouncer:install
, eine locale-Datei in ihre App kopiert wird. Ich möchte auch in meine Migrationen kopieren, aber anstatt copy_file
Methode zu verwenden, hatte ich gehofft, ich könnte einfach rake bouncer_engine:install:migrations
innerhalb des Generators ausführen, wie ich von der Befehlszeile aus tun würde. Wie kann ich das machen?
yeah, ich versuche es als Teil der Installationsaufgabe laufen zu lassen, ich nehme an, Sie können nicht einfach eine Rake-Aufgabe in einem Generator ausführen? – stephenmurdoch
Nicht direkt durch die Wiederverwendung Ihres Codes, soweit ich weiß. Aber das Ausführen des Rake-Befehls als Shell-Befehl aus Ihrem Code sollte funktionieren ... Sie müssen nur sicherstellen, dass Sie es im richtigen Verzeichnis ausführen – Vapire
ahh, danke für Ihre Informationen. Ich wollte "Rake :: Task ['rake bouncer_engine: install: migrations']. Execute 'aus meinem Generator heraus verwenden, aber jetzt mache ich einfach das, was Sie sagen und kopieren die Dateien mit [dieser Technik] (http://www.dixis.com/?p=444) – stephenmurdoch