Project

General

Profile

Actions

Patch #27659

closed

redmine_plugin_model_generator improvements(fixes and timestamps)

Added by Javier Menéndez Rizo over 6 years ago. Updated almost 5 years ago.

Status:
Closed
Priority:
Normal
Category:
Plugin API
Target version:
Start date:
Due date:
% Done:

0%

Estimated time:

Description

Problems fixed:
  • parent option not working
  • migration option not working
Things added:
  • Timestamp for migrations

It would be really nice to add this to the migration generator for plugins.


Files

redmine_plugin_model_generator.patch (2.89 KB) redmine_plugin_model_generator.patch Javier Menéndez Rizo, 2017-11-27 22:11

Related issues

Related to Redmine - Defect #11024: redmine_plugin_model generator does not create the migrationClosed

Actions
Actions #1

Updated by Toshi MARUYAMA over 6 years ago

  • Related to Defect #11024: redmine_plugin_model generator does not create the migration added
Actions #2

Updated by Toshi MARUYAMA over 6 years ago

Javier Menéndez Rizo wrote:

Problems fixed:
  • parent option not working
  • migration option not working

Please explain more details.
AFAIK Redmine plugin is based old Rails engines, but current Redmine does not implement full feature of Rails engines.

Actions #3

Updated by Javier Menéndez Rizo over 6 years ago

Problems:
  • parent option: before the patch the parent option do nothing because in the model.rb template is not defined

Before patch model.rb template only inherits from ActiveRecord::Base

class <%= @model_class %> < ActiveRecord::Base

After patch model.rb template uses the method parent_class_name to calculate the parent and put it on the template

class <%= @model_class %> < <%= parent_class_name.classify %>
  • migration option: before the patch the generator alway generates the migration file, even if you pass --no-migration

After patch redmine_plugin_model_generator.rb i put a guard clause for generate the migration or not

    return unless options[:migration]
    migration_filename = "%.14d_#{@migration_filename}.rb" % migration_number
    template "migration.rb", "#{plugin_path}/db/migrate/#{migration_filename}" 
Actions #4

Updated by Javier Menéndez Rizo over 6 years ago

New feature:

Timestamps in the name of the generated migration file, right now redmine plugins generates the migrations in this form:

001_create_polls.rb

After patch

20171127212003_create_polls.rb
Actions #5

Updated by Toshi MARUYAMA about 6 years ago

OK, I see.

On trunk r17132:

$ rails generate redmine_plugin_model --help
Usage:
  rails generate redmine_plugin_model NAME MODEL [field[:type][:index] field[:type][:index]] [options]

Options:
  [--skip-namespace], [--no-skip-namespace]  # Skip namespace (affects only isolated applications)
  [--migration], [--no-migration]            # Indicates when to generate migration
  [--timestamps], [--no-timestamps]          # Indicates when to generate timestamps
  [--parent=PARENT]                          # The parent class for the generated model
  [--indexes], [--no-indexes]                # Add indexes for references and belongs_to columns
                                             # Default: true

Runtime options:
  -f, [--force]                    # Overwrite files that already exist
  -p, [--pretend], [--no-pretend]  # Run but do not make any changes
  -q, [--quiet], [--no-quiet]      # Suppress status output
  -s, [--skip], [--no-skip]        # Skip files that already exist

Description:
    Generates a plugin model.

Examples:
    bundle exec rails generate redmine_plugin_model meetings pool
Actions #6

Updated by Toshi MARUYAMA about 6 years ago

  • Target version set to 4.1.0
Actions #7

Updated by Jean-Philippe Lang almost 5 years ago

  • Category set to Plugin API
  • Status changed from New to Closed
  • Assignee set to Jean-Philippe Lang

Committed, thanks.

Actions

Also available in: Atom PDF