erp_tech_svcs 3.1.5 → 3.1.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (29) hide show
  1. data/app/models/file_asset.rb +1 -1
  2. data/lib/erp_tech_svcs/extensions/active_record/protected_with_capabilities.rb +1 -1
  3. data/lib/erp_tech_svcs/file_support/railties/s3_resolver.rb +3 -21
  4. data/lib/erp_tech_svcs/file_support/s3_manager.rb +74 -109
  5. data/lib/erp_tech_svcs/version.rb +1 -1
  6. metadata +5 -50
  7. data/spec/dummy/db/data_migrations/20130220143304_add_usd_currency.erp_base_erp_svcs.rb +0 -12
  8. data/spec/dummy/db/data_migrations/20130220143305_add_iso_codes.erp_base_erp_svcs.rb +0 -19
  9. data/spec/dummy/db/data_migrations/20130220143306_setup_compass_ae_instance.erp_base_erp_svcs.rb +0 -21
  10. data/spec/dummy/db/data_migrations/20130220143307_upgrade_compass_ae_instances_data.erp_base_erp_svcs.rb +0 -19
  11. data/spec/dummy/db/data_migrations/20130220143308_create_capability_scope_types.erp_tech_svcs.rb +0 -15
  12. data/spec/dummy/db/data_migrations/20130220143309_schedule_delete_expired_sessions_job.erp_tech_svcs.rb +0 -16
  13. data/spec/dummy/db/data_migrations/20130220143310_setup_audit_log_types.erp_tech_svcs.rb +0 -22
  14. data/spec/dummy/db/data_migrations/20130220143311_create_group_relationship_and_role_types.erp_tech_svcs.rb +0 -20
  15. data/spec/dummy/db/data_migrations/20130220143312_note_capabilities.erp_tech_svcs.rb +0 -24
  16. data/spec/dummy/db/data_migrations/20130422151256_add_guid_to_instances.erp_base_erp_svcs.rb +0 -10
  17. data/spec/dummy/db/migrate/20130220143259_base_erp_services.erp_base_erp_svcs.rb +0 -486
  18. data/spec/dummy/db/migrate/20130220143260_add_txn_status.erp_base_erp_svcs.rb +0 -37
  19. data/spec/dummy/db/migrate/20130220143261_upgrade_compass_ae_instances.erp_base_erp_svcs.rb +0 -34
  20. data/spec/dummy/db/migrate/20130220143262_base_tech_services.erp_tech_svcs.rb +0 -271
  21. data/spec/dummy/db/migrate/20130220143263_create_has_attribute_tables.erp_tech_svcs.rb +0 -39
  22. data/spec/dummy/db/migrate/20130220143264_create_groups.erp_tech_svcs.rb +0 -19
  23. data/spec/dummy/db/migrate/20130220143265_upgrade_security.erp_tech_svcs.rb +0 -54
  24. data/spec/dummy/db/migrate/20130220143266_upgrade_security2.erp_tech_svcs.rb +0 -275
  25. data/spec/dummy/db/migrate/20130422151250_add_uuid_compass_ae_instance.erp_base_erp_svcs.rb +0 -17
  26. data/spec/dummy/db/migrate/20130422151251_add_long_lat_to_address.erp_base_erp_svcs.rb +0 -16
  27. data/spec/dummy/db/migrate/20130422151252_add_queue_to_delayed_jobs.erp_tech_svcs.rb +0 -14
  28. data/spec/dummy/db/schema.rb +0 -665
  29. data/spec/dummy/db/spec.sqlite3 +0 -0
@@ -165,7 +165,7 @@ class FileAsset < ActiveRecord::Base
165
165
  end
166
166
  end
167
167
  #return true
168
- end
168
+ end
169
169
 
170
170
  def basename
171
171
  data_file_name.gsub(/\.#{extname}$/, "")
@@ -75,7 +75,7 @@ module ErpTechSvcs
75
75
  join_type = (self.protect_all_instances ? 'JOIN' : 'LEFT JOIN')
76
76
  query = joins("#{join_type} capabilities AS c ON c.capability_resource_id = #{self.table_name}.id AND c.capability_resource_type = '#{self.name}'").
77
77
  group(columns.collect{|c| "#{self.table_name}.#{c.name}" })
78
- query = (deny_count == 0 ? query.where("c.id IS NULL OR c.id = c.id") : query.where("c.id IS NULL OR c.id NOT IN (#{denied_capabilities.to_sql})"))
78
+ query = (deny_count == 0 ? query.where("c.id NOT IN (SELECT id FROM capabilities) OR c.id = c.id") : query.where("c.id NOT IN (SELECT id FROM capabilities) OR c.id NOT IN (#{denied_capabilities.to_sql})"))
79
79
  query
80
80
  }
