Patch #27659

redmine_plugin_model_generator improvements(fixes and timestamps)

Added by Javier Menéndez Rizo almost 2 years ago. Updated 3 months ago.

Status:ClosedStart date:
Priority:NormalDue date:
Assignee:Jean-Philippe Lang% Done:

0%

Category:Plugin API
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

Associated revisions

Revision 18298
Added by Jean-Philippe Lang 3 months ago

redmine_plugin_model_generator improvements (#27659).

Patch by Javier Menéndez Rizo.

History

#1 Updated by Toshi MARUYAMA almost 2 years ago

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

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

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

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

#5 Updated by Toshi MARUYAMA over 1 year 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 over 1 year ago

  • Target version set to 4.1.0

#7 Updated by Jean-Philippe Lang 3 months ago

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

Committed, thanks.

Also available in: Atom PDF