mdd 3.0.4 → 3.0.6
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/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.
|