81
81
 
@@ -64,33 +64,15 @@ module ActionView
64
64
  end
65
65
 
66
66
  def mtime(p, file_support)
67
- node = file_support.find_node(p)
68
- node[:last_modified]
67
+ p = p.sub(%r{^/}, '')
68
+ ErpTechSvcs::FileSupport::S3Manager.new.bucket.objects[p].last_modified
69
69
  end
70
70
 
71
71
  protected
72
-
73
- def cache_key(path)
74
- Thread.current[:tenant_id].nil? ? path : "tenant_#{Thread.current[:tenant_id]}_#{path}"
75
- end
76
-
77
- def cache_template(path, file_support)
78
- contents, message = file_support.get_contents(path)
79
- path = path.sub(%r{^/},'')
80
- #Rails.logger.info "creating cache with key: #{path}"
81
- Rails.cache.write(cache_key(path), contents, :expires_in => ErpTechSvcs::Config.s3_cache_expires_in_minutes.minutes)
82
- return contents, message
83
- end
84
72
 
85
73
  def build_template(p, virtual_path, formats, file_support, locals=nil)
86
74
  handler, format = extract_handler_and_format(p, formats)
87
- contents = Rails.cache.read(cache_key(p.sub(%r{^/},'')))
88
- if contents.nil?
89
- contents, message = cache_template(p, file_support)
90
- else
91
- #Rails.logger.info "!!!!! USING CACHED TEMPLATE: #{contents.inspect}"
92
- contents = contents.dup
93
- end
75
+ contents, message = file_support.get_contents(p)
94
76
 
95
77
  Template.new(contents, p, handler, :virtual_path => virtual_path, :format => format, :updated_at => mtime(p, file_support), :locals => locals)
96
78
  end
@@ -5,69 +5,25 @@ module ErpTechSvcs
5
5
  module FileSupport
6
6
  class S3Manager < Manager
7
7
  class << self
8
- cattr_accessor :node_tree, :s3_connection
8
+ cattr_accessor :s3_connection, :s3_bucket, :tree
9
9
 
10
10
  def setup_connection
11
- @@configuration = YAML::load_file(File.join(Rails.root,'config','s3.yml'))[Rails.env]
12
-
11
+ @@configuration = YAML::load_file(File.join(Rails.root, 'config', 's3.yml'))[Rails.env]
12
+
13
13
  # S3 debug logging
14
14
  # AWS.config(
15
- # :logger => Rails.logger,
16
- # :log_level => :info
15
+ # :logger => Rails.logger,
16
+ # :log_level => :info
17
17
  # )
18
18
 
19
19
  @@s3_connection = AWS::S3.new(
20
- :access_key_id => @@configuration['access_key_id'],
21
- :secret_access_key => @@configuration['secret_access_key']
20
+ :access_key_id => @@configuration['access_key_id'],
21
+ :secret_access_key => @@configuration['secret_access_key']
22
22
  )
23
23
 
24
24
  @@s3_bucket = @@s3_connection.buckets[@@configuration['bucket'].to_sym]
25
25
  end
26
26
 
