Sha256: a6804cb9dafb043e9f4b980f338af47bf3ee71e79fefd6db697cbf41ba5b3963

Contents?: true

Size: 1.08 KB

Versions: 13

Compression:

Stored size: 1.08 KB

Contents

require 'rails/generators/active_record'
class SettingsonGenerator < Rails::Generators::NamedBase
  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} class"
    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

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
settingson-1.3.0 lib/generators/settingson/settingson_generator.rb
settingson-1.2.22 lib/generators/settingson/settingson_generator.rb
settingson-1.2.21 lib/generators/settingson/settingson_generator.rb
settingson-1.2.20 lib/generators/settingson/settingson_generator.rb
settingson-1.2.19 lib/generators/settingson/settingson_generator.rb
settingson-1.2.18 lib/generators/settingson/settingson_generator.rb
settingson-1.2.17 lib/generators/settingson/settingson_generator.rb
settingson-1.2.16 lib/generators/settingson/settingson_generator.rb
settingson-1.2.15 lib/generators/settingson/settingson_generator.rb
settingson-1.2.14 lib/generators/settingson/settingson_generator.rb
settingson-1.2.13 lib/generators/settingson/settingson_generator.rb
settingson-1.2.12 lib/generators/settingson/settingson_generator.rb
settingson-1.2.11 lib/generators/settingson/settingson_generator.rb