mdd 3.0.2 → 3.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/app/helpers/mdwa_helper.rb +2 -1
- data/lib/generators/mdwa/association/association_generator.rb +1 -1
- data/lib/generators/mdwa/association/templates/migrate/many_to_many.rb +1 -1
- data/lib/generators/mdwa/association/templates/migrate/one_field.rb +2 -1
- data/lib/generators/mdwa/code/code_generator.rb +54 -22
- data/lib/generators/mdwa/code/templates/migration.rb +2 -1
- data/lib/generators/mdwa/entity/entity_generator.rb +1 -2
- data/lib/generators/mdwa/entity/templates/entity.rb +2 -1
- data/lib/generators/mdwa/from_requirements/from_requirements_generator.rb +56 -0
- data/lib/generators/mdwa/process/USAGE +4 -0
- data/lib/generators/mdwa/process/process_generator.rb +24 -0
- data/lib/generators/mdwa/process/templates/process.rb +49 -0
- data/lib/generators/mdwa/requirement/USAGE +4 -0
- data/lib/generators/mdwa/requirement/requirement_generator.rb +24 -0
- data/lib/generators/mdwa/requirement/templates/requirement.rb +21 -0
- data/lib/generators/mdwa/sandbox/sandbox_generator.rb +1 -1
- data/lib/generators/mdwa/sandbox/templates/app/assets/stylesheets/mdwa/template/backend.css.erb +2 -2
- data/lib/generators/mdwa/sandbox/templates/app/controllers/a/backend_controller.rb +2 -1
- data/lib/generators/mdwa/sandbox/templates/app/controllers/a/users/sessions_controller.rb +1 -1
- data/lib/generators/mdwa/sandbox/templates/app/controllers/public_controller.rb +1 -0
- data/lib/generators/mdwa/sandbox/templates/config/initializers/devise.rb +1 -0
- data/lib/generators/mdwa/sandbox/templates/config/initializers/mdwa_layout.rb +2 -1
- data/lib/generators/mdwa/sandbox/templates/config/locales/mdwa.en.yml +1 -1
- data/lib/generators/mdwa/sandbox/templates/db/migrate/devise_create_users.rb +1 -1
- data/lib/generators/mdwa/sandbox/templates/db/seeds.rb +1 -1
- data/lib/generators/mdwa/sandbox/templates/db/seeds/site.rb +1 -1
- data/lib/generators/mdwa/scaffold/scaffold_generator.rb +10 -3
- data/lib/generators/mdwa/scaffold/templates/controllers/ajax_controller.rb +2 -1
- data/lib/generators/mdwa/scaffold/templates/controllers/controller.rb +2 -1
- data/lib/generators/mdwa/scaffold/templates/db_migrate/migrate.rb +2 -1
- data/lib/generators/mdwa/scaffold/templates/models/model.rb +2 -1
- data/lib/generators/mdwa/scaffold/templates/models/module.rb +2 -1
- data/lib/generators/mdwa/user/templates/user.rb +12 -0
- data/lib/generators/mdwa/user/user_generator.rb +13 -104
- data/lib/generators/mdwa/{user → user_scaffold}/USAGE +1 -1
- data/lib/generators/mdwa/{user → user_scaffold}/templates/controllers/ajax_controller.rb +2 -1
- data/lib/generators/mdwa/{user → user_scaffold}/templates/controllers/controller.rb +2 -1
- data/lib/generators/mdwa/{user → user_scaffold}/templates/migrate.rb +2 -1
- data/lib/generators/mdwa/{user → user_scaffold}/templates/views/update.js.erb +0 -0
- data/lib/generators/mdwa/user_scaffold/user_scaffold_generator.rb +139 -0
- data/lib/mdd.rb +1 -1
- data/lib/mdwa.rb +1 -1
- data/lib/mdwa/all.rb +1 -1
- data/lib/mdwa/dsl.rb +17 -4
- data/lib/mdwa/dsl/action.rb +78 -0
- data/lib/mdwa/dsl/entities.rb +4 -4
- data/lib/mdwa/dsl/entity.rb +59 -23
- data/lib/mdwa/dsl/entity_actions.rb +73 -0
- data/lib/mdwa/dsl/entity_association.rb +1 -1
- data/lib/mdwa/dsl/entity_attribute.rb +1 -1
- data/lib/mdwa/dsl/entity_specification.rb +22 -0
- data/lib/mdwa/dsl/process.rb +53 -0
- data/lib/mdwa/dsl/process_detail.rb +57 -0
- data/lib/mdwa/dsl/process_detail_next_action.rb +16 -0
- data/lib/mdwa/dsl/requirement.rb +23 -0
- data/lib/mdwa/dsl/requirements.rb +57 -0
- data/lib/mdwa/dsl/user.rb +34 -0
- data/lib/mdwa/dsl/users.rb +57 -0
- data/lib/mdwa/dsl/workflow.rb +57 -0
- data/lib/mdwa/generators.rb +1 -1
- data/lib/mdwa/generators/model.rb +3 -1
- data/lib/mdwa/generators/model_association.rb +4 -1
- data/lib/mdwa/generators/model_attribute.rb +2 -1
- data/lib/mdwa/layout.rb +1 -1
- data/lib/mdwa/layout/base.rb +1 -1
- data/lib/mdwa/layout/helper.rb +1 -1
- data/lib/mdwa/version.rb +1 -1
- data/test/entity_actions_test.rb +101 -0
- data/test/entity_specifications_test.rb +37 -0
- data/test/entity_test.rb +1 -1
- data/test/layout_test.rb +1 -1
- data/test/process_test.rb +86 -0
- data/test/requirements_test.rb +44 -0
- data/test/users_test.rb +55 -0
- metadata +37 -10
- data/lib/mdwa/dsl/generator.rb +0 -10
- data/test/generators_test.rb +0 -0
@@ -1,3 +1,4 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
1
2
|
require 'mdwa/layout'
|
2
3
|
MDWA::Layout::Base.config do |config|
|
3
4
|
config['/*'] = 'public'
|
@@ -5,4 +6,4 @@ MDWA::Layout::Base.config do |config|
|
|
5
6
|
config['/a/users/passwords#*'] = 'system'
|
6
7
|
config['/a/users/sessions#new'] = 'login'
|
7
8
|
config['/a/users/sessions#create'] = 'login'
|
8
|
-
end
|
9
|
+
end
|
@@ -1,2 +1,2 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
|
-
require File.expand_path( '../seeds/site', __FILE__ )
|
2
|
+
require File.expand_path( '../seeds/site', __FILE__ )
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
1
2
|
require 'rails/generators/migration'
|
2
3
|
require 'mdwa/generators'
|
3
4
|
|
@@ -108,8 +109,14 @@ module Mdwa
|
|
108
109
|
|
109
110
|
def routes
|
110
111
|
unless options.skip_interface
|
111
|
-
|
112
|
-
|
112
|
+
route_str = []
|
113
|
+
route_str << "namespace :#{@model.space} do" if @model.namespace?
|
114
|
+
route_str << "\tcontroller :#{@model.plural_name} do"
|
115
|
+
route_str << "\tend"
|
116
|
+
route_str << "\tresources :#{@model.plural_name}"
|
117
|
+
route_str << "end" if @model.namespace?
|
118
|
+
|
119
|
+
route route_str.join("\n")
|
113
120
|
end
|
114
121
|
end
|
115
122
|
|
@@ -147,4 +154,4 @@ module Mdwa
|
|
147
154
|
end
|
148
155
|
|
149
156
|
end
|
150
|
-
end
|
157
|
+
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
1
2
|
class <%= @model.controller_name %>Controller < <%= @inherit_controller || 'ApplicationController' %>
|
2
3
|
|
3
4
|
load_and_authorize_resource :class => "<%= @model.klass %>"
|
@@ -70,4 +71,4 @@ class <%= @model.controller_name %>Controller < <%= @inherit_controller || 'Appl
|
|
70
71
|
@<%= @model.plural_name %> = <%= @model.klass %>.paginate :page => 1
|
71
72
|
end
|
72
73
|
|
73
|
-
end
|
74
|
+
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
1
2
|
class <%= @model.controller_name %>Controller < <%= @inherit_controller || 'ApplicationController' %>
|
2
3
|
|
3
4
|
load_and_authorize_resource :class => "<%= @model.klass %>"
|
@@ -69,4 +70,4 @@ class <%= @model.controller_name %>Controller < <%= @inherit_controller || 'Appl
|
|
69
70
|
end
|
70
71
|
end
|
71
72
|
|
72
|
-
end
|
73
|
+
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
1
2
|
class Create<%= @model.plural_name.camelize %> < ActiveRecord::Migration
|
2
3
|
|
3
4
|
def self.up
|
@@ -15,4 +16,4 @@ class Create<%= @model.plural_name.camelize %> < ActiveRecord::Migration
|
|
15
16
|
drop_table :<%= @model.plural_name %>
|
16
17
|
end
|
17
18
|
|
18
|
-
end
|
19
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
require 'mdwa/dsl'
|
3
|
+
MDWA::DSL.users.register '<%= @user %>' do |u|
|
4
|
+
|
5
|
+
# Description of what this user does in the system.
|
6
|
+
# u.description = 'Member of the programmers team.'
|
7
|
+
|
8
|
+
# User roles
|
9
|
+
# By default, the user name is already included by default.
|
10
|
+
# u.user_roles = ['<%= @user %>']
|
11
|
+
|
12
|
+
end
|
@@ -1,121 +1,30 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
1
2
|
require 'rails/generators/migration'
|
2
|
-
require 'mdwa/
|
3
|
+
require 'mdwa/dsl'
|
3
4
|
|
4
5
|
module Mdwa
|
5
|
-
|
6
6
|
module Generators
|
7
7
|
|
8
8
|
class UserGenerator < Rails::Generators::Base
|
9
|
-
include Rails::Generators::Migration
|
10
9
|
|
11
10
|
source_root File.expand_path('../templates', __FILE__)
|
12
|
-
|
13
|
-
attr_accessor :model, :specific_model
|
14
11
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
class_option :model, :desc => 'Use if model is different than the scaffold name. Format: "[namespace]/Model"', :type => :string
|
19
|
-
class_option :ajax, :desc => 'Generates modal forms and AJAX submits.', :type => :boolean, :default => false
|
20
|
-
class_option :skip_rake_migrate, :desc => 'Skips running rake db:migrate', :type => :boolean, :default => false
|
21
|
-
class_option :skip_timestamp, :desc => 'Skip timestamp generator on migration files.', :type => :boolean, :default => false
|
22
|
-
class_option :skip_questions, :desc => 'Answer no for all questions by default.', :type => :boolean, :default => false
|
23
|
-
class_option :skip_interface, :desc => 'Cretes only models, migrations and associations.', :type => :boolean, :default => false
|
24
|
-
class_option :only_interface, :desc => 'Skips models, associations and migrations.', :type => :boolean, :default => false
|
12
|
+
attr_accessor :user
|
13
|
+
|
14
|
+
argument :user_name
|
25
15
|
|
26
16
|
def initialize(*args, &block)
|
27
|
-
|
28
17
|
super
|
29
|
-
|
30
|
-
@model = MDWA::Generators::Model.new( scaffold_name )
|
31
|
-
|
32
|
-
# model_name is not valid
|
33
|
-
print_usage unless @model.valid?
|
34
|
-
|
35
|
-
# verifies specific model name
|
36
|
-
@specific_model = MDWA::Generators::Model.new( options.model ) unless options.model.blank?
|
37
|
-
if !@specific_model.nil?
|
38
|
-
if !@specific_model.valid?
|
39
|
-
print_usage
|
40
|
-
else
|
41
|
-
@model.specific_model_name = @specific_model.raw
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
require_all "#{Rails.root}/app/models/user.rb"
|
46
|
-
@predefined_fields = User.column_names
|
47
|
-
@predefined_fields << 'password'
|
48
|
-
@predefined_fields << 'password_confirmation'
|
49
|
-
|
50
|
-
# sets the model attributes
|
51
|
-
attributes.each do |attribute|
|
52
|
-
@model.add_attribute MDWA::Generators::ModelAttribute.new( attribute ) unless User.accessible_attributes.to_a.include?( attribute.split(':').first )
|
53
|
-
end
|
54
|
-
|
55
|
-
generate "mdwa:scaffold #{scaffold_name} name:string email:string password:password password_confirmation:password #{attributes.join(' ')} #{'--force' if options.force} #{'--ajax' if options.ajax} #{"model=#{options.model}" if options.model} #{'--skip_interface' if options.skip_interface} #{'--only_interface' if options.only_interface} #{'--skip_rake_migrate' if options.skip_rake_migrate} #{'--skip_timestamp' if options.skip_timestamp} #{'--skip_questions' if options.skip_questions} --skip-migrations"
|
56
|
-
|
57
|
-
end
|
58
|
-
|
59
|
-
def controller_and_view
|
60
|
-
unless options.skip_interface
|
61
|
-
# controllers
|
62
|
-
@inherit_controller = 'A::BackendController' if @model.space == 'a'
|
63
|
-
template "controllers/#{'ajax_' if options.ajax}controller.rb", "app/controllers/#{@model.space}/#{@model.plural_name}_controller.rb"
|
64
|
-
|
65
|
-
# views - update only
|
66
|
-
template 'views/update.js.erb', "app/views/#{@model.space}/#{@model.plural_name}/update.js.erb"
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
def model_and_migration
|
71
|
-
# model override
|
72
|
-
gsub_file "app/models/#{@model.space}/#{@model.singular_name}.rb", 'ActiveRecord::Base', 'User'
|
73
|
-
inject_into_class "app/models/#{@model.space}/#{@model.singular_name}.rb", @model.model_class do
|
74
|
-
inj = []
|
75
|
-
inj << "\n\tafter_create :create_#{@model.singular_name}_permission\n"
|
76
|
-
inj << "\tdef create_#{@model.singular_name}_permission"
|
77
|
-
inj << "\t\tself.permissions.push Permission.find_by_name('#{@model.singular_name}')"
|
78
|
-
inj << "\tend"
|
79
|
-
inj.join("\n")
|
80
|
-
end
|
81
18
|
|
82
|
-
|
83
|
-
@model.attributes = []
|
84
|
-
attributes.each do |attribute|
|
85
|
-
@model.add_attribute MDWA::Generators::ModelAttribute.new( attribute ) unless @predefined_fields.include?( attribute.split(':').first )
|
86
|
-
end
|
87
|
-
migration_template 'migrate.rb', "db/migrate/add_#{@model.attributes.collect{|a| a.name}.join('_')}_to_users" unless @model.attributes.empty?
|
88
|
-
|
89
|
-
# include type in db:seed
|
90
|
-
append_file 'db/seeds/site.rb' do
|
91
|
-
"\n\nPermission.create( :name => '#{@model.singular_name}' ) if Permission.find_by_name('#{@model.singular_name}').nil?"
|
92
|
-
end
|
93
|
-
# run rake db:seeds
|
94
|
-
if yes?('Run rake db:seed to create permission type?')
|
95
|
-
rake 'db:migrate'
|
96
|
-
rake 'db:seed'
|
97
|
-
end
|
19
|
+
@user = user_name.singularize.camelize
|
98
20
|
end
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
rake('db:migrate') if !options.skip_questions and yes? 'Run rake db:migrate?'
|
104
|
-
end
|
21
|
+
|
22
|
+
def generate_user
|
23
|
+
template 'user.rb', "#{MDWA::DSL::USERS_PATH}#{@user.underscore}.rb"
|
24
|
+
generate "mdwa:entity #{@user} --user"
|
105
25
|
end
|
106
26
|
|
107
|
-
|
108
|
-
|
109
|
-
# Sets Rails migration timestamp
|
110
|
-
def self.next_migration_number(dirname) #:nodoc:
|
111
|
-
if ActiveRecord::Base.timestamped_migrations
|
112
|
-
Time.now.utc.strftime("%Y%m%d%H%M%S")
|
113
|
-
else
|
114
|
-
"%.3d" % (current_migration_number(dirname) + 1)
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
118
|
-
end
|
27
|
+
end # class user generator
|
119
28
|
|
120
|
-
end
|
121
|
-
end
|
29
|
+
end # generators
|
30
|
+
end # mdwa
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
1
2
|
class <%= @model.controller_name %>Controller < <%= @inherit_controller || 'ApplicationController' %>
|
2
3
|
|
3
4
|
load_and_authorize_resource :class => "<%= @model.klass %>"
|
@@ -75,4 +76,4 @@ class <%= @model.controller_name %>Controller < <%= @inherit_controller || 'Appl
|
|
75
76
|
@<%= @model.plural_name %> = <%= @model.klass %>.paginate :page => 1
|
76
77
|
end
|
77
78
|
|
78
|
-
end
|
79
|
+
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
1
2
|
class <%= @model.controller_name %>Controller < <%= @inherit_controller || 'ApplicationController' %>
|
2
3
|
|
3
4
|
load_and_authorize_resource :class => "<%= @model.klass %>"
|
@@ -74,4 +75,4 @@ class <%= @model.controller_name %>Controller < <%= @inherit_controller || 'Appl
|
|
74
75
|
end
|
75
76
|
end
|
76
77
|
|
77
|
-
end
|
78
|
+
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
1
2
|
class Add<%= @model.attributes.collect{|a| a.name.camelize}.join('') %>ToUsers < ActiveRecord::Migration
|
2
3
|
|
3
4
|
def self.up
|
@@ -12,4 +13,4 @@ class Add<%= @model.attributes.collect{|a| a.name.camelize}.join('') %>ToUsers <
|
|
12
13
|
<%- end -%>
|
13
14
|
end
|
14
15
|
|
15
|
-
end
|
16
|
+
end
|
File without changes
|
@@ -0,0 +1,139 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
require 'rails/generators/migration'
|
3
|
+
require 'mdwa/generators'
|
4
|
+
require 'mdwa/dsl'
|
5
|
+
|
6
|
+
module Mdwa
|
7
|
+
|
8
|
+
module Generators
|
9
|
+
|
10
|
+
class UserScaffoldGenerator < Rails::Generators::Base
|
11
|
+
include Rails::Generators::Migration
|
12
|
+
|
13
|
+
source_root File.expand_path('../templates', __FILE__)
|
14
|
+
|
15
|
+
attr_accessor :model, :specific_model
|
16
|
+
|
17
|
+
argument :scaffold_name, :type => :string, :banner => "[namespace]/Model"
|
18
|
+
argument :attributes, :type => :array, :default => [], :banner => "field:type field:type"
|
19
|
+
|
20
|
+
class_option :model, :desc => 'Use if model is different than the scaffold name. Format: "[namespace]/Model"', :type => :string
|
21
|
+
class_option :ajax, :desc => 'Generates modal forms and AJAX submits.', :type => :boolean, :default => false
|
22
|
+
class_option :skip_rake_migrate, :desc => 'Skips running rake db:migrate', :type => :boolean, :default => false
|
23
|
+
class_option :skip_timestamp, :desc => 'Skip timestamp generator on migration files.', :type => :boolean, :default => false
|
24
|
+
class_option :skip_questions, :desc => 'Answer no for all questions by default.', :type => :boolean, :default => false
|
25
|
+
class_option :skip_interface, :desc => 'Cretes only models, migrations and associations.', :type => :boolean, :default => false
|
26
|
+
class_option :only_interface, :desc => 'Skips models, associations and migrations.', :type => :boolean, :default => false
|
27
|
+
|
28
|
+
def initialize(*args, &block)
|
29
|
+
|
30
|
+
super
|
31
|
+
|
32
|
+
@model = MDWA::Generators::Model.new( scaffold_name )
|
33
|
+
|
34
|
+
# model_name is not valid
|
35
|
+
print_usage unless @model.valid?
|
36
|
+
|
37
|
+
# verifies specific model name
|
38
|
+
@specific_model = MDWA::Generators::Model.new( options.model ) unless options.model.blank?
|
39
|
+
if !@specific_model.nil?
|
40
|
+
if !@specific_model.valid?
|
41
|
+
print_usage
|
42
|
+
else
|
43
|
+
@model.specific_model_name = @specific_model.raw
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
require_all "#{Rails.root}/app/models/user.rb"
|
48
|
+
@predefined_fields = User.column_names
|
49
|
+
@predefined_fields << 'password'
|
50
|
+
@predefined_fields << 'password_confirmation'
|
51
|
+
|
52
|
+
# sets the model attributes
|
53
|
+
attributes.each do |attribute|
|
54
|
+
@model.add_attribute MDWA::Generators::ModelAttribute.new( attribute ) unless User.accessible_attributes.to_a.include?( attribute.split(':').first )
|
55
|
+
end
|
56
|
+
|
57
|
+
generate "mdwa:scaffold #{scaffold_name} name:string email:string password:password password_confirmation:password #{attributes.join(' ')} #{'--force' if options.force} #{'--ajax' if options.ajax} #{"model=#{options.model}" if options.model} #{'--skip_interface' if options.skip_interface} #{'--only_interface' if options.only_interface} #{'--skip_rake_migrate' if options.skip_rake_migrate} #{'--skip_timestamp' if options.skip_timestamp} #{'--skip_questions' if options.skip_questions} --skip-migrations"
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
def controller_and_view
|
62
|
+
unless options.skip_interface
|
63
|
+
# controllers
|
64
|
+
@inherit_controller = 'A::BackendController' if @model.space == 'a'
|
65
|
+
template "controllers/#{'ajax_' if options.ajax}controller.rb", "app/controllers/#{@model.space}/#{@model.plural_name}_controller.rb"
|
66
|
+
|
67
|
+
# views - update only
|
68
|
+
template 'views/update.js.erb', "app/views/#{@model.space}/#{@model.plural_name}/update.js.erb"
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def model_override
|
73
|
+
# locate the mdwa user to discover the roles
|
74
|
+
require_all "#{MDWA::DSL::USERS_PATH}#{@model.singular_name}.rb"
|
75
|
+
@mdwa_user = MDWA::DSL.user(@model.name)
|
76
|
+
if @mdwa_user.nil?
|
77
|
+
@roles = [@model.name]
|
78
|
+
else
|
79
|
+
@roles = @mdwa_user.user_roles
|
80
|
+
end
|
81
|
+
|
82
|
+
# model override
|
83
|
+
gsub_file "app/models/#{@model.space}/#{@model.singular_name}.rb", 'ActiveRecord::Base', 'User'
|
84
|
+
inject_into_class "app/models/#{@model.space}/#{@model.singular_name}.rb", @model.model_class do
|
85
|
+
inj = []
|
86
|
+
@roles.each do |role|
|
87
|
+
inj << "\n\n\tafter_create :create_#{role.underscore}_permission\n"
|
88
|
+
inj << "\tdef create_#{role.underscore}_permission"
|
89
|
+
inj << "\t\t#{role.underscore}_permission = Permission.find_by_name('#{role.underscore}')"
|
90
|
+
inj << "\t\t#{role.underscore}_permission = Permission.create(:name => '#{role.underscore}') if #{role.underscore}_permission.nil?"
|
91
|
+
inj << "\t\tself.permissions.push #{role.underscore}_permission"
|
92
|
+
inj << "\tend"
|
93
|
+
end
|
94
|
+
inj.join("\n")
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
def migration_override
|
99
|
+
|
100
|
+
# override model attributes to not allow field duplicity (causing errors)
|
101
|
+
@model.attributes = []
|
102
|
+
attributes.each do |attribute|
|
103
|
+
@model.add_attribute MDWA::Generators::ModelAttribute.new( attribute ) unless @predefined_fields.include?( attribute.split(':').first )
|
104
|
+
end
|
105
|
+
migration_template 'migrate.rb', "db/migrate/add_#{@model.attributes.collect{|a| a.name}.join('_')}_to_users" unless @model.attributes.empty?
|
106
|
+
|
107
|
+
# include type in db:seed
|
108
|
+
append_file 'db/seeds/site.rb' do
|
109
|
+
"\n\nPermission.create( :name => '#{@model.singular_name}' ) if Permission.find_by_name('#{@model.singular_name}').nil?"
|
110
|
+
end
|
111
|
+
# run rake db:seeds
|
112
|
+
if yes?('Run rake db:seed to create permission type?')
|
113
|
+
rake 'db:migrate'
|
114
|
+
rake 'db:seed'
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
|
119
|
+
def run_rake_db_migrate
|
120
|
+
if !options.skip_rake_migrate and !options.skip_migrations and !options.only_interface
|
121
|
+
rake('db:migrate') if !options.skip_questions and yes? 'Run rake db:migrate?'
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
private
|
126
|
+
|
127
|
+
# Sets Rails migration timestamp
|
128
|
+
def self.next_migration_number(dirname) #:nodoc:
|
129
|
+
if ActiveRecord::Base.timestamped_migrations
|
130
|
+
Time.now.utc.strftime("%Y%m%d%H%M%S")
|
131
|
+
else
|
132
|
+
"%.3d" % (current_migration_number(dirname) + 1)
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
end
|
137
|
+
|
138
|
+
end
|
139
|
+
end
|