27
- def reload
28
- !@@s3_connection.nil? ? build_node_tree(true) : setup_connection
29
- end
30
-
31
- def cache_key
32
- Thread.current[:tenant_id].nil? ? 'node_tree' : "tenant_#{Thread.current[:tenant_id]}_node_tree"
33
- end
34
-
35
- def cache_node_tree(node_tree)
36
- Rails.cache.write(cache_key, node_tree, :expires_in => ErpTechSvcs::Config.s3_cache_expires_in_minutes.minutes)
37
- node_tree
38
- end
39
-
40
- def add_children(parent_hash, tree)
41
- tree.children.each do |child|
42
- child_hash = {
43
- :last_modified => '',
44
- #:last_modified => (child.leaf? ? @@s3_bucket.objects[child.key].last_modified : ''),
45
- :text => (child.leaf? ? File.basename(child.key) : File.basename(child.prefix)),
46
- :downloadPath => (child.leaf? ? '/'+File.dirname(child.key) : "/#{child.parent.prefix}".sub(%r{/$},'')),
47
- :leaf => child.leaf?,
48
- :id => (child.leaf? ? '/'+child.key : "/#{child.prefix}".sub(%r{/$},'')),
49
- :children => []
50
- }
51
- child_hash = add_children(child_hash, child) unless child.leaf?
52
- unless child_hash[:id].gsub(/\/$/,'') == parent_hash[:id].gsub(/\/$/,'') # resolves s3 issue where empty dir contains itself
53
- parent_hash[:children] << child_hash unless child_hash[:downloadPath] == '/.'
54
- end
55
- end
56
-
57
- parent_hash
58
- end
59
-
60
- def build_node_tree(reload=false)
61
- node_tree = Rails.cache.read(cache_key)
62
- if !reload and !node_tree.nil?
63
- #Rails.logger.info "@@@@@@@@@@@@@@ USING CACHED node_tree: #{node_tree.inspect}"
64
- return node_tree
65
- end
66
-
67
- tree_data = {:text => @@s3_bucket.name, :leaf => false, :id => '', :children => []}
68
- tree_data = [add_children(tree_data, @@s3_bucket.as_tree)]
69
- cache_node_tree(tree_data)
70
- end
71
27
  end
72
28
 
73
29
  def buckets
@@ -86,39 +42,25 @@ module ErpTechSvcs
86
42
  ''
87
43
  end
88
44
 
89
- def cache_key
90
- ErpTechSvcs::FileSupport::S3Manager.cache_key
91
- end
92
-
93
- def clear_cache(path)
94
- path = path.sub(%r{^/},'')
95
- #Rails.logger.info "deleting cache with key: #{path}"
96
- Rails.cache.delete(path) # delete template from cache
97
- Rails.cache.delete(cache_key) # delete node tree from cache
98
- end
99
-
100
45
  def update_file(path, content)
101
46
  file = FileAsset.where(:name => ::File.basename(path)).where(:directory => ::File.dirname(path)).first
102
47
  acl = (file.is_secured? ? :private : :public_read) unless file.nil?
103
- options = (file.nil? ? {} : {:acl => acl, :content_type => file.content_type })
104
- path = path.sub(%r{^/},'')
48
+ options = (file.nil? ? {} : {:acl => acl, :content_type => file.content_type})
49
+ path = path.sub(%r{^/}, '')
105
50
  bucket.objects[path].write(content, options)
106
- clear_cache(path)
107
51
  end
108
52
 
109
53
  def create_file(path, name, content)
110
- path = path.sub(%r{^/},'')
54
+ path = path.sub(%r{^/}, '')
111
55
  full_filename = (path.blank? ? name : File.join(path, name))
112
- bucket.objects[full_filename].write(content, { :acl => :public_read })
113
- clear_cache(path)
56
+ bucket.objects[full_filename].write(content, {:acl => :public_read})
114
57
  end
115
58
 
116
59
  def create_folder(path, name)
117
- path = path.sub(%r{^/},'')
60
+ path = path.sub(%r{^/}, '')
118
61
  full_filename = (path.blank? ? name : File.join(path, name))
119
62
  folder = full_filename + "/"
120
- bucket.objects[folder].write('', { :acl => :public_read })
121
- clear_cache(path)
63
+ bucket.objects[folder].write('', {:acl => :public_read})
122
64
  end
123
65
 
124
66
  def save_move(path, new_parent_path)
@@ -130,13 +72,12 @@ module ErpTechSvcs
130
72
  acl = (file.is_secured? ? :private : :public_read) unless file.nil?
131
73
  options = (file.nil? ? {} : {:acl => acl})
132
74
  name = File.basename(path)
133
- path = path.sub(%r{^/},'')
134
- new_path = File.join(new_parent_path,name).sub(%r{^/},'')
75
+ path = path.sub(%r{^/}, '')
76
+ new_path = File.join(new_parent_path, name).sub(%r{^/}, '')
135
77
  old_object = bucket.objects[path]
136
78
  if new_object = old_object.move_to(new_path, options)
137
79
  message = "#{name} was moved to #{new_path} successfully"
138
80
  result = true
139
- clear_cache(path)
140
81
  else
141
82
  message = "Error moving file #{path}"
142
83
  end
@@ -156,18 +97,17 @@ module ErpTechSvcs
156
97
  file = FileAsset.where(:name => ::File.basename(path)).where(:directory => ::File.dirname(path)).first
157
98
  acl = (file.is_secured? ? :private : :public_read) unless file.nil?
