drailties 0.2.0 → 0.3.0
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 +4 -4
- data/bin/drails +0 -1
- data/lib/drails/server.rb +18 -7
- data/lib/generators/drails/app/USAGE +4 -1
- data/lib/generators/drails/app/app_generator.rb +24 -0
- data/lib/generators/drails/app/templates/event_source_controller.rb +1 -1
- data/lib/generators/drails/command/USAGE +5 -5
- data/lib/generators/drails/command/command_generator.rb +15 -19
- data/lib/generators/drails/command/templates/command.rb +2 -1
- data/lib/generators/drails/command/templates/event.rb +2 -1
- data/lib/generators/drails/command_processor/command_processor_generator.rb +4 -12
- data/lib/generators/drails/controller/controller_generator.rb +7 -0
- data/lib/generators/drails/controller/templates/controller.rb +3 -3
- data/lib/generators/drails/domain.rb +19 -0
- data/lib/generators/drails/event_name.rb +52 -0
- data/lib/generators/drails/migration/migration_generator.rb +5 -4
- data/lib/generators/drails/migration/templates/create_table_migration.rb +3 -3
- data/lib/generators/drails/model/USAGE +7 -5
- data/lib/generators/drails/model/model_generator.rb +6 -26
- data/lib/generators/drails/processor_name.rb +48 -0
- data/lib/generators/drails/projection/USAGE +6 -4
- data/lib/generators/drails/projection/projection_generator.rb +5 -25
- data/lib/generators/drails/projection/templates/domain_projection.rb +2 -2
- data/lib/generators/drails/projection/templates/projection.rb +2 -2
- data/lib/generators/drails/scaffold/USAGE +11 -11
- data/lib/generators/drails/scaffold/scaffold_generator.rb +35 -24
- data/lib/generators/drails/use_domain_option.rb +54 -0
- data/lib/rails-disco/railtie.rb +8 -0
- data/lib/rails-disco/tasks.rb +1 -0
- data/lib/rails-disco/version.rb +1 -1
- data/lib/tasks/db.rake +96 -82
- metadata +15 -11
- data/lib/drails/rake.rb +0 -17
- data/lib/drailties.rb +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d08d30f7e31adfdc8b7796b5d37b580298ce45c9
|
4
|
+
data.tar.gz: 432c6895cb8b9095c8d61e1e6641fa27a08d157f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b5c3bc2afcbfc6d5a385371221072562b2eb7d1d926e79c7f76af5cfe84e4ea8599a425817690447931cf1213ac2c6d046e1a8dbfd08df8ef6df1521ef40b6b5
|
7
|
+
data.tar.gz: 8e8de79b5f581b2c57470e296525a79ff03e18d225addf655d7db64ded665ea3616b4764ec09cf5471f4431d3ea7c38a8e84c5ae2810ec62dcb17a10992f2e2c
|
data/bin/drails
CHANGED
data/lib/drails/server.rb
CHANGED
@@ -1,7 +1,18 @@
|
|
1
|
-
puts '
|
2
|
-
puts '=> Ctrl-C to shutdown
|
3
|
-
|
4
|
-
|
5
|
-
Process.spawn(
|
6
|
-
Process.spawn(
|
7
|
-
Process.
|
1
|
+
puts 'Starting domain, projection and Rails server...'
|
2
|
+
puts '=> Ctrl-C to shutdown all servers'
|
3
|
+
env = {'ROOT_DIR' => ROOT_DIR}
|
4
|
+
pids = []
|
5
|
+
pids << Process.spawn(env, "ruby #{File.expand_path '../server', __FILE__}/domain_server.rb")
|
6
|
+
pids << Process.spawn(env, "ruby #{File.expand_path '../server', __FILE__}/projection_servers.rb")
|
7
|
+
pids << Process.spawn(env, 'rails s')
|
8
|
+
trap(:INT) do
|
9
|
+
pids.each do |pid|
|
10
|
+
begin
|
11
|
+
Process.kill 9, pid
|
12
|
+
rescue Exception
|
13
|
+
# do nothing
|
14
|
+
end
|
15
|
+
end
|
16
|
+
exit
|
17
|
+
end
|
18
|
+
Process.waitall
|
@@ -5,6 +5,9 @@ Example:
|
|
5
5
|
rails generate drails:app
|
6
6
|
|
7
7
|
This will create:
|
8
|
+
app/controllers/event_source_controller.rb
|
9
|
+
a route for this controller
|
8
10
|
config/build_validations_registry.rb
|
9
11
|
config/initializers/create_domain.rb
|
10
|
-
config/disco.yml
|
12
|
+
config/disco.yml
|
13
|
+
adds rails-disco to your gemfile
|
@@ -20,9 +20,33 @@ module Drails
|
|
20
20
|
copy_file 'event_source_controller.rb', File.join('app', 'controllers', 'event_source_controller.rb')
|
21
21
|
end
|
22
22
|
|
23
|
+
def add_sse_route
|
24
|
+
route "get 'event_stream' => 'event_source#stream'"
|
25
|
+
end
|
26
|
+
|
23
27
|
def add_drails_to_gemfile
|
24
28
|
gem "rails-disco"
|
25
29
|
end
|
30
|
+
|
31
|
+
def enable_rake_tasks
|
32
|
+
content = "
|
33
|
+
require 'rails-disco/tasks'"
|
34
|
+
inject_into_file File.join('config/application.rb'), content, after: /require 'rails\/all'/
|
35
|
+
rescue Exception
|
36
|
+
puts "Seems like you invoked it from an engine, so put\n
|
37
|
+
require 'rails-disco/tasks'\n
|
38
|
+
in your application.rb from the main application to have the rails disco rake tasks available"
|
39
|
+
end
|
40
|
+
|
41
|
+
def enable_concurrency
|
42
|
+
application 'config.preload_frameworks = true'
|
43
|
+
application 'config.allow_concurrency = true'
|
44
|
+
rescue Exception
|
45
|
+
puts "Seems like you invoked it from an engine, so remember to put\n
|
46
|
+
config.preload_frameworks = true
|
47
|
+
config.allow_concurrency = true\n
|
48
|
+
in your application.rb from the main application"
|
49
|
+
end
|
26
50
|
end
|
27
51
|
end
|
28
52
|
end
|
@@ -5,7 +5,7 @@ class EventSourceController < ApplicationController
|
|
5
5
|
def stream
|
6
6
|
event_connection.start
|
7
7
|
response.headers['Content-Type'] = 'text/event-stream'
|
8
|
-
sse =
|
8
|
+
sse = ActiveEvent::SSE.new(response.stream)
|
9
9
|
subscribe_to event_queue do |delivery_info, properties, body|
|
10
10
|
sse.write({:id => properties.headers['store_id']}, :event => 'refresh')
|
11
11
|
end
|
@@ -2,10 +2,10 @@ Description:
|
|
2
2
|
Generates a Command, an Event and adds it to the CommandProcessor or creates one.
|
3
3
|
|
4
4
|
Example:
|
5
|
-
rails generate drails:command
|
5
|
+
rails generate drails:command CreateThing [attr1, attr2] --event=CreatedThing --processor=Things
|
6
6
|
|
7
7
|
This will create:
|
8
|
-
app/commands/
|
9
|
-
app/events/
|
10
|
-
domain/command_processors/
|
11
|
-
Adds a
|
8
|
+
app/commands/create_thing_command.rb
|
9
|
+
app/events/created_thing_event.rb
|
10
|
+
domain/command_processors/things_processor.rb unless it exists
|
11
|
+
Adds a command handler to this or an existing processor
|
@@ -1,43 +1,39 @@
|
|
1
|
+
require 'generators/drails/processor_name.rb'
|
2
|
+
require 'generators/drails/event_name.rb'
|
3
|
+
require 'generators/drails/domain.rb'
|
4
|
+
|
1
5
|
module Drails
|
2
6
|
module Generators
|
3
7
|
class CommandGenerator < Rails::Generators::NamedBase
|
4
8
|
source_root File.expand_path('../templates', __FILE__)
|
5
9
|
argument :attributes, type: :array, default: [], banner: "attribute attribute"
|
10
|
+
include ProcessorName
|
11
|
+
include EventName
|
12
|
+
include Domain
|
6
13
|
|
7
14
|
def create_command_file
|
8
15
|
template 'command.rb', File.join('app/commands', class_path, "#{file_name}_command.rb")
|
9
16
|
end
|
10
17
|
|
11
18
|
def create_related_event_file
|
12
|
-
|
19
|
+
return if skip_event?
|
20
|
+
template 'event.rb', File.join('app/events', event_class_path, "#{event_file_name}_event.rb")
|
13
21
|
end
|
14
22
|
|
15
23
|
def create_command_processor
|
16
|
-
|
24
|
+
return if skip_processor?
|
25
|
+
generate 'drails:command_processor', processor_file_path, '-s', '--skip-namespace'
|
17
26
|
end
|
18
27
|
|
19
28
|
def add_to_command_processor
|
29
|
+
return if skip_processor?
|
20
30
|
content = "
|
21
31
|
|
22
32
|
process #{class_name}Command do |command|
|
23
|
-
command.is_valid_do { event #{
|
33
|
+
command.is_valid_do { event #{event_class_name}Event.new command.to_hash }
|
24
34
|
end"
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
private
|
29
|
-
def processor_file_name
|
30
|
-
file_name.split('_').first
|
31
|
-
end
|
32
|
-
|
33
|
-
def domain_ns
|
34
|
-
namespace_path = Array.new class_path
|
35
|
-
if namespace_path.empty?
|
36
|
-
namespace_path[0] = 'domain'
|
37
|
-
else
|
38
|
-
namespace_path[-1] += '_domain'
|
39
|
-
end
|
40
|
-
namespace_path
|
35
|
+
file = File.join('domain/command_processors', processor_domain_class_path, "#{processor_file_name}_processor.rb")
|
36
|
+
inject_into_file file, content, after: /(\s)*include(\s)*ActiveDomain::CommandProcessor/
|
41
37
|
end
|
42
38
|
end
|
43
39
|
end
|
@@ -1,22 +1,14 @@
|
|
1
|
+
require 'generators/drails/domain.rb'
|
2
|
+
|
1
3
|
module Drails
|
2
4
|
module Generators
|
3
5
|
class CommandProcessorGenerator < Rails::Generators::NamedBase
|
4
6
|
source_root File.expand_path('../templates', __FILE__)
|
7
|
+
include Domain
|
5
8
|
hide!
|
6
9
|
|
7
10
|
def create_command_processor_file
|
8
|
-
template 'command_processor.rb', File.join('domain/command_processors',
|
9
|
-
end
|
10
|
-
|
11
|
-
private
|
12
|
-
def domain_ns
|
13
|
-
namespace_path = Array.new class_path
|
14
|
-
if namespace_path.empty?
|
15
|
-
namespace_path[0] = 'domain'
|
16
|
-
else
|
17
|
-
namespace_path[-1] += '_domain'
|
18
|
-
end
|
19
|
-
namespace_path
|
11
|
+
template 'command_processor.rb', File.join('domain/command_processors', domain_class_path, "#{file_name}_processor.rb")
|
20
12
|
end
|
21
13
|
end
|
22
14
|
end
|
@@ -10,7 +10,14 @@ module Drails
|
|
10
10
|
template "controller_test.rb", File.join("test/controllers", controller_class_path, "#{controller_file_name}_controller_test.rb")
|
11
11
|
end
|
12
12
|
|
13
|
+
protected
|
14
|
+
|
15
|
+
def command_class_name(command)
|
16
|
+
(class_path + ["#{command}_#{file_name}"]).map(&:camelize) * '::'
|
17
|
+
end
|
18
|
+
|
13
19
|
private
|
20
|
+
|
14
21
|
def params_string
|
15
22
|
attributes.map { |x| "#{x.name}: params[:#{singular_table_name}][:#{x.name}]" }.join(', ')
|
16
23
|
end
|
@@ -18,7 +18,7 @@ class <%= controller_class_name %>Controller < ApplicationController
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def create
|
21
|
-
<%= singular_table_name %> = <%=
|
21
|
+
<%= singular_table_name %> = <%= command_class_name('create') %>Command.new({<%= params_string %>})
|
22
22
|
valid = <%= singular_table_name %>.valid?
|
23
23
|
if valid and id = Domain.run_command(<%= singular_table_name %>)
|
24
24
|
flash[:notice] = <%= "'#{human_name} was successfully created.'" %>
|
@@ -31,7 +31,7 @@ class <%= controller_class_name %>Controller < ApplicationController
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def update
|
34
|
-
<%= singular_table_name %> = <%=
|
34
|
+
<%= singular_table_name %> = <%= command_class_name('update') %>Command.new({id: params[:id]<%=',' unless params_string == ''%> <%= params_string %>})
|
35
35
|
valid = <%= singular_table_name %>.valid?
|
36
36
|
if valid and id = Domain.run_command(<%= singular_table_name %>)
|
37
37
|
flash[:notice] = <%= "'#{human_name} was successfully updated.'" %>
|
@@ -44,7 +44,7 @@ class <%= controller_class_name %>Controller < ApplicationController
|
|
44
44
|
end
|
45
45
|
|
46
46
|
def destroy
|
47
|
-
<%= singular_table_name %> = <%=
|
47
|
+
<%= singular_table_name %> = <%= command_class_name('delete') %>Command.new({id: params[:id]})
|
48
48
|
if id = Domain.run_command(<%= singular_table_name %>)
|
49
49
|
session[:tmp_event_id] = id
|
50
50
|
flash[:notice] = <%= "'#{human_name} was successfully deleted.'" %>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'active_support/concern'
|
2
|
+
|
3
|
+
module Drails
|
4
|
+
module Generators
|
5
|
+
module Domain
|
6
|
+
extend ActiveSupport::Concern
|
7
|
+
|
8
|
+
def domain_class_path
|
9
|
+
@domain_calss_path ||= class_path_domain class_path
|
10
|
+
end
|
11
|
+
|
12
|
+
protected
|
13
|
+
|
14
|
+
def class_path_domain(class_path)
|
15
|
+
(Array.new class_path).unshift 'domain'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'active_support/concern'
|
2
|
+
|
3
|
+
module Drails
|
4
|
+
module Generators
|
5
|
+
module EventName
|
6
|
+
extend ActiveSupport::Concern
|
7
|
+
|
8
|
+
included do
|
9
|
+
class_option :event, type: :string, default: nil, desc: "name of the event (defaults to NAME)"
|
10
|
+
class_option :skip_event, type: :boolean, default: false, desc: "skip event generation"
|
11
|
+
end
|
12
|
+
|
13
|
+
def initialize(args, *options)
|
14
|
+
super
|
15
|
+
assign_event_name!(event_name)
|
16
|
+
end
|
17
|
+
|
18
|
+
protected
|
19
|
+
|
20
|
+
attr_reader :event_file_name
|
21
|
+
attr_reader :event_class_path
|
22
|
+
|
23
|
+
def skip_event?
|
24
|
+
options[:skip_event]
|
25
|
+
end
|
26
|
+
|
27
|
+
def event_name
|
28
|
+
options[:event] || name
|
29
|
+
end
|
30
|
+
|
31
|
+
def event_class_name
|
32
|
+
(event_class_path + [event_file_name]).map!{ |m| m.camelize }.join('::')
|
33
|
+
end
|
34
|
+
|
35
|
+
def event_file_path
|
36
|
+
@event_file_path ||= (event_class_path + [event_file_name]).join('/')
|
37
|
+
end
|
38
|
+
|
39
|
+
def event_domain_class_path
|
40
|
+
@event_domain_class_path ||= class_path_domain event_class_path
|
41
|
+
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
def assign_event_name!(event_name)
|
46
|
+
@event_class_path = event_name.include?('/') ? event_name.split('/') : event_name.split('::')
|
47
|
+
@event_class_path.map! &:underscore
|
48
|
+
@event_file_name = @event_class_path.pop
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'rails/generators/active_record/migration/migration_generator'
|
2
|
+
require 'generators/drails/use_domain_option.rb'
|
3
|
+
|
2
4
|
module Drails
|
3
5
|
module Generators
|
4
6
|
class MigrationGenerator < ActiveRecord::Generators::MigrationGenerator
|
5
7
|
source_root File.expand_path('../templates', __FILE__)
|
6
8
|
hide!
|
7
|
-
|
8
|
-
argument :use_domain, type: :string, default: 'false'
|
9
|
-
argument :attributes, type: :array, default: [], banner: "field[:type] field[:type]"
|
9
|
+
include UseDomainOption
|
10
10
|
|
11
11
|
def create_migration_file
|
12
12
|
set_local_assigns!
|
@@ -15,8 +15,9 @@ module Drails
|
|
15
15
|
end
|
16
16
|
|
17
17
|
private
|
18
|
+
|
18
19
|
def migration_dir
|
19
|
-
if
|
20
|
+
if use_domain?
|
20
21
|
'migrate_domain'
|
21
22
|
else
|
22
23
|
'migrate'
|
@@ -2,11 +2,11 @@ class <%= migration_class_name %> < ActiveRecord::Migration
|
|
2
2
|
def change
|
3
3
|
create_table :<%= table_name %> do |t|
|
4
4
|
<% attributes.each do |attribute| -%>
|
5
|
-
<%
|
5
|
+
<% if attribute.password_digest? -%>
|
6
6
|
t.string :password_digest<%= attribute.inject_options %>
|
7
|
-
<%
|
7
|
+
<% else -%>
|
8
8
|
t.<%= attribute.type %> :<%= attribute.name %><%= attribute.inject_options %>
|
9
|
-
<%
|
9
|
+
<% end -%>
|
10
10
|
<% end -%>
|
11
11
|
<% if options[:timestamps] %>
|
12
12
|
t.timestamps
|
@@ -2,14 +2,16 @@ Description:
|
|
2
2
|
Generates a Model and a Projection for it.
|
3
3
|
|
4
4
|
Example:
|
5
|
-
rails generate drails:model Thing [
|
5
|
+
rails generate drails:model Thing [attr1:type, attr2:type]
|
6
6
|
|
7
|
-
This will create
|
7
|
+
This will create:
|
8
8
|
app/projection/thing_projection.rb
|
9
9
|
app/models/thing.rb
|
10
10
|
db/migrate/create_thing.rb
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
rails generate drails:model Thing [attr1:type, attr2:type] --domain
|
13
|
+
|
14
|
+
This will create:
|
15
|
+
domain/projections/domain/thing_projection.rb
|
16
|
+
domain/models/domain/thing.rb
|
15
17
|
db/migrate_domain/create_thing.rb
|
@@ -1,42 +1,22 @@
|
|
1
|
+
require 'generators/drails/use_domain_option.rb'
|
2
|
+
|
1
3
|
module Drails
|
2
4
|
module Generators
|
3
5
|
class ModelGenerator < Rails::Generators::NamedBase
|
4
6
|
source_root File.expand_path('../templates', __FILE__)
|
5
|
-
argument :use_domain, type: :string, default: 'false'
|
6
7
|
argument :attributes, type: :array, default: [], banner: "field[:type] field[:type]"
|
8
|
+
include UseDomainOption
|
7
9
|
|
8
10
|
def create_projection_file
|
9
|
-
|
10
|
-
generate 'drails:projection', name, 'true'
|
11
|
-
else
|
12
|
-
generate 'drails:projection', name
|
13
|
-
end
|
11
|
+
generate 'drails:projection', name, use_domain_param
|
14
12
|
end
|
15
13
|
|
16
14
|
def create_model_file
|
17
|
-
|
18
|
-
template 'domain_model.rb', File.join('domain', 'models', domain_ns, "#{file_name}.rb")
|
19
|
-
else
|
20
|
-
template 'model.rb', File.join('app', 'models', class_path, "#{file_name}.rb")
|
21
|
-
end
|
15
|
+
template use_domain('model.rb'), use_domain_class_file_path('models', "#{file_name}.rb")
|
22
16
|
end
|
23
17
|
|
24
18
|
def create_migration
|
25
|
-
generate 'drails:migration', "create_#{table_name}",
|
26
|
-
end
|
27
|
-
|
28
|
-
private
|
29
|
-
def domain?
|
30
|
-
@domain ||= !!(/^(true|t|yes|y|1)$/i).match(use_domain)
|
31
|
-
end
|
32
|
-
|
33
|
-
def domain_ns
|
34
|
-
namespace_path = Array.new class_path
|
35
|
-
if namespace_path.empty?
|
36
|
-
namespace_path[0] = 'domain'
|
37
|
-
else
|
38
|
-
namespace_path[-1] += '_domain'
|
39
|
-
end
|
19
|
+
generate 'drails:migration', "create_#{table_name}", attributes.map { |x| "#{x.name}:#{x.type}" }.join(' '), use_domain_param
|
40
20
|
end
|
41
21
|
end
|
42
22
|
end
|
@@ -0,0 +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
|
48
|
+
end
|
@@ -2,10 +2,12 @@ Description:
|
|
2
2
|
Generates a projection with handlers for the given events.
|
3
3
|
|
4
4
|
Example:
|
5
|
-
rails generate drails:projection Thing [
|
5
|
+
rails generate drails:projection Thing [event event]
|
6
6
|
|
7
|
-
This will create
|
7
|
+
This will create:
|
8
8
|
app/projection/thing_projection.rb
|
9
9
|
|
10
|
-
|
11
|
-
|
10
|
+
rails generate drails:projection Thing [event event] --domain
|
11
|
+
|
12
|
+
This will create:
|
13
|
+
domain/projections/domain/thing_projection.rb
|
@@ -1,38 +1,18 @@
|
|
1
|
+
require 'generators/drails/use_domain_option.rb'
|
2
|
+
|
1
3
|
module Drails
|
2
4
|
module Generators
|
3
5
|
class ProjectionGenerator < Rails::Generators::NamedBase
|
4
6
|
source_root File.expand_path('../templates', __FILE__)
|
5
|
-
argument :use_domain, type: :string, default: 'false'
|
6
7
|
argument :events, type: :array, default: [], banner: "event event"
|
8
|
+
include UseDomainOption
|
7
9
|
|
8
10
|
def create_projection_file
|
9
|
-
|
10
|
-
template 'domain_projection.rb', File.join('domain', 'projections', domain_ns, "#{plural_file_name}_projection.rb")
|
11
|
-
else
|
12
|
-
template 'projection.rb', File.join('app', 'projections', class_path, "#{plural_file_name}_projection.rb")
|
13
|
-
end
|
11
|
+
template use_domain('projection.rb'), use_domain_class_file_path('projections', "#{plural_file_name}_projection.rb")
|
14
12
|
end
|
15
13
|
|
16
14
|
def create_test_files
|
17
|
-
|
18
|
-
template 'domain_projection_test.rb', File.join("test/projections", class_path, "#{plural_file_name}_projection_test.rb")
|
19
|
-
else
|
20
|
-
template 'projection_test.rb', File.join("test/projections", class_path, "#{plural_file_name}_projection_test.rb")
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
private
|
25
|
-
def domain?
|
26
|
-
@domain ||= !!(/^(true|t|yes|y|1)$/i).match(use_domain)
|
27
|
-
end
|
28
|
-
|
29
|
-
def domain_ns
|
30
|
-
namespace_path = Array.new class_path
|
31
|
-
if namespace_path.empty?
|
32
|
-
namespace_path[0] = 'domain'
|
33
|
-
else
|
34
|
-
namespace_path[-1] += '_domain'
|
35
|
-
end
|
15
|
+
template use_domain('projection_test.rb'), File.join("test/projections", use_domain_class_path, "#{plural_file_name}_projection_test.rb")
|
36
16
|
end
|
37
17
|
end
|
38
18
|
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
module <%=if Rails::Generators.namespace.present? then Rails::Generators.namespace.name end%>Domain
|
2
|
-
class <%=
|
2
|
+
class <%= class_name %>Projection
|
3
3
|
include ActiveDomain::Projection
|
4
4
|
<% events.each do |event| %>
|
5
|
-
def <%=event.underscore%>(event)
|
5
|
+
def <%= event.underscore.split('/') * '__' %>(event)
|
6
6
|
end
|
7
7
|
<% end %>
|
8
8
|
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
<% module_namespacing do -%>
|
2
|
-
class <%=
|
2
|
+
class <%= class_name %>Projection
|
3
3
|
include ActiveProjection::ProjectionType
|
4
4
|
<% events.each do |event| %>
|
5
|
-
def <%=event.underscore%>(event)
|
5
|
+
def <%= event.underscore.split('/') * '__' %>(event)
|
6
6
|
end
|
7
7
|
<% end %>
|
8
8
|
end
|
@@ -6,22 +6,22 @@ Example:
|
|
6
6
|
rails generate drails:scaffold Thing [attr1:type, attr2:type]
|
7
7
|
|
8
8
|
This will create:
|
9
|
-
app/commands/thing_create_command.rb
|
10
|
-
app/commands/thing_update_command.rb
|
11
|
-
app/commands/thing_delete_command.rb
|
12
9
|
app/controllers/things_controller
|
13
|
-
app/
|
14
|
-
app/
|
15
|
-
app/
|
16
|
-
|
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
|
17
19
|
app/models/thing.rb
|
18
|
-
app/
|
20
|
+
app/helpers/things_helper.rb
|
21
|
+
app/views/things/_eventstream.js.erb
|
19
22
|
app/views/things/_form.html.erb
|
20
23
|
app/views/things/edit.html.erb
|
21
24
|
app/views/things/index.html.erb
|
22
25
|
app/views/things/new.html.erb
|
23
26
|
app/views/things/show.html.erb
|
24
|
-
db/migrate/create_thing.rb
|
25
|
-
db/migrate_domain/create_thing.rb
|
26
|
-
domain/command_processors/thing_processor.rb
|
27
27
|
a resource route
|
@@ -1,18 +1,26 @@
|
|
1
|
+
require 'generators/drails/processor_name.rb'
|
2
|
+
require 'generators/drails/domain.rb'
|
3
|
+
|
1
4
|
module Drails
|
2
5
|
module Generators
|
3
6
|
class ScaffoldGenerator < Rails::Generators::NamedBase
|
4
7
|
source_root File.expand_path('../templates', __FILE__)
|
5
8
|
argument :attributes, type: :array, default: [], banner: "field[:type] field[:type]"
|
9
|
+
include ProcessorName
|
10
|
+
include Domain
|
6
11
|
|
7
12
|
def create_models
|
8
|
-
generate 'drails:model', name,
|
13
|
+
generate 'drails:model', name, attr_string
|
9
14
|
end
|
10
15
|
|
11
16
|
def create_commands
|
12
17
|
%w(create update delete).each do |action|
|
13
18
|
attr_arg = attributes_names.join(' ') unless action == 'delete'
|
14
|
-
command = "#{
|
15
|
-
|
19
|
+
command = (class_path + ["#{action}_#{file_name}"]) * '/'
|
20
|
+
event_arg = "--event=" + (class_path + ["#{action}d_#{file_name}"]) * '/'
|
21
|
+
processor_arg = "--processor=#{processor_name}"
|
22
|
+
processor_arg = "--skip-processor" if skip_processor?
|
23
|
+
generate 'drails:command', command, attr_arg, processor_arg, event_arg
|
16
24
|
add_to_projections(action)
|
17
25
|
end
|
18
26
|
end
|
@@ -20,11 +28,19 @@ module Drails
|
|
20
28
|
def add_to_command_processor
|
21
29
|
content = "
|
22
30
|
command.id = ActiveDomain::UniqueCommandIdRepository.new_for command.class.name"
|
23
|
-
inject_into_file File.join('domain
|
31
|
+
inject_into_file File.join('domain/command_processors', domain_class_path, "#{processor_file_name}_processor.rb"), content, after: /(\s)*process(\s)*(.)*CreateCommand(.)*/
|
24
32
|
end
|
25
33
|
|
26
|
-
def
|
27
|
-
|
34
|
+
def add_routes
|
35
|
+
routing_code = ""
|
36
|
+
class_path.each_with_index do |ns, i|
|
37
|
+
add_line_with_indent routing_code, (i + 1), "namespace :#{ns} do"
|
38
|
+
end
|
39
|
+
add_line_with_indent routing_code, (class_path.length + 1), "resources :#{plural_name}"
|
40
|
+
class_path.each_with_index do |ns, i|
|
41
|
+
add_line_with_indent routing_code, (class_path.length - i), "end"
|
42
|
+
end
|
43
|
+
route routing_code[2..-1]
|
28
44
|
end
|
29
45
|
|
30
46
|
def create_controller
|
@@ -32,45 +48,40 @@ module Drails
|
|
32
48
|
end
|
33
49
|
|
34
50
|
def copy_event_stream_client
|
35
|
-
copy_file '_eventstream.js.erb', File.join('app',
|
51
|
+
copy_file '_eventstream.js.erb', File.join('app/views', class_path, plural_file_name, '_eventstream.js.erb')
|
36
52
|
end
|
37
53
|
|
38
|
-
def
|
54
|
+
def add_event_stream_client_to_views
|
39
55
|
include_text = '<%= javascript_tag render partial: \'eventstream\', formats: [:js], locals: {event_id: @event_id} %>'
|
40
|
-
prepend_to_file File.join('app',
|
41
|
-
prepend_to_file File.join('app',
|
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
|
42
58
|
end
|
43
59
|
|
44
60
|
private
|
61
|
+
|
45
62
|
def attr_string
|
46
63
|
@attr_string ||= attributes.map { |x| "#{x.name}:#{x.type}" }.join(' ')
|
47
64
|
end
|
48
65
|
|
49
66
|
def add_to_projections(action)
|
67
|
+
event_func = (class_path + ["#{action}d_#{file_name}_event"]) * '__'
|
50
68
|
content = "
|
51
69
|
|
52
|
-
def #{
|
70
|
+
def #{event_func}(event)
|
53
71
|
#{method_bodies[action]}
|
54
72
|
end"
|
55
|
-
inject_into_file File.join('app
|
73
|
+
inject_into_file File.join('app/projections', class_path, "#{plural_file_name}_projection.rb"), content, after: /(\s)*include(\s)*ActiveProjection::ProjectionType/
|
56
74
|
end
|
57
75
|
|
58
76
|
def method_bodies
|
59
77
|
{
|
60
|
-
'create' => "#{
|
61
|
-
'update' => "#{
|
62
|
-
'delete' => "#{
|
78
|
+
'create' => "#{class_name}.create! event.values.merge(id: event.id)",
|
79
|
+
'update' => "#{class_name}.find(event.id).update! event.values",
|
80
|
+
'delete' => "#{class_name}.find(event.id).destroy!",
|
63
81
|
}
|
64
82
|
end
|
65
|
-
|
66
|
-
|
67
|
-
namespace_path = Array.new class_path
|
68
|
-
if namespace_path.empty?
|
69
|
-
namespace_path[0] = 'domain'
|
70
|
-
else
|
71
|
-
namespace_path[-1] += '_domain'
|
72
|
-
end
|
73
|
-
namespace_path
|
83
|
+
def add_line_with_indent(target, indent, str)
|
84
|
+
target << "#{" " * indent}#{str}\n"
|
74
85
|
end
|
75
86
|
end
|
76
87
|
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'active_support/concern'
|
2
|
+
require 'generators/drails/domain.rb'
|
3
|
+
|
4
|
+
module Drails
|
5
|
+
module Generators
|
6
|
+
module UseDomainOption
|
7
|
+
extend ActiveSupport::Concern
|
8
|
+
|
9
|
+
include Domain
|
10
|
+
|
11
|
+
included do
|
12
|
+
class_option :domain, type: :boolean, default: false, desc: "generate for the domain"
|
13
|
+
end
|
14
|
+
|
15
|
+
protected
|
16
|
+
|
17
|
+
def use_domain?
|
18
|
+
options[:domain]
|
19
|
+
end
|
20
|
+
|
21
|
+
def use_domain(file_name)
|
22
|
+
if use_domain?
|
23
|
+
"domain_#{file_name}"
|
24
|
+
else
|
25
|
+
file_name
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def use_domain_class_path
|
30
|
+
if use_domain?
|
31
|
+
domain_class_path
|
32
|
+
else
|
33
|
+
class_path
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def use_domain_base_path
|
38
|
+
if use_domain?
|
39
|
+
'domain'
|
40
|
+
else
|
41
|
+
'app'
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def use_domain_class_file_path(type, file_name)
|
46
|
+
File.join use_domain_base_path, type, use_domain_class_path, file_name
|
47
|
+
end
|
48
|
+
|
49
|
+
def use_domain_param
|
50
|
+
'--domain' if use_domain?
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'rails-disco/railtie' if defined?(Rails)
|
data/lib/rails-disco/version.rb
CHANGED
data/lib/tasks/db.rake
CHANGED
@@ -2,108 +2,122 @@ require 'yaml'
|
|
2
2
|
require 'logger'
|
3
3
|
require 'active_record'
|
4
4
|
|
5
|
-
namespace :
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
5
|
+
namespace :drails do
|
6
|
+
namespace :db do
|
7
|
+
def create_database(config)
|
8
|
+
options = {:charset => 'utf8', :collation => 'utf8_unicode_ci'}
|
9
|
+
|
10
|
+
create_db = lambda do |config|
|
11
|
+
ActiveRecord::Base.establish_connection config.merge('database' => nil)
|
12
|
+
ActiveRecord::Base.connection.create_database config['database'], options
|
13
|
+
ActiveRecord::Base.establish_connection config
|
14
|
+
end
|
14
15
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
16
|
+
begin
|
17
|
+
create_db.call config
|
18
|
+
rescue Mysql::Error => sqlerr
|
19
|
+
if sqlerr.errno == 1405
|
20
|
+
print "#{sqlerr.error}. \nPlease provide the root password for your mysql installation\n>"
|
21
|
+
root_password = $stdin.gets.strip
|
21
22
|
|
22
|
-
|
23
|
+
grant_statement = <<-SQL
|
23
24
|
GRANT ALL PRIVILEGES ON #{config['database']}.*
|
24
25
|
TO '#{config['username']}'@'localhost'
|
25
26
|
IDENTIFIED BY '#{config['password']}' WITH GRANT OPTION;
|
26
|
-
|
27
|
+
SQL
|
28
|
+
|
29
|
+
create_db.call config.merge('database' => nil, 'username' => 'root', 'password' => root_password)
|
30
|
+
else
|
31
|
+
$stderr.puts sqlerr.error
|
32
|
+
$stderr.puts "Couldn't create database for #{config.inspect}, charset: utf8, collation: utf8_unicode_ci"
|
33
|
+
$stderr.puts "(if you set the charset manually, make sure you have a matching collation)" if config['charset']
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
27
37
|
|
28
|
-
|
38
|
+
task :db_env do
|
39
|
+
DATABASE_ENV = ENV['DATABASE_ENV'] || 'development'
|
40
|
+
end
|
41
|
+
|
42
|
+
task :environment => :db_env do
|
43
|
+
if ENV['ENV'] == 'domain'
|
44
|
+
@migration_dir = ENV['MIGRATIONS_DIR'] || 'db/migrate_domain'
|
45
|
+
@env = 'domain'
|
29
46
|
else
|
30
|
-
|
31
|
-
|
32
|
-
$stderr.puts "(if you set the charset manually, make sure you have a matching collation)" if config['charset']
|
47
|
+
@migration_dir = ENV['MIGRATIONS_DIR'] || 'db/migrate'
|
48
|
+
@env = 'projection'
|
33
49
|
end
|
34
50
|
end
|
35
|
-
end
|
36
|
-
|
37
|
-
task :db_env do
|
38
|
-
DATABASE_ENV = ENV['DATABASE_ENV'] || 'development'
|
39
|
-
end
|
40
51
|
|
41
|
-
|
42
|
-
|
43
|
-
@migration_dir = ENV['MIGRATIONS_DIR'] || 'db/migrate_domain'
|
44
|
-
else
|
45
|
-
@migration_dir = ENV['MIGRATIONS_DIR'] || 'db/migrate'
|
52
|
+
task :configuration => :environment do
|
53
|
+
@config = YAML.load_file("config/disco.yml")[DATABASE_ENV]["#{@env}_database"]
|
46
54
|
end
|
47
|
-
end
|
48
55
|
|
49
|
-
|
50
|
-
|
51
|
-
|
56
|
+
task :configure_connection => :configuration do
|
57
|
+
ActiveRecord::Base.establish_connection @config
|
58
|
+
ActiveRecord::Base.logger = Logger.new STDOUT if @config['logger']
|
59
|
+
end
|
52
60
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
61
|
+
desc 'Create the database from config/disco.yml for the current DATABASE_ENV (options: ENV=(projection|domain))'
|
62
|
+
task :create => :configure_connection do
|
63
|
+
create_database @config
|
64
|
+
end
|
57
65
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
66
|
+
desc 'Drops the database for the current DATABASE_ENV (options: ENV=(projection|domain))'
|
67
|
+
task :drop => :configure_connection do
|
68
|
+
ActiveRecord::Base.connection.drop_database @config['database']
|
69
|
+
end
|
62
70
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
71
|
+
desc 'Rolls the schema back to the previous version (specify steps w/ STEP=n) (options: ENV=(projection|domain)).'
|
72
|
+
task :rollback => :configure_connection do
|
73
|
+
step = ENV['STEP'] ? ENV['STEP'].to_i : 1
|
74
|
+
ActiveRecord::Migrator.rollback @migration_dir, step
|
75
|
+
end
|
67
76
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
end
|
77
|
+
desc 'Retrieves the current schema version number'
|
78
|
+
task :version => :configure_connection do
|
79
|
+
puts "Current version: #{ActiveRecord::Migrator.current_version}"
|
80
|
+
end
|
73
81
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
82
|
+
desc 'Copys the migrations files from the gems directories (options: ENV=(projection|domain))'
|
83
|
+
task :copy_migrations => :environment do
|
84
|
+
if @env == 'domain'
|
85
|
+
cp_r Gem::Specification.find_by_name('active_event').gem_dir + '/db/migrate/.', @migration_dir
|
86
|
+
cp_r Gem::Specification.find_by_name('active_domain').gem_dir + '/db/migrate/.', @migration_dir
|
87
|
+
else
|
88
|
+
cp_r Gem::Specification.find_by_name('active_projection').gem_dir + '/db/migrate/.', @migration_dir
|
89
|
+
end
|
90
|
+
end
|
79
91
|
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
92
|
+
desc 'Migrates the database (options: VERSION=x, ENV=(projection|domain))'
|
93
|
+
task :migrate => :configure_connection do
|
94
|
+
ActiveRecord::Migration.verbose = true
|
95
|
+
ActiveRecord::Migrator.migrate @migration_dir, ENV['VERSION'] ? ENV['VERSION'].to_i : nil
|
96
|
+
end
|
84
97
|
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
end
|
98
|
+
desc 'Copys the domain migrations and migrates the domain database'
|
99
|
+
task :setup_domain do
|
100
|
+
ENV['ENV'] = 'domain'
|
101
|
+
Rake::Task[:'drails:db:copy_migrations'].invoke
|
102
|
+
Rake::Task[:'drails:db:migrate'].invoke
|
103
|
+
end
|
92
104
|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
105
|
+
desc 'Copys the projection migrations and migrates the projection database'
|
106
|
+
task :setup_projection do
|
107
|
+
ENV['ENV'] = 'projection'
|
108
|
+
Rake::Task[:'drails:db:copy_migrations'].invoke
|
109
|
+
Rake::Task[:'drails:db:migrate'].invoke
|
110
|
+
end
|
99
111
|
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
112
|
+
desc 'Copys the gem migrations and migrates the domain and the projection database after'
|
113
|
+
task :setup do
|
114
|
+
Rake::Task[:'drails:db:setup_domain'].invoke
|
115
|
+
Rake::Task[:'drails:db:environment'].reenable
|
116
|
+
Rake::Task[:'drails:db:configure_connection'].reenable
|
117
|
+
Rake::Task[:'drails:db:configuration'].reenable
|
118
|
+
Rake::Task[:'drails:db:migrate'].reenable
|
119
|
+
Rake::Task[:'drails:db:copy_migrations'].reenable
|
120
|
+
Rake::Task[:'drails:db:setup_projection'].invoke
|
121
|
+
end
|
108
122
|
end
|
109
123
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: drailties
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Kranz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-10-
|
11
|
+
date: 2013-10-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: active_event
|
@@ -16,42 +16,42 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.3.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
26
|
+
version: 0.3.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: active_domain
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: 0.3.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
40
|
+
version: 0.3.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: active_projection
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - '='
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.
|
47
|
+
version: 0.3.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - '='
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
54
|
+
version: 0.3.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rails
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -67,7 +67,7 @@ dependencies:
|
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 4.0.0
|
69
69
|
description: 'Internals: rake tasks, generators, commandline interface'
|
70
|
-
email:
|
70
|
+
email: rails-disco@hicknhack-software.com
|
71
71
|
executables:
|
72
72
|
- drails
|
73
73
|
extensions: []
|
@@ -77,11 +77,9 @@ files:
|
|
77
77
|
- lib/drails/domainserver.rb
|
78
78
|
- lib/drails/generate.rb
|
79
79
|
- lib/drails/projectionserver.rb
|
80
|
-
- lib/drails/rake.rb
|
81
80
|
- lib/drails/server/domain_server.rb
|
82
81
|
- lib/drails/server/projection_servers.rb
|
83
82
|
- lib/drails/server.rb
|
84
|
-
- lib/drailties.rb
|
85
83
|
- lib/generators/drails/app/app_generator.rb
|
86
84
|
- lib/generators/drails/app/templates/build_validations_registry.rb
|
87
85
|
- lib/generators/drails/app/templates/create_domain.rb
|
@@ -99,6 +97,8 @@ files:
|
|
99
97
|
- lib/generators/drails/controller/templates/controller.rb
|
100
98
|
- lib/generators/drails/controller/templates/controller_test.rb
|
101
99
|
- lib/generators/drails/controller/USAGE
|
100
|
+
- lib/generators/drails/domain.rb
|
101
|
+
- lib/generators/drails/event_name.rb
|
102
102
|
- lib/generators/drails/migration/migration_generator.rb
|
103
103
|
- lib/generators/drails/migration/templates/create_table_migration.rb
|
104
104
|
- lib/generators/drails/migration/USAGE
|
@@ -106,6 +106,7 @@ files:
|
|
106
106
|
- lib/generators/drails/model/templates/domain_model.rb
|
107
107
|
- lib/generators/drails/model/templates/model.rb
|
108
108
|
- lib/generators/drails/model/USAGE
|
109
|
+
- lib/generators/drails/processor_name.rb
|
109
110
|
- lib/generators/drails/projection/projection_generator.rb
|
110
111
|
- lib/generators/drails/projection/templates/domain_projection.rb
|
111
112
|
- lib/generators/drails/projection/templates/domain_projection_test.rb
|
@@ -115,6 +116,9 @@ files:
|
|
115
116
|
- lib/generators/drails/scaffold/scaffold_generator.rb
|
116
117
|
- lib/generators/drails/scaffold/templates/_eventstream.js.erb
|
117
118
|
- lib/generators/drails/scaffold/USAGE
|
119
|
+
- lib/generators/drails/use_domain_option.rb
|
120
|
+
- lib/rails-disco/railtie.rb
|
121
|
+
- lib/rails-disco/tasks.rb
|
118
122
|
- lib/rails-disco/version.rb
|
119
123
|
- lib/tasks/db.rake
|
120
124
|
- lib/tasks/split.rake
|
data/lib/drails/rake.rb
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
# Run rake tasks from my_gem once it's installed.
|
2
|
-
#
|
3
|
-
# Example:
|
4
|
-
# my_gem rake some-task
|
5
|
-
# my_gem rake some-task[args]
|
6
|
-
#
|
7
|
-
# Author:: N David Brown
|
8
|
-
gem_dir = File.expand_path("..", File.dirname(__FILE__))
|
9
|
-
$LOAD_PATH.unshift gem_dir # Look in gem directory for resources first.
|
10
|
-
require 'rake'
|
11
|
-
require 'pp'
|
12
|
-
pwd = Dir.pwd
|
13
|
-
Dir.chdir(gem_dir) # We'll load rakefile from the gem's dir.
|
14
|
-
Rake.application.init
|
15
|
-
Rake.application.load_rakefile
|
16
|
-
Dir.chdir(pwd) # Revert to original pwd for any path args passed to task.
|
17
|
-
Rake.application.invoke_task(ARGV.first)
|
data/lib/drailties.rb
DELETED