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