158
99
  options = (file.nil? ? {} : {:acl => acl})
159
- path = path.sub(%r{^/},'')
160
- new_path = new_path.sub(%r{^/},'')
100
+ path = path.sub(%r{^/}, '')
101
+ new_path = new_path.sub(%r{^/}, '')
161
102
  # Rails.logger.info "renaming from #{path} to #{new_path}"
162
103
  old_object = bucket.objects[path]
163
104
  if new_object = old_object.move_to(new_path, options)
164
105
  message = "#{old_name} was renamed to #{name} successfully"
165
106
  result = true
166
- clear_cache(path)
167
107
  else
168
108
  message = "Error renaming #{old_name}"
169
109
  end
170
- rescue AWS::S3::Errors::NoSuchKey=>ex
110
+ rescue AWS::S3::Errors::NoSuchKey => ex
171
111
  message = FILE_FOLDER_DOES_NOT_EXIST
172
112
  end
173
113
 
@@ -175,13 +115,13 @@ module ErpTechSvcs
175
115
  end
176
116
 
177
117
  def set_permissions(path, canned_acl=:public_read)
178
- path = path.sub(%r{^/},'')
118
+ path = path.sub(%r{^/}, '')
179
119
  bucket.objects[path].acl = canned_acl
180
120
  end
181
121
 
182
122
  def delete_file(path, options={})
183
- is_directory = !path.match(/\/$/).nil?
184
- path = path.sub(%r{^/},'')
123
+ is_directory = File.extname(path).blank?
124
+ path = path.sub(%r{^/}, '')
185
125
  result = false
186
126
  message = nil
187
127
  begin
@@ -189,21 +129,20 @@ module ErpTechSvcs
189
129
  bucket.objects.with_prefix(path).delete_all
190
130
  message = "File was deleted successfully"
191
131
  result = true
192
- clear_cache(path)
193
132
  else
194
133
  message = FOLDER_IS_NOT_EMPTY
195
134
  end
196
135
  rescue Exception => e
197
- result = false
198
- message = e
199
- end
136
+ result = false
137
+ message = e
138
+ end
200
139
 
201
- return result, message, is_directory
140
+ return result, message, is_directory
202
141
  end
203
142
 
204
143
  def exists?(path)
205
144
  begin
206
- path = path.sub(%r{^/},'')
145
+ path = path.sub(%r{^/}, '')
207
146
  return bucket.objects[path].exists?
208
147
  rescue AWS::S3::Errors::NoSuchKey
209
148
  return false
@@ -214,10 +153,10 @@ module ErpTechSvcs
214
153
  contents = nil
215
154
  message = nil
216
155
 
217
- path = path.sub(%r{^/},'')
156
+ path = path.sub(%r{^/}, '')
218
157
  begin
219
158
  object = bucket.objects[path]
220
- contents = object.read
159
+ contents = object.read
221
160
  rescue AWS::S3::Errors::NoSuchKey => error
222
161
  contents = ''
223
162
  message = FILE_DOES_NOT_EXIST
@@ -227,36 +166,62 @@ module ErpTechSvcs
227
166
  end
228
167
 
229
168
  def build_tree(starting_path, options={})
230
- starting_path = "/" + starting_path unless starting_path.first == "/"
231
169
  node_tree = find_node(starting_path, options)
232
170
  node_tree.nil? ? [] : node_tree
233
171
  end
234
172
 
235
173
  def find_node(path, options={})
