datum 0.8.7 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -9,7 +9,7 @@ module Datum
9
9
  def prepare
10
10
  create
11
11
  migrate
12
- load
12
+ load_when_empty
13
13
  end
14
14
 
15
15
  def create
@@ -27,22 +27,15 @@ module Datum
27
27
 
28
28
  #Rake::Task['db:drop'].invoke()
29
29
  ActiveRecord::Base.connection.drop_database database rescue nil
30
-
31
30
  end
32
31
 
32
+ def load_when_empty
33
+ load_fixtures true
34
+ end
35
+
33
36
  # get into the datum fixtures directory, walk the yml, load into db
34
37
  def load
35
- Dir.glob("#{@@local_path}/fixtures/*.yml").entries.each do |entry|
36
- file_name = entry.to_s.split('/').last.to_s.split('.')[0]
37
- target_model = file_name.classify.constantize
38
- data_hash = YAML.load(File.read(entry))
39
- data_hash.each_value {|value|
40
- value.delete "id"
41
- value.delete "created_at"
42
- value.delete "updated_at"
43
- target_model.create value
44
- }
45
- end
38
+ load_fixtures false
46
39
  end
47
40
 
48
41
  # get into datum db, get relevant tables, produce ymls (for sharing)
@@ -55,8 +48,7 @@ module Datum
55
48
  tables = (ActiveRecord::Base.connection.tables - skip_tables)
56
49
  tables.each do |table_name|
57
50
  i = "000"
58
- File.open("#{@@local_path}/fixtures/#{table_name}.yml",
59
- 'w') do |file|
51
+ File.open("#{@@local_path}/fixtures/#{table_name}.yml", 'w') do |file|
60
52
  data = ActiveRecord::Base.connection.select_all(sql % table_name)
61
53
  file.write data.inject({}) { |hash, record|
62
54
  hash["#{table_name}_#{i.succ!}"] = record
@@ -74,23 +66,40 @@ module Datum
74
66
  f1.puts "\n\n#\n# data dump for code access of table #{file_name}"
75
67
  f1.puts "#\nmodule #{tasked_model.to_s.pluralize}"
76
68
  f1.puts "def self.data\nd = ["
77
- data.each_with_index {|e, i|
78
- hash = e.attributes
79
- hash.each_pair {|key, value|
80
- new_value = value.to_s
81
- hash[key] = new_value
82
- }
83
- f1.puts "#{hash.to_s},"
69
+ data.each_with_index {|e, i|
70
+ hash = e.attributes
71
+ hash.each_pair {|key, value|
72
+ new_value = value.to_s
73
+ hash[key] = new_value
84
74
  }
75
+ f1.puts "#{hash.to_s},"
76
+ }
85
77
  f1.puts "]\nend\nend"
86
78
  end
87
79
  end
88
80
 
89
81
  private
82
+
90
83
  @@local_path = "#{Rails.root}/test/lib/datum"
91
84
 
92
85
  @@datum_environment = "datum"
93
86
 
87
+ def load_fixtures skip_with_data
88
+ Dir.glob("#{@@local_path}/fixtures/*.yml").entries.each do |entry|
89
+ file_name = entry.to_s.split('/').last.to_s.split('.')[0]
90
+ target_model = file_name.classify.constantize
91
+ if(!skip_with_data || target_model.count == 0)
92
+ data_hash = YAML.load(File.read(entry))
93
+ data_hash.each_value {|value|
94
+ value.delete "id"
95
+ value.delete "created_at"
96
+ value.delete "updated_at"
97
+ target_model.create value
98
+ }
99
+ end
100
+ end
101
+ end
102
+
94
103
  def context
95
104
  return Datum::Context
96
105
  end
@@ -82,7 +82,9 @@ module Datum
82
82
  {:version => "0.8.3"},
83
83
  {:version => "0.8.4"},
84
84
  {:version => "0.8.5"},
85
- {:version => "0.8.6"}])
85
+ {:version => "0.8.6"},
86
+ {:version => "0.8.7"},
87
+ {:version => "0.9.0"}])
86
88
  end
87
89
 
88
90
  def exec_test
@@ -3,4 +3,6 @@
3
3
  class DatumVersion < ActiveRecord::Base
4
4
  establish_connection :datum
5
5
 
6
+ attr_accessor :datum_versions
7
+
6
8
  end
data/lib/datum/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Datum
2
- VERSION = "0.8.7"
2
+ VERSION = "0.9.0"
3
3
  end
4
4
 
5
5
  ## 0.8.1
@@ -18,4 +18,7 @@ end
18
18
  ## Fixed migration not observing schema version (regression)
19
19
  ## Updated drop to use connection instead of rake task (unreliable)
20
20
  ## 0.8.7
21
- ## Added db:prepare rake task
21
+ ## Added db:prepare rake task
22
+ ## 0.9.0
23
+ ## prepare no longer uses load, instead it uses load_when_empty
24
+ ## attr_accessor added to datum_version model
data/lib/tasks/datum.rake CHANGED
@@ -23,6 +23,9 @@ namespace :datum do
23
23
  desc "Dump data as fixtures from datum database"
24
24
  task :dump => :environment do invoke "dump" end
25
25
 
26
+ desc "Loads datum fixtures IF table is empty"
27
+ task :load_when_empty => :environment do invoke "load_when_empty" end
28
+
26
29
  desc "Loads fixtures specific to datum database"
27
30
  task :load => :environment do invoke "load" end
28
31
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: datum
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.7
4
+ version: 0.9.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,14 +10,14 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-08-30 00:00:00.000000000 Z
13
+ date: 2012-09-01 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
- - - ~>
20
+ - - ! '>='
21
21
  - !ruby/object:Gem::Version
22
22
  version: 3.2.1
23
23
  type: :runtime
@@ -25,9 +25,25 @@ dependencies:
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  none: false
27
27
  requirements:
28
- - - ~>
28
+ - - ! '>='
29
29
  - !ruby/object:Gem::Version
30
30
  version: 3.2.1
31
+ - !ruby/object:Gem::Dependency
32
+ name: mysql2
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: 0.3.11
39
+ type: :runtime
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: 0.3.11
31
47
  description: Flexible data-driven test solution for Rails
32
48
  email:
33
49
  - datum@tyemill.com
@@ -106,7 +122,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
106
122
  version: '0'
107
123
  segments:
108
124
  - 0
109
- hash: -1943143270625711471
125
+ hash: -3296774884059331308
110
126
  required_rubygems_version: !ruby/object:Gem::Requirement
111
127
  none: false
112
128
  requirements:
@@ -115,7 +131,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
115
131
  version: '0'
116
132
  segments:
117
133
  - 0
118
- hash: -1943143270625711471
134
+ hash: -3296774884059331308
119
135
  requirements: []
120
136
  rubyforge_project:
121
137
  rubygems_version: 1.8.24