data_task 0.0.2 → 0.0.3

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.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZDk5OWQzMDU3YzNkZGUyZTczODUxNTdhODk4MTg4MjU0MGU3NDYwOQ==
4
+ NzJlMjU4MzQwNWU2MTNjNjdiM2M1MDUxNWQ0OGM3MDIyZGMxZjM1ZQ==
5
5
  data.tar.gz: !binary |-
6
- NzRmMWMzNjM4MGJjYmZjYTkwYTIwOTFiNjQ0YTVjZWZjNmU1NmQwNg==
6
+ Y2M3MTBkMTZkN2I1ZTcwOTlhMzJlYzY1ODViMTJhZjg5Njc3NTkzNQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NmNmMjc3MzFmMzBmOGI2MmFjNDBkODAyNDQ5YmZiNzBjMjFmY2JhNDFhMTk5
10
- M2NmZjk5MzU4ZWRiNzFkMDYxYTgxN2I1MTM0ZjI0OGUzMjRjOTM4YmVmNmVm
11
- ZjlkYzhhM2Y0YmU5YTdiNTY2NTMyMTVlMzhiNDE2ODU5YzQ2M2I=
9
+ NzdkZDc3MGM4M2NkYTBmNTFlMDE3M2YyN2E2Y2M2ODNiZTA2YmFiOGNhZGM2
10
+ ZDNhYzA0NmZhZDQxZmUxM2UxMWZmOWViY2JhOGFhYmVlOGZhZDBjOGQwZDA3
11
+ ZTIyYmE0OGZhZGFhZDIzMTRmMTgwZmViNDVjMmE0YTQyODdkNjk=
12
12
  data.tar.gz: !binary |-
13
- MzdiNGYyN2IyOWU4YWNkYjgwNzE1MzRmYThlNGNlODU1NmQ2N2ZhZDU1YTcz
14
- YWEwZjQyM2Q4NWJkYmFlZGI4YjVhNWIxY2M4ODZjMzc3OGM4YmFlZWQ3YTcx
15
- ZTcwNDMyZTQ3YThmYjY2MjIyNGQ1OGMyMzNlMmEzOTdjY2Y2NTQ=
13
+ YjM3NTI1ZDU1OGU2YWRkNDE4NTY4YjM3ZjYxMDAyZTRlODA5ZDY3NjY4NDk3
14
+ OGI3ZTAyNGRmNGFjZTFmMTgzNWQ1NDFiOGY2OWQwMmE0YWU5ODE2ZmI5ZWJi
15
+ MDk1NmE3MmJiMDBiODk5NWYyZWI1Y2UwYWYzMTdjMmExZDI4ZWQ=
data/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  # DataTask
5
5
 
6
- DataTask extends Rake's dependency-based programming language to databases. This gem provides the `data` task, analogous to Rake's built-in `file` task but extended to work with pluggable backends beyond the local filesystem.
6
+ DataTask is a build tool for data. It extends Rake's dependency-based programming language to databases. This gem provides the `data` task, analogous to Rake's built-in `file` task but extended to work with pluggable backends beyond the local filesystem.
7
7
 
8
8
  Adapters are included for Sqlite3, PostgreSQL, and Greenplum.
9
9
 
@@ -26,19 +26,16 @@ Or install it yourself as:
26
26
  To write your first data task, connect to your database by instantiating an adapter:
27
27
 
28
28
  ```
29
- postgres = Rake::DataTask::Postgres.new(
30
- 'host' => 'localhost',
31
- 'port' => 5432,
32
- 'database' => 'example',
33
- 'username' => 'postgres'
29
+ sqlite = Rake::DataTask::Sqlite.new(
30
+ 'database' => 'example'
34
31
  )
35
32
  ```
36
33
 
37
34
  Then use this adapter instance as the target for a data task:
38
35
 
39
36
  ```
40
- desc "Load a data file into PostgreSQL for analysis."
41
- data postgres['raw'] => 'raw.txt' do
37
+ desc "Load a data file into Sqlite for analysis."
38
+ data sqlite['raw'] => 'raw.txt' do
42
39
  # Add loading logic here
43
40
  end
44
41
  ```
@@ -52,36 +49,36 @@ require 'rake'
52
49
  require 'data_task'
53
50
 
54
51
  # connect to the database
55
- postgres = Rake::DataTask::Postgres.new(
56
- 'host' => 'localhost',
57
- 'port' => 5432,
58
- 'database' => 'example',
59
- 'username' => 'postgres'
60
- )
52
+ sqlite = Rake::DataTask::Sqlite.new('database' => 'example')
61
53
 
62
54
  # mark raw.txt as a potential dependency
63
55
  file 'raw.txt'
64
56
 
65
- # define a loader for the postgres table 'raw', dependent on raw.txt
66
- desc "Load a data file into PostgreSQL for analysis."
67
- data postgres['raw'] => 'raw.txt' do
68
- postgres.create_table 'raw', nil, '(var1 text)'
69
- postgres.execute "copy raw.txt to raw"
57
+ # define a loader for the Sqlite3 table 'raw', dependent on raw.txt
58
+ desc "Load a data file into Sqlite3 for analysis."
59
+ data sqlite['raw'] => 'raw.txt' do
60
+ sqlite.create_table 'raw', nil, '(var1 text)'
61
+ File.open('raw.txt').each { |line| sqlite.execute "insert into raw values ('#{line}')" }
62
+ end
63
+
64
+ # define an analytical table, dependent on the raw data table
65
+ desc "Analyze loaded data."
66
+ data sqlite['analyzed'] => sqlite['raw'] do
67
+ sqlite.create_table 'analyzed', 'select * from raw'
70
68
  end
