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.
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.