Sha256: 55207d152e379ccc5af5570613786e4a60345c006fdf97440b67cfc7771bc02a

Contents?: true

Size: 1.5 KB

Versions: 1

Compression:

Stored size: 1.5 KB

Contents

require "rails/generators/active_record/model/model_generator"

# TODO: add shoestrap to gemfile

module Shoestrap
  class CmsGenerator < ActiveRecord::Generators::ModelGenerator
    source_root File.expand_path('../templates', __FILE__)
    # ... and those files are from: activerecord-3.2.11/lib/rails/generators/active_record/model/templates

    remove_hook_for :test_framework

    def create_migration_file
      return unless options[:migration] && options[:parent].nil?
      migration_template "migration.rb", "db/migrate/create_#{table_name.gsub('cms_','')}.rb"
    end

    def create_model_file
      template 'model.rb', File.join('app/models', "#{file_name}.rb")
    end

    def create_module_file
    end

    def generate_scaffolds
      generate 'scaffold_controller', "#{name} #{attributes_string} --routing-specs=false --request-specs=false --controller-specs=false --view-specs=false"
    end

    def generate_route
      generate 'resource_route', name
    end

    def generate_nav_link
      inject_into_file 'app/views/kuhsaft/cms/admin/_main_navigation.html.haml', :after => 'kuhsaft.cms_pages_path' do
        "\n  %li\n    = link_to t(\'cms.#{real_table_name}\'), #{plural_table_name}_path"
      end
    end

    def generate_translations
      template 'model.yml.erb', "config/locales/de/#{real_table_name}.yml"
    end

    protected

    def attributes_string
      attributes.map{ |a| "#{a.name}:#{a.type}" }.join(' ')
    end

    def real_table_name
      table_name.gsub('cms_', '')
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
shoestrap-0.0.2 lib/generators/shoestrap/cms_generator.rb