summaryrefslogtreecommitdiffstats
path: root/lib/generators/redmine_plugin_model
diff options
context:
space:
mode:
Diffstat (limited to 'lib/generators/redmine_plugin_model')
-rw-r--r--lib/generators/redmine_plugin_model/USAGE5
-rw-r--r--lib/generators/redmine_plugin_model/redmine_plugin_model_generator.rb18
-rw-r--r--lib/generators/redmine_plugin_model/templates/fixtures.yml11
-rw-r--r--lib/generators/redmine_plugin_model/templates/migration.rb13
-rw-r--r--lib/generators/redmine_plugin_model/templates/model.rb2
-rw-r--r--lib/generators/redmine_plugin_model/templates/unit_test.rb10
6 files changed, 59 insertions, 0 deletions
diff --git a/lib/generators/redmine_plugin_model/USAGE b/lib/generators/redmine_plugin_model/USAGE
new file mode 100644
index 000000000..0cb55a186
--- /dev/null
+++ b/lib/generators/redmine_plugin_model/USAGE
@@ -0,0 +1,5 @@
+Description:
+ Generates a plugin model.
+
+Examples:
+ ./script/generate redmine_plugin_model MyPlugin pool title:string question:text
diff --git a/lib/generators/redmine_plugin_model/redmine_plugin_model_generator.rb b/lib/generators/redmine_plugin_model/redmine_plugin_model_generator.rb
new file mode 100644
index 000000000..b712d9b07
--- /dev/null
+++ b/lib/generators/redmine_plugin_model/redmine_plugin_model_generator.rb
@@ -0,0 +1,18 @@
+require 'rails_generator/base'
+require 'rails_generator/generators/components/model/model_generator'
+
+class RedminePluginModelGenerator < ModelGenerator
+ attr_accessor :plugin_path, :plugin_name, :plugin_pretty_name
+
+ def initialize(runtime_args, runtime_options = {})
+ runtime_args = runtime_args.dup
+ @plugin_name = "redmine_" + runtime_args.shift.underscore
+ @plugin_pretty_name = plugin_name.titleize
+ @plugin_path = "vendor/plugins/#{plugin_name}"
+ super(runtime_args, runtime_options)
+ end
+
+ def destination_root
+ File.join(RAILS_ROOT, plugin_path)
+ end
+end
diff --git a/lib/generators/redmine_plugin_model/templates/fixtures.yml b/lib/generators/redmine_plugin_model/templates/fixtures.yml
new file mode 100644
index 000000000..6be3c81be
--- /dev/null
+++ b/lib/generators/redmine_plugin_model/templates/fixtures.yml
@@ -0,0 +1,11 @@
+# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
+one:
+ id: 1
+<% for attribute in attributes -%>
+ <%= attribute.name %>: <%= attribute.default %>
+<% end -%>
+two:
+ id: 2
+<% for attribute in attributes -%>
+ <%= attribute.name %>: <%= attribute.default %>
+<% end -%>
diff --git a/lib/generators/redmine_plugin_model/templates/migration.rb b/lib/generators/redmine_plugin_model/templates/migration.rb
new file mode 100644
index 000000000..2a305a6a9
--- /dev/null
+++ b/lib/generators/redmine_plugin_model/templates/migration.rb
@@ -0,0 +1,13 @@
+class <%= migration_name %> < ActiveRecord::Migration
+ def self.up
+ create_table :<%= table_name %> do |t|
+<% for attribute in attributes -%>
+ t.column :<%= attribute.name %>, :<%= attribute.type %>
+<% end -%>
+ end
+ end
+
+ def self.down
+ drop_table :<%= table_name %>
+ end
+end
diff --git a/lib/generators/redmine_plugin_model/templates/model.rb b/lib/generators/redmine_plugin_model/templates/model.rb
new file mode 100644
index 000000000..8d4c89e91
--- /dev/null
+++ b/lib/generators/redmine_plugin_model/templates/model.rb
@@ -0,0 +1,2 @@
+class <%= class_name %> < ActiveRecord::Base
+end
diff --git a/lib/generators/redmine_plugin_model/templates/unit_test.rb b/lib/generators/redmine_plugin_model/templates/unit_test.rb
new file mode 100644
index 000000000..cc8b2e591
--- /dev/null
+++ b/lib/generators/redmine_plugin_model/templates/unit_test.rb
@@ -0,0 +1,10 @@
+require File.dirname(__FILE__) + '/../test_helper'
+
+class <%= class_name %>Test < Test::Unit::TestCase
+ fixtures :<%= table_name %>
+
+ # Replace this with your real tests.
+ def test_truth
+ assert true
+ end
+end