drailties 0.4.3 → 0.5.0.pre
Sign up to get free protection for your applications and to get access to all the features.
- 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
|