sadie 0.0.11 → 0.0.12

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.
Files changed (8) hide show
  1. data/CHANGELOG +2 -1
  2. data/README +13 -0
  3. data/Rakefile +34 -4
  4. data/TODO +21 -0
  5. data/lib/sadie/version.rb +1 -4
  6. data/lib/sadie.rb +12 -74
  7. data/sadie.gemspec +1 -1
  8. metadata +51 -74
data/CHANGELOG CHANGED
@@ -3,4 +3,5 @@
3
3
  [0.0.8] abstracted primer types such that sadie can now use plugins. with two working plugins, IniFile and Resource, it is functionaly equivalent to v0.0.7. More to come.
4
4
  [0.0.9] primer logic bugfix, added sql and db connection primer types
5
5
  [0.0.10] sql plugin handler became sql2ar to better reflect what's going on
6
- [0.0.11] updated documentation
6
+ [0.0.11] updated documentation
7
+ [0.0.12] updated documentation, Rakefile, code cleanups
data/README CHANGED
@@ -17,3 +17,16 @@ It's very simple to add new primer types, so it would be simple to create primer
17
17
  At Landmetrics, we use a predecessor to Sadie to power perimetercomps[http://perimetercomps.com], producing each 50+ page report with charts, graphs and tables with only 12 queries to the database.
18
18
 
19
19
  Sadie can be downloaded via its rubygems page[https://rubygems.org/gems/sadie] or from github[https://github.com/FredAtLandMetrics/sadie].
20
+
21
+ USE CASES
22
+
23
+ [templating] As noted above, perimetercomps[http://perimetercomps.com] is an example of how one might
24
+ use sadie to to create a templating engine wherein many pieces of related information
25
+ from many different sources are made into charts, graphs, tables and text before being
26
+ assembled into a single deliverable document. We used LaTeX, but html, xml, css, txt, etc.
27
+ would be just as easy.
28
+
29
+ [data import] Tasks involving grabbing data from different places in different formats and
30
+ massaging the data into a consistent and useful format. A few simple primer plugins
31
+ would make this very easy.
32
+
data/Rakefile CHANGED
@@ -10,13 +10,43 @@ task :test do
10
10
  ruby "test/tc_sadie_twodeep.rb"
11
11
  end
12
12
 
13
- # task :rdoc do
14
- #
15
- # end
13
+ task :deploy => 'inc_version' do
14
+ version = current_sadie_version
15
+ sh "git push"
16
+ sh "gem build sadie.gemspec"
17
+ sh "gem push sadie-#{version}.gem"
18
+ end
19
+
20
+ task :inc_version do
21
+ version = current_sadie_version
22
+ if (matches = version.match(/^(\d+\.\d+\.)(\d+)$/))
23
+ pre = matches[1]
24
+ post = Integer(matches[2]) + 1
25
+ version = "#{pre}#{post}"
26
+ end
27
+ fh = File.open("lib/sadie/version.rb","w")
28
+ fh.puts "class Sadie"
29
+ fh.puts ' VERSION = "' + version + '"'
30
+ fh.puts "end"
31
+ fh.close
32
+ puts "incremented sadie version to #{version}"
33
+ end
34
+
16
35
  Rake::RDocTask.new do |rdoc|
17
36
  rdoc.title = 'Sadie'
18
37
  rdoc.rdoc_files.include('lib/**/*.rb')
19
- rdoc.rdoc_files.include('README')
38
+ rdoc.rdoc_files.include('README','TODO','CHANGELOG')
20
39
  rdoc.main = 'README'
21
40
  rdoc.rdoc_dir = 'rdoc'
22
41
  end
42
+
43
+ def current_sadie_version
44
+ version = "0.0.0"
45
+ File.open("lib/sadie/version.rb","r").each do |line|
46
+ if matches = line.match(/version\s*\=\s*\"([^\"]+)\"/i)
47
+ version = matches[1]
48
+ break
49
+ end
50
+ end
51
+ version
52
+ end
data/TODO ADDED
@@ -0,0 +1,21 @@
1
+ [setDestroyTimer] this will accept either a quantity of time or a specific date and
2
+ will destroy the data at that time, causing a "reprime" event
3
+
4
+ [threadedness] split getSadieInstance(sessionid] into getSadieInstanceSlave[sessionid]
5
+ where getSadieInstance will continute to bring up a normal Sadie
6
+ instance and getSadieInstanceSlave will perform reads in its own thread
7
+ but will prime in sync with the main instance thread (such that two
8
+ primers for the same key would never execute at the same time, rather,
9
+ the second one would simply block until the first completed). This
10
+ would allow for some concurrency within a session without. Rather than
11
+ calling getSadieInstanceSlave directly, a prgram could simple call a
12
+ new method, consider( key ) which would fire off a get in an instance
13
+ slave to allow for some background processing
14
+
15
+ [keyregexpmatch] instead of requiring that all keys must be known either as having been set
16
+ or having a known primer, a key could be matched against a regex.
17
+ This would make it possible to encode some useful priming information
18
+ in the key itself, enough that the primer could use it and divine the
19
+ desired result. So, where Sadie::prime takes an arg of containing
20
+ a list of keys that this primer "provides", it will alternatively take an
21
+ arg of "key-match" which will fire off the primer when the key matches.
data/lib/sadie/version.rb CHANGED
@@ -1,6 +1,3 @@
1
- # ==Notes
2
- # this file sets the version of the Sadie gem
3
-
4
1
  class Sadie
5
- VERSION = "0.0.11"
2
+ VERSION = "0.0.12"
6
3
  end
data/lib/sadie.rb CHANGED
@@ -162,20 +162,6 @@ class Sadie
162
162
  set( "sadie.session_id", _generateNewSessionId )
163
163
  end
164
164
 
165
- # if defined? options["sadie.session_filepath"] \
166
- # && options["sadie.session_filepath"].match(/^[^\s]+$/)
167
- # set( "sadie.session_filepath", options["sadie.session_filepath"] )
168
- # _initializeWithSessionFilePath( get("sadie.session_filepath") )
169
- # return
170
- # end
171
- #
172
- # # determine session id, init from session if provided as arg
173
- # if defined?options["sadie.session_id"] && options["sadie.session_id"].match(/^[^\s]+$/)
174
- # set( "sadie.session_id", options["sadie.session_id"] )
175
- # _initializeWithSessionId( get( "sadie.session_id" ) )
176
- # else
177
- # set( "sadie.session_id", _generateNewSessionId )
178
- # end
179
165
 
180
166
  end
181
167
 
@@ -236,62 +222,11 @@ class Sadie
236
222
  # a primer or actually priming
237
223
  else
238
224
  yield( self, getCurrentPrimerKeyPrefix, @@current_primer_filepath ) \
239
- # unless midPrimerInit?
240
- # if registering the prime mode, skips block exec
241
- #
242
- # if currentPrimerPluginAcceptsBlock?
243
- #
244
- # # call with block only if accepts block
245
- # yield( self, getCurrentPrimerKeyPrefix, @@current_primer_filepath, &block )
246
- #
247
- # else
248
-
249
- # yield( self, getCurrentPrimerKeyPrefix, @@current_primer_filepath ) \
250
- # if prime_on_init or
251
-
252
- # end
253
-
254
- # prime_on_init \
255
- # or unsetMidPrimerInit
256
-
257
225
  end
258
226
  end
259
227
 
260
228
 
261
229
 
262
- # # ==method: pathToKey
263
- # #
264
- # # returns a dot-separated version of the filepath such that
265
- # # with parentify=1 returns dot path to directory file is in,
266
- # # with parentify=2 returns dot path to directory above directory file is in, etc.
267
- # def pathToKey( filepath, parentify=0 )
268
- #
269
- # # separate path into basename,dirname
270
- # path_basename = File.basename( filepath )
271
- # path_dirname = File.dirname( filepath )
272
- #
273
- # # create stack of dir components
274
- # path_stack = Array.new
275
- # temp_path_stack = path_dirname.split(/\//)
276
- # temp_path_stack.each do |item|
277
- # next if item.match(/^\s*$/)
278
- # path_stack.push item
279
- # end
280
- #
281
- # # lose the suffix on the basename
282
- # root_path_basename = path_basename.gsub( /\.[^\.]*$/, "" )
283
- # path_stack.push( root_path_basename )
284
- # if parentify > 1
285
- # parentify.times do |i|
286
- # path_stack.pop
287
- # end
288
- # end
289
- #
290
- # path_stack.join( "," )
291
- #
292
- # end
293
-
294
-
295
230
  # ==method: get
296
231
  #
297
232
  # a standard getter which primes the unprimed and recalls "expensive" facts from files
@@ -355,11 +290,12 @@ class Sadie
355
290
  #
356
291
  # returns true if the destructOnGet flag is set for the key
357
292
  def destroyOnGet?( key )
358
- @flag_destroyonget.has_key?( key ) \
359
- or return _newline( false )
360
- @flag_destroyonget["#{key}"] \
361
- and return _newline( true )
362
- return _newline(false)
293
+ ( @flag_destroyonget.has_key?( key ) && @flag_destroyonget["#{key}"] )
294
+ # @flag_destroyonget.has_key?( key ) \
295
+ # or return _newline( false )
296
+ # @flag_destroyonget["#{key}"] \
297
+ # and return _newline( true )
298
+ # return _newline(false)
363
299
  end
364
300
 
365
301
  # ==method: set
@@ -648,8 +584,6 @@ class Sadie
648
584
 
649
585
  if regexp.match( filename )
650
586
 
651
- # currentPrimerPluginAcceptsBlock( accepts_block )
652
- # currentPrimerPluginPrimeOnInit( prime_on_init )
653
587
  setCurrentPrimerPluginFilepath( plugin_filepath )
654
588
  prime_on_init \
655
589
  or setMidPrimerInit( filepath )
@@ -691,7 +625,13 @@ class Sadie
691
625
  @@current_primer_filepath
692
626
  end
693
627
 
628
+ def setCurrentPrimerRequestingKey( key )
629
+ @@current_primer_requesting_key = key
630
+ end
694
631
 
632
+ def getCurrentPrimerRequestingKey
633
+ @@current_primer_requesting_key
634
+ end
695
635
 
696
636
  # ==memorizePrimerLocation
697
637
  #
@@ -772,7 +712,6 @@ class Sadie
772
712
 
773
713
 
774
714
  def _newline( rval=true )
775
- #puts
776
715
  return rval
777
716
  end
778
717
 
@@ -907,7 +846,6 @@ class Sadie
907
846
  if ! defined? @@mid_primer_initialization
908
847
  @@mid_primer_initialization = false
909
848
  @@mid_primer_filepath = nil
910
- # @@mid_primer_toplevel_primer_dirpath = nil
911
849
  end
912
850
 
913
851
  end
data/sadie.gemspec CHANGED
@@ -26,5 +26,5 @@ Gem::Specification.new do |s|
26
26
  s.add_runtime_dependency "dbi"
27
27
  s.add_runtime_dependency "mysql"
28
28
  s.add_runtime_dependency "dbd-mysql"
29
-
29
+ s.extra_rdoc_files = ['README', 'CHANGELOG', 'TODO']
30
30
  end
metadata CHANGED
@@ -1,74 +1,60 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: sadie
3
- version: !ruby/object:Gem::Version
4
- hash: 9
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.12
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 11
10
- version: 0.0.11
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Fred McDavid
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-01-25 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2012-01-26 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: dbi
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &9930400 !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 3
29
- segments:
30
- - 0
31
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
32
22
  type: :runtime
33
- version_requirements: *id001
34
- - !ruby/object:Gem::Dependency
35
- name: mysql
36
23
  prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *9930400
25
+ - !ruby/object:Gem::Dependency
26
+ name: mysql
27
+ requirement: &9929980 !ruby/object:Gem::Requirement
38
28
  none: false
39
- requirements:
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- hash: 3
43
- segments:
44
- - 0
45
- version: "0"
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
46
33
  type: :runtime
47
- version_requirements: *id002
48
- - !ruby/object:Gem::Dependency
49
- name: dbd-mysql
50
34
  prerelease: false
51
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *9929980
36
+ - !ruby/object:Gem::Dependency
37
+ name: dbd-mysql
38
+ requirement: &9929560 !ruby/object:Gem::Requirement
52
39
  none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- hash: 3
57
- segments:
58
- - 0
59
- version: "0"
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
60
44
  type: :runtime
61
- version_requirements: *id003
62
- description: Sadie is a data framework intended to ease the pain of managing related data.
63
- email:
45
+ prerelease: false
46
+ version_requirements: *9929560
47
+ description: Sadie is a data framework intended to ease the pain of managing related
48
+ data.
49
+ email:
64
50
  - fred@landmetrics.com
65
51
  executables: []
66
-
67
52
  extensions: []
68
-
69
- extra_rdoc_files: []
70
-
71
- files:
53
+ extra_rdoc_files:
54
+ - README
55
+ - CHANGELOG
56
+ - TODO
57
+ files:
72
58
  - .gitignore
73
59
  - CHANGELOG
74
60
  - Gemfile
@@ -76,6 +62,7 @@ files:
76
62
  - LICENSE
77
63
  - README
78
64
  - Rakefile
65
+ - TODO
79
66
  - lib/.gitignore
80
67
  - lib/sadie.rb
81
68
  - lib/sadie/defaults.rb
@@ -114,36 +101,26 @@ files:
114
101
  - test/test_primers/two/deep/two_results.res
115
102
  homepage: http://www.landmetrics.com/Sadie
116
103
  licenses: []
117
-
118
104
  post_install_message:
119
105
  rdoc_options: []
120
-
121
- require_paths:
106
+ require_paths:
122
107
  - lib
123
- required_ruby_version: !ruby/object:Gem::Requirement
108
+ required_ruby_version: !ruby/object:Gem::Requirement
124
109
  none: false
125
- requirements:
126
- - - ">="
127
- - !ruby/object:Gem::Version
128
- hash: 3
129
- segments:
130
- - 0
131
- version: "0"
132
- required_rubygems_version: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - ! '>='
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
114
+ required_rubygems_version: !ruby/object:Gem::Requirement
133
115
  none: false
134
- requirements:
135
- - - ">="
136
- - !ruby/object:Gem::Version
137
- hash: 3
138
- segments:
139
- - 0
140
- version: "0"
116
+ requirements:
117
+ - - ! '>='
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
141
120
  requirements: []
142
-
143
121
  rubyforge_project: sadie
144
- rubygems_version: 1.7.2
122
+ rubygems_version: 1.8.15
145
123
  signing_key:
146
124
  specification_version: 3
147
125
  summary: A gem that provides sadie, a data access framework
148
126
  test_files: []
149
-