Patch #27659

redmine_plugin_model_generator improvements(fixes and timestamps)

Added by Javier Menéndez Rizo 7 months ago. Updated 5 months ago.

Status:NewStart date:
Priority:NormalDue date:
Assignee:-% Done:

0%

Category:-
Target version:4.1.0

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.

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


Related issues

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

History

#1 Updated by Toshi MARUYAMA 7 months ago

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

#2 Updated by Toshi MARUYAMA 7 months 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.

#3 Updated by Javier Menéndez Rizo 7 months 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}" 

#4 Updated by Javier Menéndez Rizo 7 months 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

#5 Updated by Toshi MARUYAMA 6 months 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

#6 Updated by Toshi MARUYAMA 5 months ago

  • Target version set to 4.1.0

Also available in: Atom PDF