Ich versuche einfach, einen Plugin-Migrationsgenerator ohne Parameter zu erstellen, wie zum Beispiel: $rails generate yaffle
und dies sollte die Migrationsdatei (lib / generators / yaffle / template / create_yaffle.rb) nach db / migrate / [timestamp] kopieren. _create_yaffle.rb.
$rails generate yaffle
ausführe, bekomme ich eine Nachricht, dass keine Argumente angegeben werden. Es wird erwartet, dass das Format rails generate yaffle NAME [options]
lautet. Ich möchte keine Optionen / Argumente haben, es sollte nur rails generate yaffle
sein. Was soll ich tun?
Ich folgte dem Generator, der in acts_as_commentable verwendet wurde sieht ziemlich einfach aus, aber ich weiß nicht, wo ich diese Einstellungen ändern soll ... kann jemand helfen?
Generatorcode:
%Vor%Ok, ich habe die Antwort gefunden ...
Rails::Generators::NamedBase
anstelle von Rails::Generators::Base
in meiner Generatordatei verwendet! Wenn Sie NamedBase verwenden, erwartet es immer, dass ein Argument übergeben wird (der Name des Initialisierers) Erläuterung: guides.rubyonrails.org/generators
template
method anstelle von migration_template
verwendet, da die Migrationsdateien keine Migrationsnummer erzeugen Erklärung: Rails :: Generatoren :: Migration.migration_template
Letztendlich hat das funktioniert!
%Vor% Ein kleiner Schliff zur Lösung - damit Sie sich nicht den Zeitstempel für die Migration und die Zukunftssicherheit Ihres Generators zulegen müssen, falls das Kernteam von Rails entscheidet, eine andere Form des Stempelns (zB SHA-Hashes auf 10 Zeichen) zu wählen kann require 'rails/generators/active_record'
und extend ActiveRecord::Generators::Migration
wie folgt aussehen:
UPDATE In Rails 4 ActiveRecord::Generators::Migration
ist kein Modul mehr, also benutze stattdessen:
Sie können einfach von ActiveRecord::Generators::Base
erben und alles wird funktionieren
Tags und Links ruby-on-rails-3 ruby-on-rails ruby-on-rails-plugins