rails_artifactor 0.5.0 → 0.5.1
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.
- data/VERSION +1 -1
- data/lib/rails_artifactor/artifact/asset_artifact.rb +120 -0
- data/lib/rails_artifactor/artifact/base.rb +9 -9
- data/lib/rails_artifactor/artifact/crud.rb +6 -6
- data/lib/rails_artifactor/artifact/crud/create.rb +2 -2
- data/lib/rails_artifactor/artifact/crud/delete.rb +13 -13
- data/lib/rails_artifactor/artifact/crud/update.rb +5 -5
- data/lib/rails_artifactor/artifact/file_name/artifacts.rb +4 -4
- data/lib/rails_artifactor/artifact/file_name/asset.rb +176 -0
- data/lib/rails_artifactor/artifact/file_name/view.rb +42 -42
- data/lib/rails_artifactor/artifact/markers.rb +24 -25
- data/lib/rails_artifactor/artifact/orm.rb +5 -5
- data/lib/rails_artifactor/artifact/orm/active_record.rb +2 -2
- data/lib/rails_artifactor/artifact/orm/data_mapper.rb +2 -2
- data/lib/rails_artifactor/artifact/orm/mongo_mapper.rb +4 -4
- data/lib/rails_artifactor/artifact/orm/mongoid.rb +2 -2
- data/lib/rails_artifactor/artifact/orm/none.rb +1 -1
- data/lib/rails_artifactor/artifact/view_artifact.rb +11 -11
- data/lib/rails_artifactor/base/crud/create.rb +14 -14
- data/lib/rails_artifactor/base/crud/delete.rb +10 -10
- data/lib/rails_artifactor/base/crud/update.rb +21 -21
- data/lib/rails_artifactor/base/file_name.rb +12 -12
- data/lib/rails_artifactor/template_language/base.rb +3 -3
- data/lib/rails_artifactor/template_language/erb.rb +4 -4
- data/lib/rails_artifactor/template_language/haml.rb +5 -6
- data/lib/rails_artifactor/template_language/slim.rb +5 -5
- data/rails_artifactor.gemspec +13 -10
- data/spec/rails_artifactor/artifact/crud/asset_spec.rb +56 -0
- data/spec/rails_artifactor/artifact/crud/view_controller_action_spec.rb +12 -12
- data/spec/rails_artifactor/artifact/crud/view_file_spec.rb +6 -6
- metadata +17 -14
@@ -1,10 +1,10 @@
|
|
1
1
|
module RailsAssist::Artifact
|
2
|
-
module View
|
2
|
+
module View
|
3
3
|
module FileName
|
4
4
|
DIR = RailsAssist::Artifact::Directory
|
5
5
|
|
6
6
|
module Helper
|
7
|
-
def default_template_lang
|
7
|
+
def default_template_lang
|
8
8
|
get_type :erb
|
9
9
|
end
|
10
10
|
|
@@ -17,17 +17,17 @@ module RailsAssist::Artifact
|
|
17
17
|
else
|
18
18
|
type
|
19
19
|
end
|
20
|
-
end
|
20
|
+
end
|
21
21
|
|
22
22
|
def get_view_type type
|
23
23
|
get_type(type.empty? ? default_template_lang : type)
|
24
|
-
end
|
25
|
-
|
26
|
-
def filename_type str
|
24
|
+
end
|
25
|
+
|
26
|
+
def filename_type str
|
27
27
|
str.split('.')[1..-1].join('.')
|
28
28
|
end
|
29
|
-
|
30
|
-
def filename_name str
|
29
|
+
|
30
|
+
def filename_name str
|
31
31
|
str.gsub /\.(.*)/, ''
|
32
32
|
end
|
33
33
|
end
|
@@ -39,19 +39,19 @@ module RailsAssist::Artifact
|
|
39
39
|
views_path = options[:views_path]
|
40
40
|
views_path ||= File.join(root_path, 'app/views') if root_path
|
41
41
|
File.expand_path File.join(views_path || DIR.view_dirpath, folder.to_s, "#{action}.#{type}")
|
42
|
-
end
|
43
|
-
|
42
|
+
end
|
43
|
+
|
44
44
|
def get_view_args *args
|
45
45
|
args = args.flatten
|
46
46
|
raise ArgumentError, "view_file_name must be called with one or more arguments to return a view file" if args.size == 0
|
47
47
|
case args.size
|
48
|
-
when 1
|
48
|
+
when 1
|
49
49
|
SingleArg.get_view_args *args
|
50
50
|
else
|
51
|
-
TwoArgs.get_view_args *args
|
52
|
-
end
|
51
|
+
TwoArgs.get_view_args *args
|
52
|
+
end
|
53
53
|
end
|
54
|
-
end
|
54
|
+
end
|
55
55
|
|
56
56
|
module SingleArg
|
57
57
|
def self.get_view_args *args
|
@@ -59,20 +59,20 @@ module RailsAssist::Artifact
|
|
59
59
|
arg = args.first
|
60
60
|
case arg
|
61
61
|
when Hash
|
62
|
-
# view_file(:person => :show).should == /views\/person\/show\.html\.erb/
|
63
|
-
return HashArg.get_view_args arg if arg.keys.size == 1
|
64
|
-
# view_file(:folder => 'person', :type => :show).should == /views\/person\/show\.html\.erb/
|
62
|
+
# view_file(:person => :show).should == /views\/person\/show\.html\.erb/
|
63
|
+
return HashArg.get_view_args arg if arg.keys.size == 1
|
64
|
+
# view_file(:folder => 'person', :type => :show).should == /views\/person\/show\.html\.erb/
|
65
65
|
HashArgs.get_view_args *args
|
66
|
-
when Symbol, String
|
66
|
+
when Symbol, String
|
67
67
|
TwoArgs.get_view_args *args
|
68
|
-
end
|
68
|
+
end
|
69
69
|
end
|
70
|
-
|
70
|
+
|
71
71
|
module HashArg
|
72
72
|
extend RailsAssist::Artifact::View::FileName::Helper
|
73
|
-
|
74
|
-
# view_file(:person => :show).should == /views\/person\/show\.html\.erb/
|
75
|
-
def self.get_view_args one_hash
|
73
|
+
|
74
|
+
# view_file(:person => :show).should == /views\/person\/show\.html\.erb/
|
75
|
+
def self.get_view_args one_hash
|
76
76
|
folder = one_hash.keys.first.to_s
|
77
77
|
filename = one_hash.values.first.to_s
|
78
78
|
action = filename_name filename
|
@@ -85,18 +85,18 @@ module RailsAssist::Artifact
|
|
85
85
|
extend RailsAssist::Artifact::View::FileName::Helper
|
86
86
|
|
87
87
|
DIR = RailsAssist::Artifact::Directory
|
88
|
-
|
88
|
+
|
89
89
|
# view_file(:folder => 'person', :action => :show, :type => :erb).should == /views\/person\/show\.html\.erb/
|
90
90
|
def self.get_view_args hash
|
91
91
|
try_folder = hash.keys.first
|
92
92
|
try_view_folder = File.expand_path(File.join(DIR.view_dir, try_folder.to_s))
|
93
93
|
if File.directory? try_view_folder
|
94
|
-
folder = try_folder
|
94
|
+
folder = try_folder
|
95
95
|
action = hash.values.first
|
96
96
|
else
|
97
|
-
folder = hash[:folder]
|
98
|
-
action = hash[:action]
|
99
|
-
end
|
97
|
+
folder = hash[:folder]
|
98
|
+
action = hash[:action] || hash[:name]
|
99
|
+
end
|
100
100
|
type = get_view_type(hash[:type])
|
101
101
|
[folder, action, type]
|
102
102
|
end
|
@@ -105,8 +105,8 @@ module RailsAssist::Artifact
|
|
105
105
|
module StringArg
|
106
106
|
extend RailsAssist::Artifact::View::FileName::Helper
|
107
107
|
|
108
|
-
# view_file('person/show').should == /views\/person\/show\.html\.erb/
|
109
|
-
def self.get_view_args string
|
108
|
+
# view_file('person/show').should == /views\/person\/show\.html\.erb/
|
109
|
+
def self.get_view_args string
|
110
110
|
path_lvs = string.split('/')
|
111
111
|
raise ArgumentError, "view must be in a subfolder #{args}" if path_lvs.size < 2
|
112
112
|
folder = path_lvs[0..-2].join('/')
|
@@ -118,7 +118,7 @@ module RailsAssist::Artifact
|
|
118
118
|
end
|
119
119
|
end
|
120
120
|
|
121
|
-
module TwoArgs
|
121
|
+
module TwoArgs
|
122
122
|
def self.get_view_args *args
|
123
123
|
args = args.flatten
|
124
124
|
arg2 = args[1]
|
@@ -130,27 +130,27 @@ module RailsAssist::Artifact
|
|
130
130
|
when Hash
|
131
131
|
# view_file(:show, :folder => 'person', :type => :erb).should == /views\/person\/show\.html\.erb/
|
132
132
|
ActionAndHash.get_view_args args
|
133
|
-
end
|
133
|
+
end
|
134
134
|
end
|
135
|
-
|
135
|
+
|
136
136
|
module TwoLabels
|
137
137
|
extend RailsAssist::Artifact::View::FileName::Helper
|
138
138
|
|
139
139
|
# view_file(:person, :show).should == /views\/person\/show\.html\.erb/
|
140
140
|
# view_file('person/admin', :show, :type => :erb).should == /views\/person\/show\.html\.erb/
|
141
141
|
def self.get_view_args *args
|
142
|
-
args = args.flatten
|
142
|
+
args = args.flatten
|
143
143
|
folder = args.first.to_s
|
144
144
|
action = args[1].to_s
|
145
|
-
hash = args[2] if args.size > 2
|
145
|
+
hash = args[2] if args.size > 2
|
146
146
|
type = get_view_type(hash ? hash[:type] : nil)
|
147
147
|
[folder, action, type]
|
148
|
-
end
|
148
|
+
end
|
149
149
|
end
|
150
150
|
|
151
151
|
module ActionAndHash
|
152
152
|
extend RailsAssist::Artifact::View::FileName::Helper
|
153
|
-
|
153
|
+
|
154
154
|
# view_file(:show, :folder => 'person', :type => :erb).should == /views\/person\/show\.html\.erb/
|
155
155
|
def self.get_view_args *args
|
156
156
|
args = args.flatten
|
@@ -159,13 +159,13 @@ module RailsAssist::Artifact
|
|
159
159
|
hash = args.last
|
160
160
|
folder = hash[:folder]
|
161
161
|
type = get_view_type(hash[:type])
|
162
|
-
|
162
|
+
|
163
163
|
[folder, action, type]
|
164
|
-
end
|
165
|
-
end
|
164
|
+
end
|
165
|
+
end
|
166
166
|
end
|
167
|
-
|
167
|
+
|
168
168
|
include FileName
|
169
169
|
extend FileName
|
170
170
|
end
|
171
|
-
end
|
171
|
+
end
|
@@ -1,21 +1,21 @@
|
|
1
1
|
module RailsAssist::Artifact
|
2
2
|
module Marker
|
3
3
|
def marker name, type, options=nil
|
4
|
-
method = "#{type}_marker"
|
4
|
+
method = "#{type}_marker"
|
5
5
|
raise "No such marker method in this context: #{self}, ##{method}" if !respond_to? method
|
6
|
-
send method, name, options
|
6
|
+
send method, name, options
|
7
7
|
end
|
8
8
|
end
|
9
|
-
|
9
|
+
|
10
10
|
module Controller
|
11
11
|
def controller_marker name, options=nil
|
12
12
|
"#{name.to_s.camelize}Controller < ActionController::Base"
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
extend self
|
16
16
|
end
|
17
17
|
|
18
|
-
module Helper
|
18
|
+
module Helper
|
19
19
|
def helper_marker name, options=nil
|
20
20
|
"#{name.to_s.camelize}Helper"
|
21
21
|
end
|
@@ -26,48 +26,47 @@ module RailsAssist::Artifact
|
|
26
26
|
module Permit
|
27
27
|
def permit_marker name, options=nil
|
28
28
|
"#{name.to_s.camelize}Permit < Permit::Base"
|
29
|
-
end
|
30
|
-
|
31
|
-
extend self
|
29
|
+
end
|
30
|
+
|
31
|
+
extend self
|
32
32
|
end
|
33
|
-
|
33
|
+
|
34
34
|
module Mailer
|
35
35
|
def mailer_marker name, options=nil
|
36
36
|
"#{name.to_s.camelize}Mailer < ActionMailer::Base"
|
37
37
|
end
|
38
|
-
|
39
|
-
extend self
|
40
|
-
end
|
38
|
+
|
39
|
+
extend self
|
40
|
+
end
|
41
41
|
|
42
42
|
module Observer
|
43
43
|
def observer_marker name, options=nil
|
44
44
|
"#{name.to_s.camelize}Observer < ActiveRecord::Observer"
|
45
45
|
end
|
46
|
-
|
46
|
+
|
47
47
|
extend self
|
48
48
|
end
|
49
49
|
|
50
50
|
module Migration
|
51
51
|
def migration_marker name, options=nil
|
52
52
|
"#{name.to_s.camelize} < ActiveRecord::Migration"
|
53
|
-
end
|
54
|
-
|
53
|
+
end
|
54
|
+
|
55
55
|
extend self
|
56
56
|
end
|
57
|
-
|
58
|
-
module Model
|
59
|
-
include RailsAssist::BaseHelper
|
60
|
-
|
57
|
+
|
58
|
+
module Model
|
59
|
+
include RailsAssist::BaseHelper
|
60
|
+
|
61
61
|
def model_marker name, options={}
|
62
62
|
return send :orm_marker_name, name, options if respond_to?(:orm_marker_name)
|
63
|
-
name.to_s.camelize
|
63
|
+
name.to_s.camelize
|
64
64
|
end
|
65
|
-
|
65
|
+
|
66
66
|
def orm_notify
|
67
67
|
". You must specify an ORM with the macro use_orm, f.ex -- use_orm :active_record"
|
68
|
-
end
|
69
|
-
|
70
|
-
extend self
|
68
|
+
end
|
69
|
+
|
70
|
+
extend self
|
71
71
|
end
|
72
|
-
|
73
72
|
end
|
@@ -42,14 +42,14 @@ end}
|
|
42
42
|
%Q{#{clazz name} < #{module_name}
|
43
43
|
#{yield if block}
|
44
44
|
end}
|
45
|
-
end
|
46
|
-
|
45
|
+
end
|
46
|
+
|
47
47
|
def field name, type = nil
|
48
48
|
return "#{field_name} :#{name}, #{type}" if type
|
49
49
|
"#{field_name} :#{name}"
|
50
|
-
end
|
50
|
+
end
|
51
51
|
end
|
52
52
|
end
|
53
53
|
end
|
54
|
-
|
55
|
-
require_all File.dirname(__FILE__) + '/orm'
|
54
|
+
|
55
|
+
require_all File.dirname(__FILE__) + '/orm'
|
@@ -6,9 +6,9 @@ module RailsAssist::Orm
|
|
6
6
|
'ActiveRecord::Base'
|
7
7
|
end
|
8
8
|
|
9
|
-
def new_model_content name, options={}, &block
|
9
|
+
def new_model_content name, options={}, &block
|
10
10
|
content = block ? yield : options[:content]
|
11
11
|
file_w_inherit(name, orm_marker_name(name, options)) { content }
|
12
12
|
end
|
13
13
|
end
|
14
|
-
end
|
14
|
+
end
|
@@ -10,7 +10,7 @@ module RailsAssist::Orm
|
|
10
10
|
"#{orm_name}::Resource"
|
11
11
|
end
|
12
12
|
|
13
|
-
def new_model_content name, options={}, &block
|
13
|
+
def new_model_content name, options={}, &block
|
14
14
|
content = block ? yield : options[:content]
|
15
15
|
file_w_include(name, orm_marker_name(name, options)) { content }
|
16
16
|
end
|
@@ -19,4 +19,4 @@ module RailsAssist::Orm
|
|
19
19
|
'property'
|
20
20
|
end
|
21
21
|
end
|
22
|
-
end
|
22
|
+
end
|
@@ -4,9 +4,9 @@ module RailsAssist::Orm
|
|
4
4
|
|
5
5
|
def orm_name
|
6
6
|
'MongoMapper'
|
7
|
-
end
|
8
|
-
|
9
|
-
def new_model_content name, options={}, &block
|
7
|
+
end
|
8
|
+
|
9
|
+
def new_model_content name, options={}, &block
|
10
10
|
content = block ? yield : options[:content]
|
11
11
|
file_w_include(name, orm_marker_name(name, options)) { content }
|
12
12
|
end
|
@@ -15,4 +15,4 @@ module RailsAssist::Orm
|
|
15
15
|
'key'
|
16
16
|
end
|
17
17
|
end
|
18
|
-
end
|
18
|
+
end
|
@@ -10,7 +10,7 @@ module RailsAssist::Orm
|
|
10
10
|
'field'
|
11
11
|
end
|
12
12
|
|
13
|
-
def new_model_content name, options={}, &block
|
13
|
+
def new_model_content name, options={}, &block
|
14
14
|
content = block ? yield : options[:content]
|
15
15
|
file_w_include(name, orm_marker_name(name, options)) { content }
|
16
16
|
end
|
@@ -20,4 +20,4 @@ module RailsAssist::Orm
|
|
20
20
|
"#{field_name} :#{name}"
|
21
21
|
end
|
22
22
|
end
|
23
|
-
end
|
23
|
+
end
|
@@ -8,7 +8,7 @@ module RailsAssist::Orm
|
|
8
8
|
name.to_s.camelize
|
9
9
|
end
|
10
10
|
|
11
|
-
def new_model_content name, options={}, &block
|
11
|
+
def new_model_content name, options={}, &block
|
12
12
|
content = block ? yield : options[:content]
|
13
13
|
simple_file(name, orm_marker_name(name, options)) { content }
|
14
14
|
end
|
@@ -19,25 +19,25 @@ module RailsAssist::Artifact
|
|
19
19
|
def view_file *args
|
20
20
|
view_file_name(args)
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
# CREATE
|
24
24
|
def create_view *args, &block
|
25
|
-
file_name = view_file_name(args)
|
25
|
+
file_name = view_file_name(args)
|
26
26
|
dir = File.dirname(file_name)
|
27
27
|
FileUtils.mkdir_p dir if !File.directory?(dir)
|
28
28
|
|
29
29
|
content = get_view_content(args) || yield if block
|
30
|
-
|
30
|
+
|
31
31
|
# abort if no content given
|
32
32
|
debug "Warning: Content must be passed in either as a :content hash or a block" if !content
|
33
33
|
return nil if !content
|
34
34
|
|
35
35
|
debug "Writing view file: #{file_name}"
|
36
36
|
# write file content of view
|
37
|
-
File.open(file_name, 'w') do |f|
|
38
|
-
f.puts content
|
37
|
+
File.open(file_name, 'w') do |f|
|
38
|
+
f.puts content
|
39
39
|
end
|
40
|
-
end
|
40
|
+
end
|
41
41
|
|
42
42
|
# READ
|
43
43
|
def read_view *args, &block
|
@@ -53,7 +53,7 @@ module RailsAssist::Artifact
|
|
53
53
|
nil
|
54
54
|
end
|
55
55
|
end
|
56
|
-
|
56
|
+
|
57
57
|
# UPDATE
|
58
58
|
def insert_into_view *args, &block
|
59
59
|
begin
|
@@ -78,7 +78,7 @@ module RailsAssist::Artifact
|
|
78
78
|
def remove_views *args
|
79
79
|
options = last_option args
|
80
80
|
raise ArgumentError, "Missing :folder option in the last argument which must be a Hash" if !options && !options[:folder]
|
81
|
-
args.to_symbols.each{|name| remove_view name, options}
|
81
|
+
args.to_symbols.each{|name| remove_view name, options}
|
82
82
|
end
|
83
83
|
|
84
84
|
def get_view_content args
|
@@ -87,8 +87,8 @@ module RailsAssist::Artifact
|
|
87
87
|
when Hash
|
88
88
|
args.first[:content]
|
89
89
|
end
|
90
|
-
end
|
90
|
+
end
|
91
91
|
|
92
|
-
multi_aliases_for :view
|
92
|
+
multi_aliases_for :view
|
93
93
|
end
|
94
|
-
end
|
94
|
+
end
|
@@ -1,17 +1,17 @@
|
|
1
1
|
require 'rails_artifactor/ruby_mutator'
|
2
2
|
|
3
3
|
module RailsAssist::Artifact::CRUD
|
4
|
-
module Create
|
4
|
+
module Create
|
5
5
|
include RailsAssist::Artifact::Marker
|
6
|
-
|
6
|
+
|
7
7
|
def create_artifact name, options={}, &block
|
8
8
|
type = get_type(options)
|
9
9
|
file = make_file_name(name, type)
|
10
10
|
return nil if File.exist?(file) && options[:no_overwrite]
|
11
11
|
|
12
|
-
create_artifact_dir(file)
|
12
|
+
create_artifact_dir(file)
|
13
13
|
content = get_content(name, type, options, &block)
|
14
|
-
|
14
|
+
|
15
15
|
superclass = options[:superclass] if options[:superclass]
|
16
16
|
|
17
17
|
if superclass
|
@@ -19,14 +19,14 @@ module RailsAssist::Artifact::CRUD
|
|
19
19
|
content.remove_superclass
|
20
20
|
content.inherit_from "#{superclass}_permit"
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
return if content.blank?
|
24
24
|
|
25
|
-
File.overwrite file, content
|
25
|
+
File.overwrite file, content
|
26
26
|
end
|
27
27
|
|
28
28
|
protected
|
29
|
-
|
29
|
+
|
30
30
|
def new_artifact_content name, options = {}, &block
|
31
31
|
type = get_type(options)
|
32
32
|
content = extract_content type, options, &block
|
@@ -36,13 +36,13 @@ end}
|
|
36
36
|
end
|
37
37
|
|
38
38
|
def create_artifact_dir file
|
39
|
-
# make dir
|
39
|
+
# make dir
|
40
40
|
dir = File.dirname(file)
|
41
41
|
FileUtils.mkdir_p dir if !File.directory?(dir)
|
42
42
|
end
|
43
43
|
|
44
|
-
def content_method type
|
45
|
-
method = :"new_#{type}_content"
|
44
|
+
def content_method type
|
45
|
+
method = :"new_#{type}_content"
|
46
46
|
raise "Content method #{content_method} not found #{orm_notify}" if !respond_to?(method)
|
47
47
|
method
|
48
48
|
end
|
@@ -50,13 +50,13 @@ end}
|
|
50
50
|
def extract_content type, options, &block
|
51
51
|
content = block ? yield : options[:content]
|
52
52
|
content = type == :model ? options.merge(:content => content) : content
|
53
|
-
end
|
53
|
+
end
|
54
54
|
|
55
55
|
def get_content name, type, options = {}, &block
|
56
56
|
content = extract_content type, options, &block
|
57
57
|
method = content_method(type)
|
58
58
|
options[:content] = content
|
59
59
|
send method, name, options, &block
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|