mdd 3.0.4 → 3.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. data/app/controllers/mdwa/mdwa_controller.rb +8 -0
  2. data/app/controllers/mdwa/requirements_controller.rb +9 -0
  3. data/app/views/layouts/mdwa_visualization.html.erb +29 -0
  4. data/app/views/mdwa/requirements/index.html.erb +31 -0
  5. data/lib/generators/mdwa/code/code_generator.rb +36 -37
  6. data/lib/generators/mdwa/entity/entity_generator.rb +10 -4
  7. data/lib/generators/mdwa/entity/templates/entity.rb +7 -9
  8. data/lib/generators/mdwa/from_requirements/from_requirements_generator.rb +6 -3
  9. data/lib/generators/mdwa/sandbox/sandbox_generator.rb +10 -0
  10. data/lib/generators/mdwa/sandbox/templates/app/assets/stylesheets/mdwa/system_manifest.css +1 -0
  11. data/lib/generators/mdwa/sandbox/templates/app/assets/stylesheets/mdwa/template/visualization.css +3 -0
  12. data/lib/generators/mdwa/sandbox/templates/app/views/a/administrators/_form.html.erb +1 -1
  13. data/lib/generators/mdwa/sandbox/templates/config/initializers/mdwa_layout.rb +3 -0
  14. data/lib/generators/mdwa/scaffold/scaffold_generator.rb +4 -1
  15. data/lib/generators/mdwa/scaffold/templates/controllers/ajax_controller.rb +9 -12
  16. data/lib/generators/mdwa/template/template_generator.rb +40 -0
  17. data/lib/generators/mdwa/template/templates/views/view.custom.erb +2 -0
  18. data/lib/generators/mdwa/template/templates/views/view.html.erb +2 -0
  19. data/lib/generators/mdwa/template/templates/views/view.js.erb +1 -0
  20. data/lib/generators/mdwa/template/templates/views/view.json.erb +1 -0
  21. data/lib/generators/mdwa/transform/transform_generator.rb +130 -0
  22. data/lib/generators/mdwa/user/templates/user.rb +4 -0
  23. data/lib/generators/mdwa/user/user_generator.rb +12 -3
  24. data/lib/generators/mdwa/user_scaffold/user_scaffold_generator.rb +63 -63
  25. data/lib/mdwa/dsl.rb +1 -0
  26. data/lib/mdwa/dsl/entities.rb +1 -0
  27. data/lib/mdwa/dsl/entity.rb +31 -4
  28. data/lib/mdwa/dsl/user.rb +2 -0
  29. data/lib/mdwa/generators/model.rb +4 -2
  30. data/lib/mdwa/version.rb +1 -1
  31. data/mdd.gemspec +8 -8
  32. data/test/entity_test.rb +25 -50
  33. metadata +36 -19
@@ -0,0 +1,8 @@
1
+ class Mdwa::MDWAController < ApplicationController
2
+
3
+ protected
4
+ def restrict_to_development
5
+ head(:bad_request) unless Rails.env.development?
6
+ end
7
+
8
+ end
@@ -0,0 +1,9 @@
1
+ require 'mdwa/dsl'
2
+ class Mdwa::RequirementsController < Mdwa::MDWAController
3
+
4
+ def index
5
+ require_all MDWA::DSL::REQUIREMENTS_PATH
6
+ @requirements = MDWA::DSL.requirements.all
7
+ end
8
+
9
+ end
@@ -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
- if entities.count.zero?
34
- require_all MDWA::DSL::STRUCTURAL_PATH unless Dir.glob("#{MDWA::DSL::STRUCTURAL_PATH}/*.rb").count.zero?
35
- else
36
- files = entities.collect{ |e| "#{MDWA::DSL::STRUCTURAL_PATH}#{MDWA::DSL::Entity.new(e).file_name}.rb" }
37
- require_all files.join(', ')
38
- end
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
- if options.only_interface
125
- @all_entities.each do |entity|
126
-
127
- # if it's not a resource, ignore
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
- # if model has not a database yet, run the generate command
131
- begin
132
- # if model does not exist, should generate scaffold
133
- model_class = entity.generator_model.model_class
134
- rescue
135
- model_class = nil
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
- insert_into_file "spec/routing/#{model.space}/#{model.plural_name}_routing_spec.rb", :after => 'describe "routing" do' do
201
- routes = []
202
- entity.actions.actions.values.select {|a| !a.resource}.each do |action|
203
- routes << "\n\n\t\tit 'routes to ##{action.name}' do"
204
- 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?})"
205
- routes << "\n\t\tend"
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
- template 'entity.rb', "#{MDWA::DSL::STRUCTURAL_PATH}#{MDWA::DSL::Entity.new(name).file_name}.rb"
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 does?
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 do |attr|
25
- # attr.name = 'name'
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}" unless File.exist?("#{Rails.root}/#{MDWA::DSL::STRUCTURAL_PATH}#{MDWA::DSL::Entity.new(entity).file_name}.rb")
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}" unless File.exist?("#{Rails.root}/#{MDWA::DSL::USERS_PATH}#{MDWA::DSL::Entity.new(user).file_name}.rb")
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,6 +6,7 @@
6
6
  *= require ./template/reset
