Это действительно зависит от типа генератора. Многие внутренние компоненты Rails сильно изменились между 2 и 3. Позвольте мне показать вам мой недавний опыт преобразования очень простого генератора миграции, который у меня есть в одном из моих приложений, с 2 до 3.
Вот код 2:
class LegacyMigrationGenerator < MigrationGenerator
def manifest
record do |m|
m.migration_template 'legacy_migration.rb', 'db/migrate'
end
end
end
А вот и 3 кода:
require 'rails/generators/active_record'
class LegacyMigrationGenerator < ActiveRecord::Generators::Base
source_root File.expand_path('../templates', __FILE__)
def create_migration_file
migration_template "legacy_migration.rb", "db/migrate/#{file_name}.rb"
end
end
Итак, как вы можете видеть - совершенно другой метод для переопределения, должен был наследовать от генератора сейчас, должен был вызывать это source_root
сейчас (раньше это было автоматически), и больше не вызывал migration_template
в блоке .
Это небольшое преобразование заняло у меня около трех часов, чтобы выследить все фрагменты через источник. Самое приятное, что мне вообще не пришлось менять шаблон (и я верю, что это будет справедливо для большинства генераторов).
При всем этом, я думаю, генерация миграции, вероятно, наименее хорошо документирована, глядя на руководство по генератору действительно не кажется слишком сложным воссоздать генераторы в Rails3. На мой взгляд, определенно стоит попробовать.
Кроме того, я знаю, что у одного из авторов этого руководства скоро выйдет книга с главой, посвященной генераторам, - так что это определенно то, что будет привлекать больше внимания.