drailties 0.4.3 → 0.5.0.pre
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.
- checksums.yaml +6 -14
- data/bin/drails +4 -42
- data/lib/drails/app_drails_loader.rb +62 -0
- data/lib/drails/cli.rb +11 -0
- data/lib/drails/commands/application.rb +43 -0
- data/lib/drails/commands/destroy.rb +12 -0
- data/lib/drails/commands/domainserver.rb +6 -0
- data/lib/drails/commands/generate.rb +12 -0
- data/lib/drails/commands/projectionserver.rb +9 -0
- data/lib/drails/commands/server.rb +22 -0
- data/lib/drails/commands.rb +70 -0
- data/lib/drails/generators.rb +48 -0
- data/lib/drails/server/domain_server.rb +4 -1
- data/lib/drails/server/projection_servers.rb +5 -2
- data/lib/generators/drails/app/USAGE +12 -12
- data/lib/generators/drails/app/app_generator.rb +134 -52
- data/lib/generators/drails/app/templates/{event_source_controller.rb → app/controllers/event_source_controller.rb} +15 -15
- data/lib/generators/drails/app/templates/bin/drails +3 -0
- data/lib/generators/drails/app/templates/config/disco.yml +27 -0
- data/lib/generators/drails/app/templates/{build_validations_registry.rb → config/initializers/build_validations_registry.rb} +18 -18
- data/lib/generators/drails/app/templates/{create_domain.rb → config/initializers/create_domain.rb} +4 -4
- data/lib/generators/drails/app/templates/db/seeds.rb +14 -0
- data/lib/generators/drails/command/USAGE +11 -11
- data/lib/generators/drails/command/command_generator.rb +68 -40
- data/lib/generators/drails/command/templates/command.rb +24 -6
- data/lib/generators/drails/command/templates/event.rb +11 -10
- data/lib/generators/drails/command_processor/USAGE +1 -1
- data/lib/generators/drails/command_processor/command_processor_generator.rb +22 -15
- data/lib/generators/drails/command_processor/templates/command_processor.rb +5 -5
- data/lib/generators/drails/domain.rb +18 -18
- data/lib/generators/drails/event_name.rb +51 -51
- data/lib/generators/drails/migration/USAGE +41 -1
- data/lib/generators/drails/migration/migration_generator.rb +27 -28
- data/lib/generators/drails/migration/templates/create_table_migration.rb +19 -19
- data/lib/generators/drails/model/USAGE +17 -17
- data/lib/generators/drails/model/model_generator.rb +29 -23
- data/lib/generators/drails/model/templates/domain_model.rb +5 -5
- data/lib/generators/drails/model/templates/model.rb +4 -4
- data/lib/generators/drails/processor_name.rb +47 -47
- data/lib/generators/drails/projection/projection_generator.rb +3 -3
- data/lib/generators/drails/projection/templates/domain_projection.rb +9 -9
- data/lib/generators/drails/projection/templates/domain_projection_test.rb +6 -6
- data/lib/generators/drails/projection/templates/projection.rb +9 -9
- data/lib/generators/drails/projection/templates/projection_test.rb +6 -6
- data/lib/generators/drails/scaffold/USAGE +26 -26
- data/lib/generators/drails/scaffold/scaffold_generator.rb +91 -89
- data/lib/generators/drails/scaffold/templates/_eventstream.js.erb +15 -15
- data/lib/generators/drails/{controller → scaffold_controller}/USAGE +1 -1
- data/lib/generators/drails/{controller/controller_generator.rb → scaffold_controller/scaffold_controller_generator.rb} +27 -26
- data/lib/generators/drails/scaffold_controller/templates/controller.rb +68 -0
- data/lib/generators/drails/{controller → scaffold_controller}/templates/controller_test.rb +45 -45
- data/lib/generators/drails/use_domain_option.rb +53 -53
- data/lib/rails-disco/version.rb +3 -3
- data/lib/tasks/db.rake +187 -88
- metadata +33 -27
- data/lib/drails/application.rb +0 -8
- data/lib/drails/domainserver.rb +0 -5
- data/lib/drails/generate.rb +0 -21
- data/lib/drails/projectionserver.rb +0 -8
- data/lib/drails/server.rb +0 -18
- data/lib/generators/drails/app/templates/disco.yml +0 -54
- data/lib/generators/drails/controller/templates/controller.rb +0 -67
@@ -1,23 +1,29 @@
|
|
1
|
-
require 'generators/drails/use_domain_option.rb'
|
2
|
-
|
3
|
-
module Drails
|
4
|
-
module Generators
|
5
|
-
class ModelGenerator < Rails::Generators::NamedBase
|
6
|
-
source_root File.expand_path('../templates', __FILE__)
|
7
|
-
argument :attributes, type: :array, default: [], banner:
|
8
|
-
include UseDomainOption
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
end
|
13
|
-
|
14
|
-
def create_model_file
|
15
|
-
template use_domain('model.rb'), use_domain_class_file_path('models', "#{file_name}.rb")
|
16
|
-
end
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
end
|
21
|
-
|
22
|
-
|
23
|
-
|
1
|
+
require 'generators/drails/use_domain_option.rb'
|
2
|
+
|
3
|
+
module Drails
|
4
|
+
module Generators
|
5
|
+
class ModelGenerator < Rails::Generators::NamedBase
|
6
|
+
source_root File.expand_path('../templates', __FILE__)
|
7
|
+
argument :attributes, type: :array, default: [], banner: 'field[:type] field[:type]'
|
8
|
+
include UseDomainOption
|
9
|
+
|
10
|
+
hook_for :projection, require: true do |hook|
|
11
|
+
invoke hook, [name]
|
12
|
+
end
|
13
|
+
|
14
|
+
def create_model_file
|
15
|
+
template use_domain('model.rb'), use_domain_class_file_path('models', "#{file_name}.rb")
|
16
|
+
end
|
17
|
+
|
18
|
+
hook_for :migration, require: true do |hook|
|
19
|
+
invoke hook, ["create_#{table_name}", *attributes]
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
# do not parse - keep attributes for forwarding to migration
|
25
|
+
def parse_attributes!
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
module <%=
|
2
|
-
class <%= class_name %> < ActiveRecord::Base
|
3
|
-
self.table_name = '<%=table_name %>'
|
4
|
-
end
|
5
|
-
end
|
1
|
+
module <%= Rails::Generators.namespace.name if Rails::Generators.namespace.present? %>Domain
|
2
|
+
class <%= class_name %> < ActiveRecord::Base
|
3
|
+
self.table_name = '<%=table_name %>'
|
4
|
+
end
|
5
|
+
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
<% module_namespacing do -%>
|
2
|
-
class <%= class_name %> < ActiveRecord::Base
|
3
|
-
self.table_name = '<%=table_name %>'
|
4
|
-
end
|
1
|
+
<% module_namespacing do -%>
|
2
|
+
class <%= class_name %> < ActiveRecord::Base
|
3
|
+
self.table_name = '<%=table_name %>'
|
4
|
+
end
|
5
5
|
<% end -%>
|
@@ -1,48 +1,48 @@
|
|
1
|
-
require 'active_support/concern'
|
2
|
-
|
3
|
-
module Drails
|
4
|
-
module Generators
|
5
|
-
module ProcessorName
|
6
|
-
extend ActiveSupport::Concern
|
7
|
-
|
8
|
-
included do
|
9
|
-
class_option :processor, type: :string, default: nil, desc: "class_name of the command processor (defaults to NAME)"
|
10
|
-
class_option :skip_processor, type: :boolean, default: false, desc: "Skip command processor generation"
|
11
|
-
end
|
12
|
-
|
13
|
-
def initialize(args, *options)
|
14
|
-
super
|
15
|
-
assign_processor_names!(processor_name)
|
16
|
-
end
|
17
|
-
|
18
|
-
protected
|
19
|
-
|
20
|
-
attr_reader :processor_file_name
|
21
|
-
attr_reader :processor_class_path
|
22
|
-
|
23
|
-
def skip_processor?
|
24
|
-
options[:skip_processor]
|
25
|
-
end
|
26
|
-
|
27
|
-
def processor_name
|
28
|
-
options[:processor] || name
|
29
|
-
end
|
30
|
-
|
31
|
-
def processor_file_path
|
32
|
-
@processor_file_path ||= (processor_class_path + [processor_file_name]).join('/')
|
33
|
-
end
|
34
|
-
|
35
|
-
def processor_domain_class_path
|
36
|
-
@processor_domain_class_path ||= class_path_domain processor_class_path
|
37
|
-
end
|
38
|
-
|
39
|
-
private
|
40
|
-
|
41
|
-
def assign_processor_names!(processor_name)
|
42
|
-
@processor_class_path = processor_name.include?('/') ? processor_name.split('/') : processor_name.split('::')
|
43
|
-
@processor_class_path.map! &:underscore
|
44
|
-
@processor_file_name = @processor_class_path.pop
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
1
|
+
require 'active_support/concern'
|
2
|
+
|
3
|
+
module Drails
|
4
|
+
module Generators
|
5
|
+
module ProcessorName
|
6
|
+
extend ActiveSupport::Concern
|
7
|
+
|
8
|
+
included do
|
9
|
+
class_option :processor, type: :string, default: nil, desc: "class_name of the command processor (defaults to NAME)"
|
10
|
+
class_option :skip_processor, type: :boolean, default: false, desc: "Skip command processor generation"
|
11
|
+
end
|
12
|
+
|
13
|
+
def initialize(args, *options)
|
14
|
+
super
|
15
|
+
assign_processor_names!(processor_name)
|
16
|
+
end
|
17
|
+
|
18
|
+
protected
|
19
|
+
|
20
|
+
attr_reader :processor_file_name
|
21
|
+
attr_reader :processor_class_path
|
22
|
+
|
23
|
+
def skip_processor?
|
24
|
+
options[:skip_processor]
|
25
|
+
end
|
26
|
+
|
27
|
+
def processor_name
|
28
|
+
options[:processor] || name
|
29
|
+
end
|
30
|
+
|
31
|
+
def processor_file_path
|
32
|
+
@processor_file_path ||= (processor_class_path + [processor_file_name]).join('/')
|
33
|
+
end
|
34
|
+
|
35
|
+
def processor_domain_class_path
|
36
|
+
@processor_domain_class_path ||= class_path_domain processor_class_path
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
def assign_processor_names!(processor_name)
|
42
|
+
@processor_class_path = processor_name.include?('/') ? processor_name.split('/') : processor_name.split('::')
|
43
|
+
@processor_class_path.map! &:underscore
|
44
|
+
@processor_file_name = @processor_class_path.pop
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
48
|
end
|
@@ -4,7 +4,7 @@ module Drails
|
|
4
4
|
module Generators
|
5
5
|
class ProjectionGenerator < Rails::Generators::NamedBase
|
6
6
|
source_root File.expand_path('../templates', __FILE__)
|
7
|
-
argument :events, type: :array, default: [], banner:
|
7
|
+
argument :events, type: :array, default: [], banner: 'event event'
|
8
8
|
include UseDomainOption
|
9
9
|
|
10
10
|
def create_projection_file
|
@@ -12,8 +12,8 @@ module Drails
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def create_test_files
|
15
|
-
template use_domain('projection_test.rb'), File.join(
|
15
|
+
template use_domain('projection_test.rb'), File.join('test/projections', use_domain_class_path, "#{plural_file_name}_projection_test.rb")
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
19
|
-
end
|
19
|
+
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
module <%=
|
2
|
-
class <%= class_name %>Projection
|
3
|
-
include ActiveDomain::Projection
|
4
|
-
<% events.each do |event| %>
|
5
|
-
def <%= event.underscore.split('/') * '__' %>(event)
|
6
|
-
end
|
7
|
-
<% end %>
|
8
|
-
end
|
9
|
-
end
|
1
|
+
module <%= Rails::Generators.namespace.name if Rails::Generators.namespace.present? %>Domain
|
2
|
+
class <%= class_name %>Projection
|
3
|
+
include ActiveDomain::Projection
|
4
|
+
<% events.each do |event| %>
|
5
|
+
def <%= event.underscore.split('/') * '__' %>(event)
|
6
|
+
end
|
7
|
+
<% end %>
|
8
|
+
end
|
9
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
module <%=
|
4
|
-
class <%= plural_name.camelcase %>ProjectionTest < ActiveSupport::TestCase
|
5
|
-
end
|
6
|
-
end
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module <%= Rails::Generators.namespace.name if Rails::Generators.namespace.present? %>Domain
|
4
|
+
class <%= plural_name.camelcase %>ProjectionTest < ActiveSupport::TestCase
|
5
|
+
end
|
6
|
+
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
<% module_namespacing do -%>
|
2
|
-
class <%= class_name %>Projection
|
3
|
-
include ActiveProjection::ProjectionType
|
4
|
-
<% events.each do |event| %>
|
5
|
-
|
6
|
-
|
7
|
-
<% end %>
|
8
|
-
end
|
9
|
-
<% end -%>
|
1
|
+
<% module_namespacing do -%>
|
2
|
+
class <%= class_name %>Projection
|
3
|
+
include ActiveProjection::ProjectionType
|
4
|
+
<% events.each do |event| %>
|
5
|
+
def <%= event.underscore.split('/') * '__' %>(event)
|
6
|
+
end
|
7
|
+
<% end %>
|
8
|
+
end
|
9
|
+
<% end -%>
|
@@ -1,6 +1,6 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
<% module_namespacing do -%>
|
4
|
-
class <%= plural_name.camelcase %>ProjectionTest < ActiveSupport::TestCase
|
5
|
-
end
|
6
|
-
<% end -%>
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
<% module_namespacing do -%>
|
4
|
+
class <%= plural_name.camelcase %>ProjectionTest < ActiveSupport::TestCase
|
5
|
+
end
|
6
|
+
<% end -%>
|
@@ -1,27 +1,27 @@
|
|
1
|
-
Description:
|
2
|
-
Scaffolds a complete resource with models, migration, projections, controller, views
|
3
|
-
commands, events and command_processor.
|
4
|
-
|
5
|
-
Example:
|
6
|
-
rails generate drails:scaffold Thing [attr1:type, attr2:type]
|
7
|
-
|
8
|
-
This will create:
|
9
|
-
app/controllers/things_controller
|
10
|
-
app/commands/create_thing_command.rb
|
11
|
-
app/commands/update_thing_command.rb
|
12
|
-
app/commands/delete_thing_command.rb
|
13
|
-
domain/command_processors/thing_processor.rb
|
14
|
-
app/events/created_thing_event.rb
|
15
|
-
app/events/updated_thing_event.rb
|
16
|
-
app/events/deleted_thing_event.rb
|
17
|
-
app/projections/things_projection.rb
|
18
|
-
db/migrate/create_things.rb
|
19
|
-
app/models/thing.rb
|
20
|
-
app/helpers/things_helper.rb
|
21
|
-
app/views/things/_eventstream.js.erb
|
22
|
-
app/views/things/_form.html.erb
|
23
|
-
app/views/things/edit.html.erb
|
24
|
-
app/views/things/index.html.erb
|
25
|
-
app/views/things/new.html.erb
|
26
|
-
app/views/things/show.html.erb
|
1
|
+
Description:
|
2
|
+
Scaffolds a complete resource with models, migration, projections, controller, views
|
3
|
+
commands, events and command_processor.
|
4
|
+
|
5
|
+
Example:
|
6
|
+
rails generate drails:scaffold Thing [attr1:type, attr2:type]
|
7
|
+
|
8
|
+
This will create:
|
9
|
+
app/controllers/things_controller
|
10
|
+
app/commands/create_thing_command.rb
|
11
|
+
app/commands/update_thing_command.rb
|
12
|
+
app/commands/delete_thing_command.rb
|
13
|
+
domain/command_processors/thing_processor.rb
|
14
|
+
app/events/created_thing_event.rb
|
15
|
+
app/events/updated_thing_event.rb
|
16
|
+
app/events/deleted_thing_event.rb
|
17
|
+
app/projections/things_projection.rb
|
18
|
+
db/migrate/create_things.rb
|
19
|
+
app/models/thing.rb
|
20
|
+
app/helpers/things_helper.rb
|
21
|
+
app/views/things/_eventstream.js.erb
|
22
|
+
app/views/things/_form.html.erb
|
23
|
+
app/views/things/edit.html.erb
|
24
|
+
app/views/things/index.html.erb
|
25
|
+
app/views/things/new.html.erb
|
26
|
+
app/views/things/show.html.erb
|
27
27
|
a resource route
|
@@ -1,89 +1,91 @@
|
|
1
|
-
require 'generators/drails/processor_name.rb'
|
2
|
-
require 'generators/drails/domain.rb'
|
3
|
-
|
4
|
-
module Drails
|
5
|
-
module Generators
|
6
|
-
class ScaffoldGenerator < Rails::Generators::NamedBase
|
7
|
-
source_root File.expand_path('../templates', __FILE__)
|
8
|
-
argument :attributes, type: :array, default: [], banner: "field[:type] field[:type]"
|
9
|
-
include ProcessorName
|
10
|
-
include Domain
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
add_to_projections(action)
|
25
|
-
end
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
end
|
45
|
-
|
46
|
-
def
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
include_text = '<%= javascript_tag render partial: \'eventstream\', formats: [:js], locals: {event_id: @event_id} %>'
|
56
|
-
prepend_to_file File.join('app/views', class_path, plural_file_name, 'index.html.erb'), include_text
|
57
|
-
prepend_to_file File.join('app/views', class_path, plural_file_name, 'show.html.erb'), include_text
|
58
|
-
end
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
end
|
65
|
-
|
66
|
-
def add_to_projections(action)
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
'
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
end
|
1
|
+
require 'generators/drails/processor_name.rb'
|
2
|
+
require 'generators/drails/domain.rb'
|
3
|
+
|
4
|
+
module Drails
|
5
|
+
module Generators
|
6
|
+
class ScaffoldGenerator < Rails::Generators::NamedBase
|
7
|
+
source_root File.expand_path('../templates', __FILE__)
|
8
|
+
argument :attributes, type: :array, default: [], banner: "field[:type] field[:type]"
|
9
|
+
include ProcessorName
|
10
|
+
include Domain
|
11
|
+
|
12
|
+
hook_for :model, in: :drails, require: true
|
13
|
+
|
14
|
+
hook_for :command, in: :drails, require: true do |hook|
|
15
|
+
%w(create update delete).each do |action|
|
16
|
+
args = [(class_path + ["#{action}_#{file_name}"]) * '/']
|
17
|
+
args += attributes_names unless action == 'delete'
|
18
|
+
opts = ["--event=#{(class_path + ["#{action}d_#{file_name}"]) * '/'}"]
|
19
|
+
opts << "--processor=#{processor_name}" unless skip_processor?
|
20
|
+
opts << '--skip_model' if action == 'delete'
|
21
|
+
opts << "--model_name=#{class_name}"
|
22
|
+
opts << '--persisted' if action == 'update'
|
23
|
+
invoke hook, args, opts
|
24
|
+
add_to_projections(action)
|
25
|
+
end
|
26
|
+
add_to_command_processor
|
27
|
+
end
|
28
|
+
|
29
|
+
def add_routes
|
30
|
+
routing_code = ''
|
31
|
+
class_path.each_with_index do |ns, i|
|
32
|
+
add_line_with_indent routing_code, (i + 1), "namespace :#{ns} do"
|
33
|
+
end
|
34
|
+
add_line_with_indent routing_code, (class_path.length + 1), "resources :#{plural_name}"
|
35
|
+
class_path.each_with_index do |ns, i|
|
36
|
+
add_line_with_indent routing_code, (class_path.length - i), 'end'
|
37
|
+
end
|
38
|
+
route routing_code[2..-1]
|
39
|
+
end
|
40
|
+
|
41
|
+
hook_for :scaffold_controller, in: :drails, require: true do |hook|
|
42
|
+
invoke hook
|
43
|
+
add_event_stream_client_to_views
|
44
|
+
end
|
45
|
+
|
46
|
+
def copy_event_stream_client
|
47
|
+
# ensure if app was created before this was default
|
48
|
+
copy_file '_eventstream.js.erb', 'app/views/application/eventstream/_eventstream.js.erb', verbose: false, skip: true
|
49
|
+
end
|
50
|
+
|
51
|
+
protected
|
52
|
+
|
53
|
+
def add_event_stream_client_to_views
|
54
|
+
return if behavior == :revoke
|
55
|
+
include_text = '<%= javascript_tag render partial: \'application/eventstream/eventstream\', formats: [:js], locals: {event_id: @event_id} %>'
|
56
|
+
prepend_to_file File.join('app/views', class_path, plural_file_name, 'index.html.erb'), include_text
|
57
|
+
prepend_to_file File.join('app/views', class_path, plural_file_name, 'show.html.erb'), include_text
|
58
|
+
end
|
59
|
+
|
60
|
+
def add_to_command_processor
|
61
|
+
return if behavior == :revoke
|
62
|
+
content = "\n command.id = ActiveDomain::UniqueCommandIdRepository.new_for command.class.name"
|
63
|
+
insert_into_file File.join('domain/command_processors', domain_class_path, "#{processor_file_name}_processor.rb"), content, after: /(\s)*process(\s)*(.)*CreateCommand(.)*/
|
64
|
+
end
|
65
|
+
|
66
|
+
def add_to_projections(action)
|
67
|
+
return if behavior == :revoke
|
68
|
+
event_func = (class_path + ["#{action}d_#{file_name}_event"]) * '__'
|
69
|
+
content = "
|
70
|
+
|
71
|
+
def #{event_func}(event)
|
72
|
+
#{method_bodies[action]}
|
73
|
+
end"
|
74
|
+
indent(content) if namespaced?
|
75
|
+
inject_into_file File.join('app/projections', class_path, "#{plural_file_name}_projection.rb"), content, after: /(\s)*include(\s)*ActiveProjection::ProjectionType/
|
76
|
+
end
|
77
|
+
|
78
|
+
def method_bodies
|
79
|
+
{
|
80
|
+
'create' => "#{class_name}.create! event.values.merge(id: event.id)",
|
81
|
+
'update' => "#{class_name}.find(event.id).update! event.values",
|
82
|
+
'delete' => "#{class_name}.find(event.id).destroy!",
|
83
|
+
}
|
84
|
+
end
|
85
|
+
|
86
|
+
def add_line_with_indent(target, indent, str)
|
87
|
+
target << "#{" " * indent}#{str}\n"
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
@@ -1,16 +1,16 @@
|
|
1
|
-
<% if event_id.present? %>
|
2
|
-
$(document).ready(function () {
|
3
|
-
setTimeout(function () {
|
4
|
-
var source = new EventSource('/event_stream');
|
5
|
-
source.addEventListener('refresh', function (e) {
|
6
|
-
var event = JSON.parse(e.data);
|
7
|
-
if (<%= event_id %> == event.id){
|
8
|
-
window.location.reload();
|
9
|
-
}else if (<%= event_id %> < event.id){
|
10
|
-
source.removeEventListener('refresh');
|
11
|
-
source.close();
|
12
|
-
}
|
13
|
-
});
|
14
|
-
}, 1);
|
15
|
-
});
|
1
|
+
<% if event_id.present? %>
|
2
|
+
$(document).ready(function () {
|
3
|
+
setTimeout(function () {
|
4
|
+
var source = new EventSource('/event_stream');
|
5
|
+
source.addEventListener('refresh', function (e) {
|
6
|
+
var event = JSON.parse(e.data);
|
7
|
+
if (<%= event_id %> == event.id){
|
8
|
+
window.location.reload();
|
9
|
+
}else if (<%= event_id %> < event.id){
|
10
|
+
source.removeEventListener('refresh');
|
11
|
+
source.close();
|
12
|
+
}
|
13
|
+
});
|
14
|
+
}, 1);
|
15
|
+
});
|
16
16
|
<% end %>
|
@@ -1 +1 @@
|
|
1
|
-
Not intended for extern use!
|
1
|
+
Not intended for extern use!
|
@@ -1,26 +1,27 @@
|
|
1
|
-
require 'rails/generators/rails/scaffold_controller/scaffold_controller_generator'
|
2
|
-
module Drails
|
3
|
-
module Generators
|
4
|
-
class
|
5
|
-
source_root File.expand_path('../templates', __FILE__)
|
6
|
-
hide!
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
end
|
1
|
+
require 'rails/generators/rails/scaffold_controller/scaffold_controller_generator'
|
2
|
+
module Drails
|
3
|
+
module Generators
|
4
|
+
class ScaffoldControllerGenerator < Rails::Generators::ScaffoldControllerGenerator
|
5
|
+
source_root File.expand_path('../templates', __FILE__)
|
6
|
+
hide!
|
7
|
+
|
8
|
+
# the normal test_framework will not cover our usecase
|
9
|
+
remove_hook_for :test_framework
|
10
|
+
def create_test_files
|
11
|
+
template 'controller_test.rb', File.join('test/controllers', controller_class_path, "#{controller_file_name}_controller_test.rb")
|
12
|
+
end
|
13
|
+
|
14
|
+
protected
|
15
|
+
|
16
|
+
def command_class_name(command)
|
17
|
+
(class_path + ["#{command}_#{file_name}"]).map(&:camelize) * '::'
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def params_string
|
23
|
+
attributes.map { |x| "#{x.name}: params[:#{singular_table_name}][:#{x.name}]" }.join(', ')
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|