236
- parent = if options[:file_asset_holder]
237
- super
238
- else
239
- parent = ErpTechSvcs::FileSupport::S3Manager.build_node_tree(false).first
240
- unless path.nil?
241
- path_pieces = path.split('/')
242
- path_pieces.each do |path_piece|
243
- next if path_piece.blank?
244
- parent[:children].each do |child_node|
245
- if child_node[:text] == path_piece
246
- parent = child_node
247
- break
248
- end
174
+ #remove proceeding slash for s3
175
+ path.sub!(%r{^/}, '')
176
+
177
+ parent = {:text => path.split('/').pop, :leaf => false, :id => path, :children => []}
178
+
179
+ tree = bucket.as_tree(:prefix => path)
180
+ tree.children.each do |node|
181
+ if node.leaf?
182
+ #ignore current path that comes as leaf from s3
183
+ next if node.key == path + '/'
184
+
185
+ leaf_hash = {
186
+ :text => node.key.split('/').pop,
187
+ :downloadPath => "/#{node.key}",
188
+ :id => "/#{node.key}",
189
+ :leaf => true
190
+ }
191
+
192
+ if options[:file_asset_holder]
193
+ files = options[:file_asset_holder].files
194
+
195
+ parent_directories = leaf_hash[:id].split('/')
196
+ parent_directories.pop
197
+ parent_directory = parent_directories.join('/')
198
+
199
+ file = files.find { |file| file.directory == parent_directory and file.name == leaf_hash[:text] }
200
+ unless file.nil?
201
+ leaf_hash[:isSecured] = file.is_secured?
202
+ leaf_hash[:roles] = file.roles.collect { |r| r.internal_identifier }
203
+ leaf_hash[:iconCls] = 'icon-document_lock' if leaf_hash[:isSecured]
204
+ leaf_hash[:size] = file.data_file_size
205
+ leaf_hash[:width] = file.width
206
+ leaf_hash[:height] = file.height
207
+ leaf_hash[:url] = file.url
249
208
  end
250
209
  end
251
- parent = nil unless parent[:id] == path
252
- end
253
210
 
254
- parent
211
+ parent[:children] << leaf_hash
212
+ else
213
+ parent[:children] << {
214
+ :iconCls => "icon-content",
215
+ :text => node.prefix.split('/').pop,
216
+ :id => "/#{node.prefix}".chop,
217
+ :leaf => false
218
+ }
219
+ end
255
220
  end
256
221
 
257
222
  parent
258
223
  end
259
224
 
260
- end#S3Manager
261
- end#FileSupport
262
- end#ErpTechSvcs
225
+ end #S3Manager
226
+ end #FileSupport
227
+ end #ErpTechSvcs
@@ -2,7 +2,7 @@ module ErpTechSvcs
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 3
4
4
  MINOR = 1
5
- TINY = 5
5
+ TINY = 7
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].compact.join('.')
8
8
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: erp_tech_svcs
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.5
4
+ version: 3.1.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-07-26 00:00:00.000000000 Z
12
+ date: 2013-08-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: erp_base_erp_svcs
@@ -258,29 +258,6 @@ files:
258
258
  - spec/dummy/config/routes.rb
259
259
  - spec/dummy/config/s3.yml
260
260
  - spec/dummy/config.ru
261
- - spec/dummy/db/data_migrations/20130220143304_add_usd_currency.erp_base_erp_svcs.rb
262
- - spec/dummy/db/data_migrations/20130220143305_add_iso_codes.erp_base_erp_svcs.rb
263
- - spec/dummy/db/data_migrations/20130220143306_setup_compass_ae_instance.erp_base_erp_svcs.rb
264
- - spec/dummy/db/data_migrations/20130220143307_upgrade_compass_ae_instances_data.erp_base_erp_svcs.rb
265
- - spec/dummy/db/data_migrations/20130220143308_create_capability_scope_types.erp_tech_svcs.rb
266
- - spec/dummy/db/data_migrations/20130220143309_schedule_delete_expired_sessions_job.erp_tech_svcs.rb
267
- - spec/dummy/db/data_migrations/20130220143310_setup_audit_log_types.erp_tech_svcs.rb
268
- - spec/dummy/db/data_migrations/20130220143311_create_group_relationship_and_role_types.erp_tech_svcs.rb
269
- - spec/dummy/db/data_migrations/20130220143312_note_capabilities.erp_tech_svcs.rb
270
- - spec/dummy/db/data_migrations/20130422151256_add_guid_to_instances.erp_base_erp_svcs.rb
271
- - spec/dummy/db/migrate/20130220143259_base_erp_services.erp_base_erp_svcs.rb
272
- - spec/dummy/db/migrate/20130220143260_add_txn_status.erp_base_erp_svcs.rb
273
- - spec/dummy/db/migrate/20130220143261_upgrade_compass_ae_instances.erp_base_erp_svcs.rb
274
- - spec/dummy/db/migrate/20130220143262_base_tech_services.erp_tech_svcs.rb
275
- - spec/dummy/db/migrate/20130220143263_create_has_attribute_tables.erp_tech_svcs.rb
276
- - spec/dummy/db/migrate/20130220143264_create_groups.erp_tech_svcs.rb
277
- - spec/dummy/db/migrate/20130220143265_upgrade_security.erp_tech_svcs.rb
278
- - spec/dummy/db/migrate/20130220143266_upgrade_security2.erp_tech_svcs.rb
279
- - spec/dummy/db/migrate/20130422151250_add_uuid_compass_ae_instance.erp_base_erp_svcs.rb
280
- - spec/dummy/db/migrate/20130422151251_add_long_lat_to_address.erp_base_erp_svcs.rb
281
- - spec/dummy/db/migrate/20130422151252_add_queue_to_delayed_jobs.erp_tech_svcs.rb
282
- - spec/dummy/db/schema.rb
283
- - spec/dummy/db/spec.sqlite3
284
261
  - spec/dummy/move_test_tmp/file_asset_spec_text.txt
