lib/generators/settingson/settingson_generator.rb in settingson-1.2.3 vs lib/generators/settingson/settingson_generator.rb in settingson-1.2.10

- old
+ new

@@ -1,7 +1,35 @@ +require 'rails/generators/active_record' class SettingsonGenerator < Rails::Generators::NamedBase - desc "This generator creates a model and his migration" - def create_migration - generate(:model, "#{name.camelize} name:string value:text") - inject_into_class "app/models/#{name.downcase}.rb", name.camelize, "\tinclude Settingson::Base\n" + include Rails::Generators::Migration + + source_root File.expand_path('../templates', __FILE__) + + desc "This generator creates a model and its migration" + def settingson_migration + klass = name.camelize + say "Searching for #{klass.constantize.inspect}" + if Object.const_defined?(klass) + + settingson_inject_lines(name) + + if klass.constantize.column_names.include?('name') + migration_template 'migrations/rename_name_to_key_on_settings.rb', 'db/migrate/rename_name_to_key_on_settings.rb' + end + + else + generate(:model, "#{klass} key:string value:text") + settingson_inject_lines(name) + end + end + + def self.next_migration_number dirname + ActiveRecord::Generators::Base.next_migration_number dirname + end + + private + def settingson_inject_lines(name) + if File.readlines("app/models/#{name.downcase}.rb").grep(/\A\s*include Settingson::Base\z/).blank? + inject_into_class "app/models/#{name.downcase}.rb", name.camelize, "\tinclude Settingson::Base\n" + end end end \ No newline at end of file