mdd 3.0.4 → 3.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/app/controllers/mdwa/mdwa_controller.rb +8 -0
- data/app/controllers/mdwa/requirements_controller.rb +9 -0
- data/app/views/layouts/mdwa_visualization.html.erb +29 -0
- data/app/views/mdwa/requirements/index.html.erb +31 -0
- data/lib/generators/mdwa/code/code_generator.rb +36 -37
- data/lib/generators/mdwa/entity/entity_generator.rb +10 -4
- data/lib/generators/mdwa/entity/templates/entity.rb +7 -9
- data/lib/generators/mdwa/from_requirements/from_requirements_generator.rb +6 -3
- data/lib/generators/mdwa/sandbox/sandbox_generator.rb +10 -0
- data/lib/generators/mdwa/sandbox/templates/app/assets/stylesheets/mdwa/system_manifest.css +1 -0
- data/lib/generators/mdwa/sandbox/templates/app/assets/stylesheets/mdwa/template/visualization.css +3 -0
- data/lib/generators/mdwa/sandbox/templates/app/views/a/administrators/_form.html.erb +1 -1
- data/lib/generators/mdwa/sandbox/templates/config/initializers/mdwa_layout.rb +3 -0
- data/lib/generators/mdwa/scaffold/scaffold_generator.rb +4 -1
- data/lib/generators/mdwa/scaffold/templates/controllers/ajax_controller.rb +9 -12
- data/lib/generators/mdwa/template/template_generator.rb +40 -0
- data/lib/generators/mdwa/template/templates/views/view.custom.erb +2 -0
- data/lib/generators/mdwa/template/templates/views/view.html.erb +2 -0
- data/lib/generators/mdwa/template/templates/views/view.js.erb +1 -0
- data/lib/generators/mdwa/template/templates/views/view.json.erb +1 -0
- data/lib/generators/mdwa/transform/transform_generator.rb +130 -0
- data/lib/generators/mdwa/user/templates/user.rb +4 -0
- data/lib/generators/mdwa/user/user_generator.rb +12 -3
- data/lib/generators/mdwa/user_scaffold/user_scaffold_generator.rb +63 -63
- data/lib/mdwa/dsl.rb +1 -0
- data/lib/mdwa/dsl/entities.rb +1 -0
- data/lib/mdwa/dsl/entity.rb +31 -4
- data/lib/mdwa/dsl/user.rb +2 -0
- data/lib/mdwa/generators/model.rb +4 -2
- data/lib/mdwa/version.rb +1 -1
- data/mdd.gemspec +8 -8
- data/test/entity_test.rb +25 -50
- metadata +36 -19
@@ -0,0 +1,29 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>MDWA Software Visualization</title>
|
5
|
+
<%= stylesheet_link_tag 'mdwa/system_manifest' %>
|
6
|
+
<%= javascript_include_tag 'mdwa/system_manifest' %>
|
7
|
+
|
8
|
+
<%= csrf_meta_tag %>
|
9
|
+
</head>
|
10
|
+
|
11
|
+
<body class="mdwa_visualization">
|
12
|
+
|
13
|
+
<%= render '/template/mdwa/notice', :notice => notice, :alert => alert %>
|
14
|
+
|
15
|
+
<div id="header" class="yui3-g">
|
16
|
+
<div id="logo" class="yui3-u-1-3">
|
17
|
+
<%= link_to "MDWA Application", a_root_path, :target => '_self' %>
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
|
21
|
+
<div id="mdwa_content">
|
22
|
+
<%= yield %>
|
23
|
+
</div>
|
24
|
+
|
25
|
+
<div class="footer">
|
26
|
+
</div>
|
27
|
+
|
28
|
+
</body>
|
29
|
+
</html>
|
@@ -0,0 +1,31 @@
|
|
1
|
+
<div id="requirements_index">
|
2
|
+
<div class="page_header">
|
3
|
+
<h1>MDWA Requirements</h1>
|
4
|
+
</div>
|
5
|
+
|
6
|
+
<div class="inside">
|
7
|
+
|
8
|
+
<% if @requirements.count > 0 %>
|
9
|
+
<table class="list">
|
10
|
+
<tr>
|
11
|
+
<th>Requirement title</th>
|
12
|
+
<th>Description</th>
|
13
|
+
<th>Entities</th>
|
14
|
+
<th>Users</th>
|
15
|
+
</tr>
|
16
|
+
<% @requirements.each do |requirement| %>
|
17
|
+
<tr>
|
18
|
+
<td><%= requirement.summary %></td>
|
19
|
+
<td><%= requirement.description %></td>
|
20
|
+
<td><%= requirement.entities.join ', ' %></td>
|
21
|
+
<td><%= requirement.users.join ', ' %></td>
|
22
|
+
</tr>
|
23
|
+
<% end %>
|
24
|
+
</table>
|
25
|
+
<% else %>
|
26
|
+
<p>No requirements specified.</p>
|
27
|
+
<% end %>
|
28
|
+
|
29
|
+
</div>
|
30
|
+
|
31
|
+
</div>
|
@@ -19,25 +19,25 @@ module Mdwa
|
|
19
19
|
|
20
20
|
class_option :run_migrations, :type => :boolean, :default => false, :desc => 'Run rake db:migrate directly'
|
21
21
|
class_option :only_interface, :type => :boolean, :default => false, :desc => 'Generate only user interface'
|
22
|
+
class_option :prototype, :type => :boolean, :default => false, :desc => 'Generate prototype files instead of ERB templates'
|
22
23
|
|
23
24
|
#
|
24
25
|
# Constructor
|
25
26
|
# Require all entities to load the DSL of the application
|
26
|
-
#
|
27
27
|
def initialize(*args, &block)
|
28
28
|
super
|
29
29
|
|
30
30
|
# include files with entities
|
31
31
|
# select entities that will be generated
|
32
32
|
inside Rails.root do
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
33
|
+
require_all MDWA::DSL::STRUCTURAL_PATH unless Dir.glob("#{MDWA::DSL::STRUCTURAL_PATH}/*.rb").count.zero?
|
34
|
+
end
|
35
|
+
|
36
|
+
if entities.count.zero?
|
37
|
+
@all_entities = MDWA::DSL.entities.all
|
38
|
+
else
|
39
|
+
@all_entities = entities.collect{ |e| MDWA::DSL.entity(e) }
|
39
40
|
end
|
40
|
-
@all_entities = MDWA::DSL.entities.all
|
41
41
|
|
42
42
|
# entity changes and migrations
|
43
43
|
@changes = []
|
@@ -121,30 +121,27 @@ module Mdwa
|
|
121
121
|
#
|
122
122
|
def entities_interface
|
123
123
|
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
next unless entity.resource?
|
124
|
+
return nil unless options.only_interface
|
125
|
+
@all_entities.each do |entity|
|
126
|
+
# if it's not a resource, ignore
|
127
|
+
next unless entity.resource?
|
129
128
|
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
end
|
137
|
-
if entity.force? or model_class.nil? or !model_class.table_exists?
|
138
|
-
puts "===================================================="
|
139
|
-
puts "Generating code for '#{entity.name}'"
|
140
|
-
puts "===================================================="
|
141
|
-
generation_string = "#{entity.generate} --only_interface #{'--force' if options.force}"
|
142
|
-
generate generation_string
|
143
|
-
|
144
|
-
# append generated code to entity
|
145
|
-
append_to_file "#{MDWA::DSL::STRUCTURAL_PATH}#{entity.file_name}.rb", "\n\nMDWA::DSL.entity('#{entity.name}').code_generations << '#{generation_string}'"
|
146
|
-
end
|
129
|
+
# if model has not a database yet, run the generate command
|
130
|
+
begin
|
131
|
+
# if model does not exist, should generate scaffold
|
132
|
+
model_class = entity.generator_model.model_class
|
133
|
+
rescue
|
134
|
+
model_class = nil
|
147
135
|
end
|
136
|
+
|
137
|
+
puts "===================================================="
|
138
|
+
puts "Generating code for '#{entity.name}'"
|
139
|
+
puts "===================================================="
|
140
|
+
generation_string = "#{entity.generate} --only_interface #{'--force' if options.force}"
|
141
|
+
generate generation_string
|
142
|
+
|
143
|
+
# append generated code to entity
|
144
|
+
append_to_file "#{MDWA::DSL::STRUCTURAL_PATH}#{entity.file_name}.rb", "\n\nMDWA::DSL.entity('#{entity.name}').code_generations << '#{generation_string}'"
|
148
145
|
end
|
149
146
|
|
150
147
|
end
|
@@ -197,14 +194,16 @@ module Mdwa
|
|
197
194
|
end
|
198
195
|
|
199
196
|
# inject routes testing
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
197
|
+
if File.exist?(Rails.root + "/spec/routing/#{model.space}/#{model.plural_name}_routing_spec.rb")
|
198
|
+
insert_into_file "spec/routing/#{model.space}/#{model.plural_name}_routing_spec.rb", :after => 'describe "routing" do' do
|
199
|
+
routes = []
|
200
|
+
entity.actions.actions.values.select {|a| !a.resource}.each do |action|
|
201
|
+
routes << "\n\n\t\tit 'routes to ##{action.name}' do"
|
202
|
+
routes << "\n\t\t\t#{action.method.to_s}('#{action.entity.generator_model.to_route_url}/#{'1/' if action.member?}#{action.name}').should route_to('#{action.entity.generator_model.to_route_url}##{action.name}' #{', :id => "1"' if action.member?})"
|
203
|
+
routes << "\n\t\tend"
|
204
|
+
end
|
205
|
+
routes.join
|
206
206
|
end
|
207
|
-
routes.join
|
208
207
|
end
|
209
208
|
|
210
209
|
# generate the corresponding files
|
@@ -1,7 +1,5 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
|
-
|
3
2
|
require 'rails/generators'
|
4
|
-
|
5
3
|
require 'mdwa/dsl'
|
6
4
|
|
7
5
|
module Mdwa
|
@@ -14,11 +12,19 @@ module Mdwa
|
|
14
12
|
|
15
13
|
class_option :user, :type => :boolean, :default => false, :desc => 'Is this entity a loggable user?'
|
16
14
|
class_option :no_comments, :type => :boolean, :default => false, :desc => 'Generates entity without comments.'
|
15
|
+
class_option :requirement, :type => :string, :desc => 'Requirement alias'
|
17
16
|
|
18
17
|
def code_generation
|
19
|
-
|
18
|
+
file_name = "#{MDWA::DSL::STRUCTURAL_PATH}#{MDWA::DSL::Entity.new(name).file_name}.rb"
|
19
|
+
# if file doesn't exist, create it
|
20
|
+
# if file exists, include the in_requirements clause
|
21
|
+
if !File.exist?( Rails.root + file_name )
|
22
|
+
template 'entity.rb', file_name
|
23
|
+
else
|
24
|
+
append_to_file( file_name, "\nMDWA::DSL.entity('#{name.singularize.camelize}').in_requirements << '#{options.requirement}'" ) unless options.requirement.blank?
|
25
|
+
end
|
20
26
|
end
|
21
27
|
|
22
28
|
end # entity
|
23
29
|
end #generators
|
24
|
-
end #mdwa
|
30
|
+
end #mdwa
|
@@ -11,7 +11,7 @@ MDWA::DSL.entities.register "<%= name.singularize.camelize %>" do |e|
|
|
11
11
|
<%- end -%>
|
12
12
|
|
13
13
|
<%- unless options.no_comments -%>
|
14
|
-
# e.purpose = %q{To-do} # what this entity
|
14
|
+
# e.purpose = %q{To-do} # what does this entity do?
|
15
15
|
# e.resource = true # should it be stored like a resource?
|
16
16
|
# e.ajax = true # scaffold with ajax?
|
17
17
|
# e.user = false # is this entity a loggable user?
|
@@ -21,14 +21,8 @@ MDWA::DSL.entities.register "<%= name.singularize.camelize %>" do |e|
|
|
21
21
|
##
|
22
22
|
## Define entity attributes
|
23
23
|
##
|
24
|
-
# e.attribute
|
25
|
-
#
|
26
|
-
# attr.type = 'string'
|
27
|
-
# end
|
28
|
-
# e.attribute do |attr|
|
29
|
-
# attr.name = 'category'
|
30
|
-
# attr.type = 'integer'
|
31
|
-
# end
|
24
|
+
# e.attribute 'name', 'string'
|
25
|
+
# e.attribute 'category', 'integer'
|
32
26
|
|
33
27
|
##
|
34
28
|
## Define entity associations
|
@@ -68,3 +62,7 @@ MDWA::DSL.entities.register "<%= name.singularize.camelize %>" do |e|
|
|
68
62
|
<%- end -%>
|
69
63
|
|
70
64
|
end
|
65
|
+
|
66
|
+
<%- unless options.requirement.blank? -%>
|
67
|
+
MDWA::DSL.entity('<%= name.singularize.camelize %>').in_requirements << '<%= options.requirement %>'
|
68
|
+
<%- end -%>
|
@@ -15,7 +15,6 @@ module Mdwa
|
|
15
15
|
#
|
16
16
|
# Constructor
|
17
17
|
# Require all entities to load the DSL of the application
|
18
|
-
#
|
19
18
|
def initialize(*args, &block)
|
20
19
|
super
|
21
20
|
|
@@ -36,14 +35,18 @@ module Mdwa
|
|
36
35
|
# For all requirements, generate users and entities
|
37
36
|
@requirements.each do |requirement|
|
38
37
|
|
38
|
+
puts "============================================================================="
|
39
|
+
puts "Generating transformation for requirement: '#{requirement.summary}'"
|
40
|
+
puts "============================================================================="
|
41
|
+
|
39
42
|
# generate entities
|
40
43
|
requirement.entities.each do |entity|
|
41
|
-
generate "mdwa:entity #{entity}
|
44
|
+
generate "mdwa:entity #{entity} --requirement=\"#{requirement.alias}\""
|
42
45
|
end
|
43
46
|
|
44
47
|
# generate users
|
45
48
|
requirement.users.each do |user|
|
46
|
-
generate "mdwa:user #{user}
|
49
|
+
generate "mdwa:user #{user} --requirement=\"#{requirement.alias}\""
|
47
50
|
end
|
48
51
|
|
49
52
|
end
|
@@ -140,6 +140,16 @@ module Mdwa
|
|
140
140
|
|
141
141
|
root :to => 'home#index'
|
142
142
|
end
|
143
|
+
|
144
|
+
# Software visualization
|
145
|
+
namespace :mdwa do
|
146
|
+
controller :requirements do
|
147
|
+
get 'requirements/index' => 'requirements#index', :as => 'requirements'
|
148
|
+
get 'requirements/:alias' => 'requirements#show', :as => 'requirement'
|
149
|
+
end
|
150
|
+
|
151
|
+
root :to => 'requirements#index'
|
152
|
+
end
|
143
153
|
"
|
144
154
|
end
|
145
155
|
end
|
@@ -6,4 +6,7 @@ MDWA::Layout::Base.config do |config|
|
|
6
6
|
config['/a/users/passwords#*'] = 'system'
|
7
7
|
config['/a/users/sessions#new'] = 'login'
|
8
8
|
config['/a/users/sessions#create'] = 'login'
|
9
|
+
|
10
|
+
# Software visualization in development environment
|
11
|
+
config['/mdwa/*'] = 'mdwa_visualization'
|
9
12
|
end
|
@@ -89,7 +89,10 @@ module Mdwa
|
|
89
89
|
|
90
90
|
def locales
|
91
91
|
|
92
|
-
|
92
|
+
locales_file = 'config/locales/mdwa_model_specific.en.yml'
|
93
|
+
create_file locales_file unless File.exist?(locales_file)
|
94
|
+
|
95
|
+
append_file locales_file, :after => "en:\n" do
|
93
96
|
lines = []
|
94
97
|
lines << " #{@model.plural_name}:"
|
95
98
|
lines << " create_success: \"#{@model.singular_name.humanize} created.\""
|
@@ -6,16 +6,16 @@ class <%= @model.controller_name %>Controller < <%= @inherit_controller || 'Appl
|
|
6
6
|
def index
|
7
7
|
@<%= @model.plural_name %> = <%= @model.klass %>.paginate :page => params[:page]
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
9
|
+
respond_to do |format|
|
10
|
+
format.html
|
11
|
+
format.js
|
12
|
+
end
|
13
13
|
end
|
14
14
|
|
15
15
|
|
16
16
|
def show
|
17
|
-
|
18
|
-
|
17
|
+
@<%= @model.singular_name %> = <%= @model.klass %>.find(params[:id])
|
18
|
+
render :layout => false
|
19
19
|
end
|
20
20
|
|
21
21
|
def new
|
@@ -34,8 +34,7 @@ class <%= @model.controller_name %>Controller < <%= @inherit_controller || 'Appl
|
|
34
34
|
def create
|
35
35
|
@<%= @model.singular_name %> = <%= @model.klass %>.new(params[:<%= @model.to_params %>])
|
36
36
|
@system_notice = t('<%= @model.plural_name %>.create_success') if @<%= @model.singular_name %>.save
|
37
|
-
|
38
|
-
load_list
|
37
|
+
load_list # loads all <%= @model.plural_name %> to display in the list
|
39
38
|
|
40
39
|
respond_to do |format|
|
41
40
|
format.js
|
@@ -46,8 +45,7 @@ class <%= @model.controller_name %>Controller < <%= @inherit_controller || 'Appl
|
|
46
45
|
@<%= @model.singular_name %> = <%= @model.klass %>.find(params[:id])
|
47
46
|
@system_notice = t('<%= @model.plural_name %>.update_success') if @<%= @model.singular_name %>.update_attributes(params[:<%= @model.to_params %>])
|
48
47
|
|
49
|
-
|
50
|
-
load_list
|
48
|
+
load_list # loads all <%= @model.plural_name %> to display in the list
|
51
49
|
|
52
50
|
respond_to do |format|
|
53
51
|
format.js
|
@@ -58,8 +56,7 @@ class <%= @model.controller_name %>Controller < <%= @inherit_controller || 'Appl
|
|
58
56
|
@<%= @model.singular_name %> = <%= @model.klass %>.find(params[:id])
|
59
57
|
@system_notice = t('<%= @model.plural_name %>.destroy_success') if @<%= @model.singular_name %>.destroy
|
60
58
|
|
61
|
-
# loads all <%= @model.plural_name %> to display in the list
|
62
|
-
load_list
|
59
|
+
load_list # loads all <%= @model.plural_name %> to display in the list
|
63
60
|
|
64
61
|
respond_to do |format|
|
65
62
|
format.js
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
|
3
|
+
require 'rails/generators'
|
4
|
+
require 'rails/generators/migration'
|
5
|
+
|
6
|
+
require 'mdwa/dsl'
|
7
|
+
|
8
|
+
module Mdwa
|
9
|
+
module Generators
|
10
|
+
class CodeGenerator < Rails::Generators::Base
|
11
|
+
|
12
|
+
include Rails::Generators::Migration
|
13
|
+
|
14
|
+
source_root File.expand_path("../templates", __FILE__)
|
15
|
+
|
16
|
+
argument :entities, :type => :array, :banner => 'Specific entities', :default => []
|
17
|
+
|
18
|
+
#
|
19
|
+
# Constructor
|
20
|
+
# Require all entities to load the DSL of the application
|
21
|
+
def initialize(*args, &block)
|
22
|
+
super
|
23
|
+
|
24
|
+
# include files with entities
|
25
|
+
# select entities that will be generated
|
26
|
+
inside Rails.root do
|
27
|
+
if entities.count.zero?
|
28
|
+
require_all MDWA::DSL::STRUCTURAL_PATH unless Dir.glob("#{MDWA::DSL::STRUCTURAL_PATH}/*.rb").count.zero?
|
29
|
+
else
|
30
|
+
files = entities.collect{ |e| "#{MDWA::DSL::STRUCTURAL_PATH}#{MDWA::DSL::Entity.new(e).file_name}.rb" }
|
31
|
+
require_all files.join(', ')
|
32
|
+
end
|
33
|
+
end
|
34
|
+
@all_entities = MDWA::DSL.entities.all
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
alert('js.erb response');
|
@@ -0,0 +1 @@
|
|
1
|
+
<%%= {json_response: 'ok'}.to_json %>
|
@@ -0,0 +1,130 @@
|
|
1
|
+
require 'erb'
|
2
|
+
require 'mdwa/dsl'
|
3
|
+
|
4
|
+
module Mdwa
|
5
|
+
module Generators
|
6
|
+
|
7
|
+
class TransformGenerator < Rails::Generators::Base
|
8
|
+
|
9
|
+
def initialize(*args, &block)
|
10
|
+
super
|
11
|
+
|
12
|
+
# include files with entities
|
13
|
+
# select entities that will be generated
|
14
|
+
inside Rails.root do
|
15
|
+
require_all MDWA::DSL::STRUCTURAL_PATH unless Dir.glob("#{MDWA::DSL::STRUCTURAL_PATH}/*.rb").count.zero?
|
16
|
+
end
|
17
|
+
@entities = MDWA::DSL.entities.all
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
def generate_model
|
22
|
+
@project_entity = MDWA::DSL.entity('Project')
|
23
|
+
generator_model = @project_entity.generator_model
|
24
|
+
|
25
|
+
mdwa_template "#{@project_entity.file_name}/model.rb", "app/models/#{generator_model.space}/#{generator_model.singular_name}.rb"
|
26
|
+
end
|
27
|
+
|
28
|
+
def generate_controller
|
29
|
+
@project_entity = MDWA::DSL.entity('Project')
|
30
|
+
generator_model = @project_entity.generator_model
|
31
|
+
|
32
|
+
mdwa_template "#{@project_entity.file_name}/controller.rb", "app/controllers/#{generator_model.space}/#{generator_model.plural_name}_controller.rb"
|
33
|
+
end
|
34
|
+
|
35
|
+
def generate_views
|
36
|
+
@project_entity = MDWA::DSL.entity('Project')
|
37
|
+
generator_model = @project_entity.generator_model
|
38
|
+
|
39
|
+
mdwa_template "#{@project_entity.file_name}/views/edit.html.erb", "app/views/#{generator_model.space}/#{generator_model.plural_name}/edit.html.erb"
|
40
|
+
mdwa_template "#{@project_entity.file_name}/views/index.html.erb", "app/views/#{generator_model.space}/#{generator_model.plural_name}/index.html.erb"
|
41
|
+
mdwa_template "#{@project_entity.file_name}/views/index.js.erb", "app/views/#{generator_model.space}/#{generator_model.plural_name}/index.js.erb"
|
42
|
+
mdwa_template "#{@project_entity.file_name}/views/new.html.erb", "app/views/#{generator_model.space}/#{generator_model.plural_name}/new.html.erb"
|
43
|
+
mdwa_template "#{@project_entity.file_name}/views/show.html.erb", "app/views/#{generator_model.space}/#{generator_model.plural_name}/show.html.erb"
|
44
|
+
mdwa_template "#{@project_entity.file_name}/views/_form.html.erb", "app/views/#{generator_model.space}/#{generator_model.plural_name}/_form.html.erb"
|
45
|
+
mdwa_template "#{@project_entity.file_name}/views/_form_fields.html.erb", "app/views/#{generator_model.space}/#{generator_model.plural_name}/_form_fields.html.erb"
|
46
|
+
mdwa_template "#{@project_entity.file_name}/views/_list.html.erb", "app/views/#{generator_model.space}/#{generator_model.plural_name}/_#{generator_model.plural_name}.html.erb"
|
47
|
+
|
48
|
+
if @project_entity.ajax?
|
49
|
+
mdwa_template "#{@project_entity.file_name}/views/create.js.erb", "app/views/#{generator_model.space}/#{generator_model.plural_name}/create.js.erb"
|
50
|
+
mdwa_template "#{@project_entity.file_name}/views/update.js.erb", "app/views/#{generator_model.space}/#{generator_model.plural_name}/update.js.erb"
|
51
|
+
mdwa_template "#{@project_entity.file_name}/views/destroy.js.erb", "app/views/#{generator_model.space}/#{generator_model.plural_name}/destroy.js.erb"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def generate_routes
|
56
|
+
@project_entity = MDWA::DSL.entity('Project')
|
57
|
+
generator_model = @project_entity.generator_model
|
58
|
+
|
59
|
+
route 'mdwa_router(self)'
|
60
|
+
append_to_file 'config/routes.rb', "require File.expand_path('../../app/mdwa/templates/routes.rb', __FILE__)"
|
61
|
+
|
62
|
+
insert_into_file path_to_routes, :after => "controller :#{generator_model.plural_name} do" do
|
63
|
+
routes = []
|
64
|
+
@project_entity.actions.generate_routes.each do |action_name, generation_string|
|
65
|
+
routes << "\n\t\t\t#{generation_string}"
|
66
|
+
end
|
67
|
+
routes.join
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def generate_locales
|
72
|
+
end
|
73
|
+
|
74
|
+
def generate_migration
|
75
|
+
@project_entity = MDWA::DSL.entity('Project')
|
76
|
+
generator_model = @project_entity.generator_model
|
77
|
+
|
78
|
+
migration_string = []
|
79
|
+
# create table
|
80
|
+
migration_string << "\n\tdef self.up"
|
81
|
+
migration_string << "\t\tcreate_table :#{generator_model.plural_name} do |t|"
|
82
|
+
generator_model.simple_attributes.each do |attr|
|
83
|
+
migration_string << "\t\t\tt.#{attr.migration_field} :#{attr.name}"
|
84
|
+
end
|
85
|
+
migration_string << "\t\t\tt.timestamps"
|
86
|
+
migration_string << "\t\tend\n\tend"
|
87
|
+
|
88
|
+
# drop table
|
89
|
+
migration_string << "\n\tdef self.down"
|
90
|
+
migration_string << "\t\tdrop_table :#{generator_model.plural_name}"
|
91
|
+
migration_string << "\tend"
|
92
|
+
|
93
|
+
migration_name = "create_#{generator_model.plural_name}"
|
94
|
+
migration_from_string(migration_name, migration_string.join("\n"))
|
95
|
+
|
96
|
+
rake('db:migrate') if yes?('Run rake db:migrate')
|
97
|
+
|
98
|
+
end
|
99
|
+
|
100
|
+
def generate_tests
|
101
|
+
end
|
102
|
+
|
103
|
+
private
|
104
|
+
|
105
|
+
def mdwa_template(file_to_read, file_to_write)
|
106
|
+
read = File.read("#{Rails.root}/#{MDWA::DSL::TEMPLATES_PATH}/#{file_to_read}")
|
107
|
+
erb = ERB.new(read, nil, '-')
|
108
|
+
|
109
|
+
create_file "#{Rails.root}/#{file_to_write}", erb.result, :force => true
|
110
|
+
end
|
111
|
+
|
112
|
+
def migration_from_string(file_name, migration_string)
|
113
|
+
|
114
|
+
# migration number
|
115
|
+
if ActiveRecord::Base.timestamped_migrations
|
116
|
+
@migration_number = Time.now.utc.strftime("%Y%m%d%H%M%S")
|
117
|
+
else
|
118
|
+
@migration_number = "%.3d" % (current_migration_number(Rails.root + 'db/migrate') + 1)
|
119
|
+
end
|
120
|
+
|
121
|
+
# incluir classe na migration
|
122
|
+
migration_string = "# -*- encoding : utf-8 -*-\nclass #{file_name.camelize} < ActiveRecord::Migration\n#{migration_string}\nend"
|
123
|
+
create_file "#{Rails.root}/db/migrate/#{@migration_number}_#{file_name}.rb", migration_string
|
124
|
+
|
125
|
+
end
|
126
|
+
|
127
|
+
end
|
128
|
+
|
129
|
+
end
|
130
|
+
end
|
@@ -12,16 +12,25 @@ module Mdwa
|
|
12
12
|
attr_accessor :user
|
13
13
|
|
14
14
|
argument :user_name
|
15
|
+
|
16
|
+
class_option :requirement, :type => :string, :desc => 'Requirement alias'
|
15
17
|
|
16
18
|
def initialize(*args, &block)
|
17
19
|
super
|
18
|
-
|
19
20
|
@user = user_name.singularize.camelize
|
20
21
|
end
|
21
22
|
|
22
23
|
def generate_user
|
23
|
-
|
24
|
-
|
24
|
+
file_name = "#{MDWA::DSL::USERS_PATH}#{@user.underscore}.rb"
|
25
|
+
# if file doesn't exist, create it
|
26
|
+
# if file exists, include the in_requirements clause
|
27
|
+
if !File.exist?( Rails.root + file_name )
|
28
|
+
template 'user.rb', file_name
|
29
|
+
else
|
30
|
+
append_to_file( file_name, "\nMDWA::DSL.user('#{@user}').in_requirements << '#{options.requirement}'" ) unless options.requirement.blank?
|
31
|
+
end
|
32
|
+
|
33
|
+
generate "mdwa:entity #{@user} --user --requirement=\"#{options.requirement}\""
|
25
34
|
end
|
26
35
|
|
27
36
|
end # class user generator
|
@@ -54,73 +54,73 @@ module Mdwa
|
|
54
54
|
@model.add_attribute MDWA::Generators::ModelAttribute.new( attribute ) unless User.accessible_attributes.to_a.include?( attribute.split(':').first )
|
55
55
|
end
|
56
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"
|
57
|
+
generate "mdwa:scaffold #{scaffold_name} name:string email:string password:password password_confirmation:password #{@model.attributes.collect{|a| a.raw}.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
58
|
|
59
59
|
end
|
60
60
|
|
61
61
|
def controller_and_view
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
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
124
|
|
125
125
|
private
|
126
126
|
|
data/lib/mdwa/dsl.rb
CHANGED
data/lib/mdwa/dsl/entities.rb
CHANGED
data/lib/mdwa/dsl/entity.rb
CHANGED
@@ -7,7 +7,7 @@ module MDWA
|
|
7
7
|
class Entity
|
8
8
|
|
9
9
|
attr_accessor :name, :resource, :user, :purpose, :scaffold_name, :model_name, :ajax, :force
|
10
|
-
attr_accessor :attributes, :associations, :actions, :specifications, :code_generations
|
10
|
+
attr_accessor :attributes, :associations, :actions, :specifications, :code_generations, :in_requirements
|
11
11
|
|
12
12
|
def initialize( name )
|
13
13
|
# set the entity name
|
@@ -19,6 +19,7 @@ module MDWA
|
|
19
19
|
self.actions = EntityActions.new(self)
|
20
20
|
self.specifications = []
|
21
21
|
self.code_generations = []
|
22
|
+
self.in_requirements = []
|
22
23
|
|
23
24
|
# fixed attributes
|
24
25
|
self.resource = true
|
@@ -54,6 +55,10 @@ module MDWA
|
|
54
55
|
self.resource
|
55
56
|
end
|
56
57
|
|
58
|
+
def ajax?
|
59
|
+
self.ajax
|
60
|
+
end
|
61
|
+
|
57
62
|
def force?
|
58
63
|
self.force
|
59
64
|
end
|
@@ -62,12 +67,25 @@ module MDWA
|
|
62
67
|
self.user
|
63
68
|
end
|
64
69
|
|
70
|
+
#
|
71
|
+
# Executed after the entity is declared, but before the inclusion in the entities singleton array.
|
72
|
+
#
|
73
|
+
def after_declaration
|
74
|
+
|
75
|
+
# if it's a user and have no attributes, include "name" to prevent errors
|
76
|
+
if user? and attributes.count.zero?
|
77
|
+
self.attribute('name', 'string')
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
|
65
82
|
#
|
66
83
|
# Declares one attribute of the list using the block given.
|
67
84
|
#
|
68
|
-
def attribute
|
85
|
+
def attribute(name, type)
|
69
86
|
attr = EntityAttribute.new(self)
|
70
|
-
|
87
|
+
attr.name = name
|
88
|
+
attr.type = type
|
71
89
|
attr.raise_errors_if_invalid!
|
72
90
|
self.attributes[attr.name] = attr
|
73
91
|
end
|
@@ -110,7 +128,16 @@ module MDWA
|
|
110
128
|
# Return an instance of Generators::Model
|
111
129
|
#
|
112
130
|
def generator_model
|
113
|
-
Generators::Model.new(self.model_name)
|
131
|
+
@generator_model = Generators::Model.new(self.model_name)
|
132
|
+
self.attributes.values.each do |attribute|
|
133
|
+
@generator_model.add_attribute Generators::ModelAttribute.new( "#{attribute.name}:#{attribute.type}" )
|
134
|
+
end
|
135
|
+
self.associations.values.each do |association|
|
136
|
+
model1 = Generators::Model.new(self.model_name)
|
137
|
+
model2 = Generators::Model.new(DSL.entity(association.destination).model_name)
|
138
|
+
@generator_model.associations << Generators::ModelAssociation.new(model1, model2, association.generator_type)
|
139
|
+
end
|
140
|
+
return @generator_model
|
114
141
|
end
|
115
142
|
|
116
143
|
#
|
data/lib/mdwa/dsl/user.rb
CHANGED
@@ -5,7 +5,7 @@ module MDWA
|
|
5
5
|
module Generators
|
6
6
|
class Model
|
7
7
|
|
8
|
-
attr_accessor :name, :namespace, :attributes, :specific_model_name
|
8
|
+
attr_accessor :name, :namespace, :attributes, :specific_model_name, :associations
|
9
9
|
|
10
10
|
#
|
11
11
|
# Sets the variables by the string
|
@@ -18,6 +18,7 @@ module MDWA
|
|
18
18
|
self.name = arg.split('/').last.singularize.camelize
|
19
19
|
|
20
20
|
self.attributes = []
|
21
|
+
self.associations = []
|
21
22
|
end
|
22
23
|
|
23
24
|
def valid?
|
@@ -53,7 +54,8 @@ module MDWA
|
|
53
54
|
end
|
54
55
|
|
55
56
|
def object_name
|
56
|
-
|
57
|
+
return (space + '_' + singular_name) if !space.blank?
|
58
|
+
return singular_name
|
57
59
|
end
|
58
60
|
|
59
61
|
def to_params
|
data/lib/mdwa/version.rb
CHANGED
data/mdd.gemspec
CHANGED
@@ -13,14 +13,14 @@ Gem::Specification.new do |s|
|
|
13
13
|
|
14
14
|
s.rubyforge_project = "mdd"
|
15
15
|
|
16
|
-
s.add_dependency 'rails'
|
17
|
-
s.add_dependency 'jquery-rails'
|
18
|
-
s.add_dependency 'devise'
|
19
|
-
s.add_dependency 'cancan'
|
20
|
-
s.add_dependency 'will_paginate'
|
21
|
-
s.add_dependency 'nested_form'
|
22
|
-
s.add_dependency 'require_all'
|
23
|
-
s.add_development_dependency 'minitest'
|
16
|
+
s.add_dependency 'rails', '>= 3.1'
|
17
|
+
s.add_dependency 'jquery-rails', '>= 2.0'
|
18
|
+
s.add_dependency 'devise', '>= 2.1'
|
19
|
+
s.add_dependency 'cancan', '>= 1.6'
|
20
|
+
s.add_dependency 'will_paginate', '>= 3.0'
|
21
|
+
s.add_dependency 'nested_form', '>= 0.2'
|
22
|
+
s.add_dependency 'require_all', '>= 1.2.1'
|
23
|
+
s.add_development_dependency 'minitest', '>= 3.3'
|
24
24
|
|
25
25
|
s.files = `git ls-files`.split("\n")
|
26
26
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
data/test/entity_test.rb
CHANGED
@@ -14,22 +14,10 @@ describe MDWA::DSL::Entities do
|
|
14
14
|
e.ajax = true
|
15
15
|
|
16
16
|
## attributes
|
17
|
-
e.attribute
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
e.attribute do |attr|
|
22
|
-
attr.name = 'category'
|
23
|
-
attr.type = 'integer'
|
24
|
-
end
|
25
|
-
e.attribute do |attr|
|
26
|
-
attr.name = 'stock'
|
27
|
-
attr.type = 'integer'
|
28
|
-
end
|
29
|
-
e.attribute do |attr|
|
30
|
-
attr.name = 'published'
|
31
|
-
attr.type = 'boolean'
|
32
|
-
end
|
17
|
+
e.attribute 'name', 'string'
|
18
|
+
e.attribute 'category', 'integer'
|
19
|
+
e.attribute 'stock', 'integer'
|
20
|
+
e.attribute 'published', 'boolean'
|
33
21
|
|
34
22
|
## associations
|
35
23
|
e.association do |a|
|
@@ -83,10 +71,7 @@ describe MDWA::DSL::Entities do
|
|
83
71
|
# create category entity
|
84
72
|
MDWA::DSL.entities.register "Category" do |e|
|
85
73
|
e.resource = false
|
86
|
-
e.attribute
|
87
|
-
attr.name = 'name'
|
88
|
-
attr.type = 'string'
|
89
|
-
end
|
74
|
+
e.attribute 'name', 'string'
|
90
75
|
end
|
91
76
|
MDWA::DSL.entity("Category").must_be_instance_of MDWA::DSL::Entity
|
92
77
|
end
|
@@ -171,18 +156,9 @@ describe MDWA::DSL::Entities do
|
|
171
156
|
p.scaffold_name = 'a/project'
|
172
157
|
p.ajax = true
|
173
158
|
|
174
|
-
p.attribute
|
175
|
-
|
176
|
-
|
177
|
-
end
|
178
|
-
p.attribute do |a|
|
179
|
-
a.name = 'ativo'
|
180
|
-
a.type = 'boolean'
|
181
|
-
end
|
182
|
-
p.attribute do |a|
|
183
|
-
a.name = 'situacao_atual'
|
184
|
-
a.type = 'text'
|
185
|
-
end
|
159
|
+
p.attribute 'nome', 'string'
|
160
|
+
p.attribute 'ativo', 'boolean'
|
161
|
+
p.attribute 'situacao_atual', 'text'
|
186
162
|
|
187
163
|
p.association do |assoc|
|
188
164
|
assoc.destination = 'Group'
|
@@ -196,15 +172,8 @@ describe MDWA::DSL::Entities do
|
|
196
172
|
p.ajax = true
|
197
173
|
p.force = true
|
198
174
|
|
199
|
-
p.attribute
|
200
|
-
|
201
|
-
a.type = 'string'
|
202
|
-
end
|
203
|
-
|
204
|
-
p.attribute do |a|
|
205
|
-
a.name = 'ativo'
|
206
|
-
a.type = 'boolean'
|
207
|
-
end
|
175
|
+
p.attribute 'nome', 'string'
|
176
|
+
p.attribute 'ativo', 'boolean'
|
208
177
|
end
|
209
178
|
|
210
179
|
project = MDWA::DSL.entity("Project")
|
@@ -224,19 +193,25 @@ describe MDWA::DSL::Entities do
|
|
224
193
|
p.ajax = true
|
225
194
|
p.force = true
|
226
195
|
|
227
|
-
p.attribute
|
228
|
-
|
229
|
-
a.type = 'string'
|
230
|
-
end
|
231
|
-
|
232
|
-
p.attribute do |a|
|
233
|
-
a.name = 'active'
|
234
|
-
a.type = 'boolean'
|
235
|
-
end
|
196
|
+
p.attribute 'name', 'string'
|
197
|
+
p.attribute 'active', 'boolean'
|
236
198
|
end
|
237
199
|
|
238
200
|
task = MDWA::DSL.entity('Task')
|
239
201
|
task.generate.must_equal nil
|
240
202
|
end
|
241
203
|
|
204
|
+
it "should create default attribute for user entity" do
|
205
|
+
MDWA::DSL.entities.register "TeamMember" do |p|
|
206
|
+
p.resource = true
|
207
|
+
p.ajax = true
|
208
|
+
p.user = true
|
209
|
+
end
|
210
|
+
|
211
|
+
team_member = MDWA::DSL.entity('TeamMember')
|
212
|
+
team_member.attributes.count.must_equal 1
|
213
|
+
team_member.attributes['name'].name.must_equal 'name'
|
214
|
+
team_member.attributes['name'].type.must_equal 'string'
|
215
|
+
end
|
216
|
+
|
242
217
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mdd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-08-
|
12
|
+
date: 2012-08-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -18,7 +18,7 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: '
|
21
|
+
version: '3.1'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ! '>='
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: '
|
29
|
+
version: '3.1'
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: jquery-rails
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -34,7 +34,7 @@ dependencies:
|
|
34
34
|
requirements:
|
35
35
|
- - ! '>='
|
36
36
|
- !ruby/object:Gem::Version
|
37
|
-
version: '0'
|
37
|
+
version: '2.0'
|
38
38
|
type: :runtime
|
39
39
|
prerelease: false
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -42,7 +42,7 @@ dependencies:
|
|
42
42
|
requirements:
|
43
43
|
- - ! '>='
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
version: '0'
|
45
|
+
version: '2.0'
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
47
|
name: devise
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
@@ -50,7 +50,7 @@ dependencies:
|
|
50
50
|
requirements:
|
51
51
|
- - ! '>='
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: '
|
53
|
+
version: '2.1'
|
54
54
|
type: :runtime
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -58,7 +58,7 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - ! '>='
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '2.1'
|
62
62
|
- !ruby/object:Gem::Dependency
|
63
63
|
name: cancan
|
64
64
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,7 +66,7 @@ dependencies:
|
|
66
66
|
requirements:
|
67
67
|
- - ! '>='
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: '
|
69
|
+
version: '1.6'
|
70
70
|
type: :runtime
|
71
71
|
prerelease: false
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -74,7 +74,7 @@ dependencies:
|
|
74
74
|
requirements:
|
75
75
|
- - ! '>='
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version: '
|
77
|
+
version: '1.6'
|
78
78
|
- !ruby/object:Gem::Dependency
|
79
79
|
name: will_paginate
|
80
80
|
requirement: !ruby/object:Gem::Requirement
|
@@ -82,7 +82,7 @@ dependencies:
|
|
82
82
|
requirements:
|
83
83
|
- - ! '>='
|
84
84
|
- !ruby/object:Gem::Version
|
85
|
-
version: '0'
|
85
|
+
version: '3.0'
|
86
86
|
type: :runtime
|
87
87
|
prerelease: false
|
88
88
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -90,7 +90,7 @@ dependencies:
|
|
90
90
|
requirements:
|
91
91
|
- - ! '>='
|
92
92
|
- !ruby/object:Gem::Version
|
93
|
-
version: '0'
|
93
|
+
version: '3.0'
|
94
94
|
- !ruby/object:Gem::Dependency
|
95
95
|
name: nested_form
|
96
96
|
requirement: !ruby/object:Gem::Requirement
|
@@ -98,7 +98,7 @@ dependencies:
|
|
98
98
|
requirements:
|
99
99
|
- - ! '>='
|
100
100
|
- !ruby/object:Gem::Version
|
101
|
-
version: '0'
|
101
|
+
version: '0.2'
|
102
102
|
type: :runtime
|
103
103
|
prerelease: false
|
104
104
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -106,7 +106,7 @@ dependencies:
|
|
106
106
|
requirements:
|
107
107
|
- - ! '>='
|
108
108
|
- !ruby/object:Gem::Version
|
109
|
-
version: '0'
|
109
|
+
version: '0.2'
|
110
110
|
- !ruby/object:Gem::Dependency
|
111
111
|
name: require_all
|
112
112
|
requirement: !ruby/object:Gem::Requirement
|
@@ -114,7 +114,7 @@ dependencies:
|
|
114
114
|
requirements:
|
115
115
|
- - ! '>='
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
117
|
+
version: 1.2.1
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -122,7 +122,7 @@ dependencies:
|
|
122
122
|
requirements:
|
123
123
|
- - ! '>='
|
124
124
|
- !ruby/object:Gem::Version
|
125
|
-
version:
|
125
|
+
version: 1.2.1
|
126
126
|
- !ruby/object:Gem::Dependency
|
127
127
|
name: minitest
|
128
128
|
requirement: !ruby/object:Gem::Requirement
|
@@ -130,7 +130,7 @@ dependencies:
|
|
130
130
|
requirements:
|
131
131
|
- - ! '>='
|
132
132
|
- !ruby/object:Gem::Version
|
133
|
-
version: '
|
133
|
+
version: '3.3'
|
134
134
|
type: :development
|
135
135
|
prerelease: false
|
136
136
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -138,7 +138,7 @@ dependencies:
|
|
138
138
|
requirements:
|
139
139
|
- - ! '>='
|
140
140
|
- !ruby/object:Gem::Version
|
141
|
-
version: '
|
141
|
+
version: '3.3'
|
142
142
|
description: Implements a set of tools for code generation for Rails apps. It's based
|
143
143
|
on Theodoro's MDWA approach for web applications.
|
144
144
|
email:
|
@@ -153,7 +153,11 @@ files:
|
|
153
153
|
- Gemfile
|
154
154
|
- README.md
|
155
155
|
- Rakefile
|
156
|
+
- app/controllers/mdwa/mdwa_controller.rb
|
157
|
+
- app/controllers/mdwa/requirements_controller.rb
|
156
158
|
- app/helpers/mdwa_helper.rb
|
159
|
+
- app/views/layouts/mdwa_visualization.html.erb
|
160
|
+
- app/views/mdwa/requirements/index.html.erb
|
157
161
|
- app/views/template/mdwa/_autocomplete_tag.html.erb
|
158
162
|
- app/views/template/mdwa/_crud_error.html.erb
|
159
163
|
- app/views/template/mdwa/_login_text.html.erb
|
@@ -251,6 +255,7 @@ files:
|
|
251
255
|
- lib/generators/mdwa/sandbox/templates/app/assets/stylesheets/mdwa/template/leftbar.css.erb
|
252
256
|
- lib/generators/mdwa/sandbox/templates/app/assets/stylesheets/mdwa/template/reset.css
|
253
257
|
- lib/generators/mdwa/sandbox/templates/app/assets/stylesheets/mdwa/template/template.css.erb
|
258
|
+
- lib/generators/mdwa/sandbox/templates/app/assets/stylesheets/mdwa/template/visualization.css
|
254
259
|
- lib/generators/mdwa/sandbox/templates/app/controllers/a/administrators_controller.rb
|
255
260
|
- lib/generators/mdwa/sandbox/templates/app/controllers/a/backend_controller.rb
|
256
261
|
- lib/generators/mdwa/sandbox/templates/app/controllers/a/home_controller.rb
|
@@ -319,6 +324,12 @@ files:
|
|
319
324
|
- lib/generators/mdwa/scaffold/templates/views/index.js.erb
|
320
325
|
- lib/generators/mdwa/scaffold/templates/views/new.html.erb
|
321
326
|
- lib/generators/mdwa/scaffold/templates/views/show.html.erb
|
327
|
+
- lib/generators/mdwa/template/template_generator.rb
|
328
|
+
- lib/generators/mdwa/template/templates/views/view.custom.erb
|
329
|
+
- lib/generators/mdwa/template/templates/views/view.html.erb
|
330
|
+
- lib/generators/mdwa/template/templates/views/view.js.erb
|
331
|
+
- lib/generators/mdwa/template/templates/views/view.json.erb
|
332
|
+
- lib/generators/mdwa/transform/transform_generator.rb
|
322
333
|
- lib/generators/mdwa/user/templates/user.rb
|
323
334
|
- lib/generators/mdwa/user/user_generator.rb
|
324
335
|
- lib/generators/mdwa/user_scaffold/USAGE
|
@@ -378,15 +389,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
378
389
|
- - ! '>='
|
379
390
|
- !ruby/object:Gem::Version
|
380
391
|
version: '0'
|
392
|
+
segments:
|
393
|
+
- 0
|
394
|
+
hash: 4288068741970845227
|
381
395
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
382
396
|
none: false
|
383
397
|
requirements:
|
384
398
|
- - ! '>='
|
385
399
|
- !ruby/object:Gem::Version
|
386
400
|
version: '0'
|
401
|
+
segments:
|
402
|
+
- 0
|
403
|
+
hash: 4288068741970845227
|
387
404
|
requirements: []
|
388
405
|
rubyforge_project: mdd
|
389
|
-
rubygems_version: 1.8.
|
406
|
+
rubygems_version: 1.8.24
|
390
407
|
signing_key:
|
391
408
|
specification_version: 3
|
392
409
|
summary: MDD-based code generation tools to avoid repetitive tasks in Rails dev.
|