7
7
  *= require ./template/cssbase
8
8
  *= require ./template/template
9
+ *= require ./template/visualization
9
10
  *= require ./template/grid
10
11
  *= require_tree ../jquery
11
12
  *= require ./template/backend
@@ -0,0 +1,3 @@
1
+ body.mdwa_visualization {
2
+ background: #fff;
3
+ }
@@ -1,7 +1,7 @@
1
1
  <%= form_for([:a, @administrator]) do |f| %>
2
2
 
3
3
  <div id="mdwa_error">
4
- <%%= render '/template/mdwa/crud_error', :object => @administrator %>
4
+ <%= render '/template/mdwa/crud_error', :object => @administrator %>
5
5
  </div>
6
6
 
7
7
  <div class="yui3-g">
@@ -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
- append_file 'config/locales/mdwa_model_specific.en.yml', :after => "en:\n" do
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
- respond_to do |format|
10
- format.html
11
- format.js
12
- end
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
- @<%= @model.singular_name %> = <%= @model.klass %>.find(params[:id])
18
- render :layout => false
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
- # loads all <%= @model.plural_name %> to display in the list
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
- # loads all <%= @model.plural_name %> to display in the list
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,2 @@
1
+ Custom format.
2
+ Be sure to include this in /config/initializers/mime_types.rb
@@ -0,0 +1,2 @@
1
+ <h1>HTML generated code</h1>
2
+ <p>Replace this with your own code</p>
@@ -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
@@ -10,3 +10,7 @@ MDWA::DSL.users.register '<%= @user %>' do |u|
10
10
  # u.user_roles = ['<%= @user %>']
11
11
 
12
12
  end
13
+
14
+ <%- unless options.requirement.blank? -%>
15
+ MDWA::DSL.user('<%= @user %>').in_requirements << '<%= options.requirement %>'
16
+ <%- 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
- template 'user.rb', "#{MDWA::DSL::USERS_PATH}#{@user.underscore}.rb"
24
- generate "mdwa:entity #{@user} --user"
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
- 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
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
@@ -23,6 +23,7 @@ module MDWA
23
23
  USERS_PATH = 'app/mdwa/users/'
24
24
  WORKFLOW_PATH = 'app/mdwa/workflow/'
25
25
  REQUIREMENTS_PATH = 'app/mdwa/requirements/'
26
+ TEMPLATES_PATH = 'app/mdwa/templates/'
26
27
 
27
28
  end
28
29
  end
@@ -22,6 +22,7 @@ module MDWA
22
22
  # retrive or initialize a entity
23
23
  entity = element(name) || Entity.new( name )
24
24
  yield(entity) if block_given?
25
+ entity.after_declaration
25
26
  add_node entity # add to the list
26
27
  end
27
28
 
@@ -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
- yield( attr ) if block_given?
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,9 +5,11 @@ module MDWA
5
5
  class User
6
6
 
7
7
  attr_accessor :name, :description, :user_roles
8
+ attr_accessor :in_requirements
8
9
 
9
10
  def initialize(name)
10
11
  self.name = name.camelize
12
+ self.in_requirements = []
11
13
 
12
14
  self.clear_user_roles
13
15
  end
@@ -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
- space + '_' + singular_name
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
@@ -1,4 +1,4 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  module MDWA
3
- VERSION = "3.0.4"
3
+ VERSION = "3.0.6"
4
4
  end
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 do |attr|
18
- attr.name = 'name'
19
- attr.type = 'string'
20
- end
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 do |attr|
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 do |a|
175
- a.name = 'nome'
176
- a.type = 'string'
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 do |a|
200
- a.name = 'nome'
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 do |a|
228
- a.name = 'name'
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
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-08 00:00:00.000000000 Z
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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.22
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.