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 +8 -8
- data/README.md +20 -23
- data/data_task.gemspec +3 -2
- data/lib/data_task/adapters/greenplum.rb +0 -1
- data/lib/data_task/adapters/postgres.rb +6 -2
- data/lib/data_task/adapters/sqlite.rb +7 -3
- data/lib/data_task/version.rb +1 -1
- metadata +24 -24
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NzJlMjU4MzQwNWU2MTNjNjdiM2M1MDUxNWQ0OGM3MDIyZGMxZjM1ZQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
Y2M3MTBkMTZkN2I1ZTcwOTlhMzJlYzY1ODViMTJhZjg5Njc3NTkzNQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NzdkZDc3MGM4M2NkYTBmNTFlMDE3M2YyN2E2Y2M2ODNiZTA2YmFiOGNhZGM2
|
10
|
+
ZDNhYzA0NmZhZDQxZmUxM2UxMWZmOWViY2JhOGFhYmVlOGZhZDBjOGQwZDA3
|
11
|
+
ZTIyYmE0OGZhZGFhZDIzMTRmMTgwZmViNDVjMmE0YTQyODdkNjk=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
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
|
-
|
30
|
-
'
|
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
|
41
|
-
data
|
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
|
-
|
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
|
66
|
-
desc "Load a data file into
|
67
|
-
data
|
68
|
-
|
69
|
-
|
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.
|
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
|
78
|
+
$ rake analyzed
|
82
79
|
```
|
83
80
|
|
84
|
-
The contents of raw.txt should be in your table 'raw' on
|
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,8 +1,12 @@
|
|
1
|
-
|
2
|
-
|
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
|
-
|
2
|
-
|
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}
|
data/lib/data_task/version.rb
CHANGED
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.
|
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
|
+
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:
|
28
|
+
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
34
|
-
type: :
|
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:
|
40
|
+
version: '1.6'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
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: :
|
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:
|
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:
|
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:
|
68
|
+
version: 0.0.3
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: coveralls
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ! '>='
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '0
|
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
|
82
|
+
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: pg
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - ~>
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 0.
|
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.
|
96
|
+
version: 0.17.1
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: sqlite3
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - ! '>='
|