285
262
  - spec/dummy/public/404.html
286
263
  - spec/dummy/public/422.html
@@ -301,7 +278,8 @@ files:
301
278
  - spec/models/user_spec.rb
302
279
  - spec/spec_helper.rb
303
280
  homepage: http://development.compassagile.com
304
- licenses: []
281
+ licenses:
282
+ - GPL-3
305
283
  post_install_message:
306
284
  rdoc_options: []
307
285
  require_paths:
@@ -320,7 +298,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
320
298
  version: '0'
321
299
  requirements: []
322
300
  rubyforge_project:
323
- rubygems_version: 1.8.23
301
+ rubygems_version: 1.8.25
324
302
  signing_key:
325
303
  specification_version: 3
326
304
  summary: This engine is implemented with the premise that services like logging, tracing
@@ -348,29 +326,6 @@ test_files:
348
326
  - spec/dummy/config/routes.rb
349
327
  - spec/dummy/config/s3.yml
350
328
  - spec/dummy/config.ru
351
- - spec/dummy/db/data_migrations/20130220143304_add_usd_currency.erp_base_erp_svcs.rb
352
- - spec/dummy/db/data_migrations/20130220143305_add_iso_codes.erp_base_erp_svcs.rb
353
- - spec/dummy/db/data_migrations/20130220143306_setup_compass_ae_instance.erp_base_erp_svcs.rb
354
- - spec/dummy/db/data_migrations/20130220143307_upgrade_compass_ae_instances_data.erp_base_erp_svcs.rb
355
- - spec/dummy/db/data_migrations/20130220143308_create_capability_scope_types.erp_tech_svcs.rb
356
- - spec/dummy/db/data_migrations/20130220143309_schedule_delete_expired_sessions_job.erp_tech_svcs.rb
357
- - spec/dummy/db/data_migrations/20130220143310_setup_audit_log_types.erp_tech_svcs.rb
358
- - spec/dummy/db/data_migrations/20130220143311_create_group_relationship_and_role_types.erp_tech_svcs.rb
359
- - spec/dummy/db/data_migrations/20130220143312_note_capabilities.erp_tech_svcs.rb
360
- - spec/dummy/db/data_migrations/20130422151256_add_guid_to_instances.erp_base_erp_svcs.rb
361
- - spec/dummy/db/migrate/20130220143259_base_erp_services.erp_base_erp_svcs.rb
362
- - spec/dummy/db/migrate/20130220143260_add_txn_status.erp_base_erp_svcs.rb
363
- - spec/dummy/db/migrate/20130220143261_upgrade_compass_ae_instances.erp_base_erp_svcs.rb
364
- - spec/dummy/db/migrate/20130220143262_base_tech_services.erp_tech_svcs.rb
365
- - spec/dummy/db/migrate/20130220143263_create_has_attribute_tables.erp_tech_svcs.rb
366
- - spec/dummy/db/migrate/20130220143264_create_groups.erp_tech_svcs.rb
367
- - spec/dummy/db/migrate/20130220143265_upgrade_security.erp_tech_svcs.rb
368
- - spec/dummy/db/migrate/20130220143266_upgrade_security2.erp_tech_svcs.rb
369
- - spec/dummy/db/migrate/20130422151250_add_uuid_compass_ae_instance.erp_base_erp_svcs.rb
370
- - spec/dummy/db/migrate/20130422151251_add_long_lat_to_address.erp_base_erp_svcs.rb
371
- - spec/dummy/db/migrate/20130422151252_add_queue_to_delayed_jobs.erp_tech_svcs.rb
372
- - spec/dummy/db/schema.rb
373
- - spec/dummy/db/spec.sqlite3
374
329
  - spec/dummy/move_test_tmp/file_asset_spec_text.txt
375
330
  - spec/dummy/public/404.html
376
331
  - spec/dummy/public/422.html