71
69
  ```
72
70
 
73
71
  To run it:
74
72
 
75
73
  1. paste the example into a file named 'Rakefile',
76
- 2. make sure the PostgreSQL configuration matches your server,
77
- 3. open a terminal and run the commands below:
74
+ 2. in the same directory as your Rakefile, open a terminal and run the commands below:
78
75
 
79
76
  ```
80
77
  $ echo "v1" > raw.txt
81
- $ rake 'raw'
78
+ $ rake analyzed
82
79
  ```
83
80
 
84
- The contents of raw.txt should be in your table 'raw' on PostgreSQL. Running the rake command a second time will result in no operations as long as raw.txt hasn't changed. With big data files, this can be a big time-saver.
81
+ The contents of raw.txt should be in your table 'raw' on your Sqlite database. Running the rake command a second time will result in no operations as long as raw.txt and the 'raw' table haven't changed.
85
82
 
86
83
 
87
84
  ## Contributing
data/data_task.gemspec CHANGED
@@ -21,11 +21,12 @@ Gem::Specification.new do |spec|
21
21
  spec.required_ruby_version = '>= 1.9.3'
22
22
 
23
23
  spec.add_runtime_dependency 'rake', '~> 10.0.4'
24
- spec.add_runtime_dependency 'pg', '~> 0.17.1'
25
- spec.add_runtime_dependency 'sqlite3'
26
24
 
27
25
  spec.add_development_dependency 'bundler', '~> 1.6'
28
26
  spec.add_development_dependency 'minitest-around', '~> 0.2'
29
27
  spec.add_development_dependency 'minitest-spec-context', '~> 0.0.3'
30
28
  spec.add_development_dependency 'coveralls'
29
+ spec.add_development_dependency 'pg', '~> 0.17.1'
30
+ spec.add_development_dependency 'sqlite3'
31
+
31
32
  end
@@ -1,4 +1,3 @@
1
- require 'pg'
2
1
  require_relative 'support/transactions'
3
2
  require_relative 'support/booleans'
4
3
  require_relative './postgres'
@@ -1,8 +1,12 @@
1
- require 'pg'
2
- require_relative '../data'
1
+ begin
2
+ require 'pg'
3
+ rescue LoadError
4
+ puts "The Postgres adapter requires the pg gem, which can be installed via rubygems."
5
+ end
3
6
  require_relative 'support/transactions'
4
7
  require_relative 'support/booleans'
5
8
  require_relative 'support/connection_persistence'
9
+ require_relative '../data'
6
10
 
7
11
  module Rake
8
12
  module DataTask
@@ -1,7 +1,11 @@
1
- require 'sqlite3'
2
- require_relative '../data'
1
+ begin
2
+ require 'sqlite3'
3
+ rescue LoadError
4
+ puts "The Sqlite adapter requires the sqlite3 gem, which can be installed via rubygems."
5
+ end
3
6
  require_relative 'support/transactions'
4
7
  require_relative 'support/booleans'
8
+ require_relative '../data'
5
9
 
6
10
  module Rake
7
11
  module DataTask
@@ -73,7 +77,7 @@ module Rake
73
77
 
74
78
  alias_method :data_mtime, :table_mtime
75
79
 
76
- def create_table table_name, data_definition, column_definitions, track_table=true
80
+ def create_table table_name, data_definition, column_definitions=nil, track_table=true
77
81
  drop_table table_name
78
82
  execute <<-EOSQL
79
83
  create table #{table_name} #{column_definitions}
@@ -1,5 +1,5 @@
1
1
  module Rake
2
2
  module DataTask
3
- VERSION = "0.0.2"
3
+ VERSION = "0.0.3"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: data_task
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shahin Saneinejad
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-11 00:00:00.000000000 Z
11
+ date: 2014-07-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -25,77 +25,77 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: 10.0.4
27
27
  - !ruby/object:Gem::Dependency
28
- name: pg
28
+ name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: 0.17.1
34
- type: :runtime
33
+ version: '1.6'
34
+ type: :development
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.17.1
40
+ version: '1.6'
41
41
  - !ruby/object:Gem::Dependency
42
- name: sqlite3
42
+ name: minitest-around
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ! '>='
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :runtime
47
+ version: '0.2'
48
+ type: :development
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.2'
55
55
  - !ruby/object:Gem::Dependency
56
- name: bundler
56
+ name: minitest-spec-context
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: '1.6'
61
+ version: 0.0.3
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ~>
67
67
  - !ruby/object:Gem::Version
68
- version: '1.6'
68
+ version: 0.0.3
69
69
  - !ruby/object:Gem::Dependency
70
- name: minitest-around
70
+ name: coveralls
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - ! '>='
74
74
  - !ruby/object:Gem::Version
75
- version: '0.2'
75
+ version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ~>
80
+ - - ! '>='
81
81
  - !ruby/object:Gem::Version
82
- version: '0.2'
82
+ version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: minitest-spec-context
84
+ name: pg
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ~>
88
88
  - !ruby/object:Gem::Version
89
- version: 0.0.3
89
+ version: 0.17.1
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - ~>
95
95
  - !ruby/object:Gem::Version
96
- version: 0.0.3
96
+ version: 0.17.1
97
97
  - !ruby/object:Gem::Dependency
98
- name: coveralls
98
+ name: sqlite3
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - ! '>='