jtask 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -1
- data/changelist.txt +2 -13
- data/jtask.gemspec +3 -3
- data/lib/jtask.rb +2 -1
- data/lib/jtask/chop.rb +5 -1
- data/lib/jtask/destroy.rb +6 -2
- data/lib/jtask/get.rb +9 -7
- data/lib/jtask/kill.rb +6 -2
- data/lib/jtask/rename.rb +6 -2
- data/lib/jtask/save.rb +9 -5
- data/lib/jtask/update.rb +6 -2
- data/readme.md +111 -69
- data/todo.txt +2 -15
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f589f44037f5f3b2e2032dee07d5a47ebea4b3a6
|
4
|
+
data.tar.gz: 80d389752aea2d76dafdb73448b89b1ab7998a11
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1f41a63d10b147aff1c1901e9ea171fcdd05b98f207fb767a7a868b9002a333c2ff0698b7d77dcf9eefa77bfb3293a7e8498eb2862860d76c382c33c4e563f72
|
7
|
+
data.tar.gz: b15a34adffb7429425bb5495cfb8e6760959ec2445498ec84a8628348e95c7727d08c53581140e6302a8b8b841c6d5f79cffae7c76976bcae2e0bc91857b118d
|
data/.gitignore
CHANGED
data/changelist.txt
CHANGED
@@ -1,14 +1,3 @@
|
|
1
|
-
|
2
|
-
=====================================
|
3
|
-
- Released a major bug fix regarding the `JTask.get()` method (see: https://github.com/adammcarthur/jtask/issues/1)
|
4
|
-
- Minor code enhancements to the Get module.
|
5
|
-
- Error messages have been reformatted for both web and console use.
|
1
|
+
Moved changelist to:
|
6
2
|
|
7
|
-
|
8
|
-
=====================================
|
9
|
-
- Swapped gemspec description and summary (mix up error).
|
10
|
-
|
11
|
-
|
12
|
-
0.0.1 [Beta]
|
13
|
-
=====================================
|
14
|
-
- Initial release
|
3
|
+
https://github.com/adammcarthur/jtask/releases
|
data/jtask.gemspec
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'jtask'
|
3
|
-
s.version = '0.
|
3
|
+
s.version = '0.2.0'
|
4
4
|
s.platform = Gem::Platform::RUBY
|
5
|
-
s.date = '2014-
|
5
|
+
s.date = '2014-04-01'
|
6
6
|
s.description = "Provides CRUD actions for JSON files, plus a few extra goodies."
|
7
7
|
s.summary = "CRUD actions for JSON files."
|
8
8
|
s.authors = ["Adam McArthur"]
|
@@ -12,5 +12,5 @@ Gem::Specification.new do |s|
|
|
12
12
|
s.files = `git ls-files`.split($/)
|
13
13
|
s.require_paths = ["lib"]
|
14
14
|
s.add_runtime_dependency "json", "~> 1.4"
|
15
|
-
s.post_install_message = "\nThanks for installing JTask Beta. Check out the full documentation and contribute at https://github.com/adammcarthur/jtask\n\nIn this release (v0.
|
15
|
+
s.post_install_message = "\nThanks for installing JTask Beta. Check out the full documentation and contribute at https://github.com/adammcarthur/jtask\n\nIn this release (v0.2.0 Beta): JTask now outputs OpenStructs instead of Hashes. Read more about this update here: https://github.com/adammcarthur/jtask/issues/2\n\n- Adam (@adammcarth)\n-"
|
16
16
|
end
|
data/lib/jtask.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
###########################################################################
|
2
|
-
# ` JTask v0.
|
2
|
+
# ` JTask v0.2.0 Beta ` #
|
3
3
|
# ` Provides CRUD actions for JSON files, plus a few extra goodies. ` #
|
4
4
|
# ` Created by Adam McArthur (@adammcarth) ` #
|
5
5
|
# ` Released under the MIT licence ` #
|
@@ -9,6 +9,7 @@
|
|
9
9
|
class JTask
|
10
10
|
# Dependencies
|
11
11
|
require "rubygems"
|
12
|
+
require "ostruct"
|
12
13
|
require "json"
|
13
14
|
|
14
15
|
# Modules
|
data/lib/jtask/chop.rb
CHANGED
@@ -3,7 +3,11 @@ module Chop
|
|
3
3
|
# Check if user has specified a custom directory.
|
4
4
|
unless dir
|
5
5
|
# If not, a default folder is assigned.
|
6
|
-
|
6
|
+
if File.directory?("models/")
|
7
|
+
dir = "models/"
|
8
|
+
else
|
9
|
+
raise RuntimeError, "[JTask] The directory 'models/' doesn't exist in your current location. Please create it or refer to the documentation on how to change your file path."
|
10
|
+
end
|
7
11
|
end
|
8
12
|
original_file = File.read(File.join(dir, filename))
|
9
13
|
objects = JSON.parse(original_file)
|
data/lib/jtask/destroy.rb
CHANGED
@@ -3,11 +3,15 @@ module Destroy
|
|
3
3
|
# Check if user has specified a custom directory.
|
4
4
|
unless dir
|
5
5
|
# If not, a default folder is assigned.
|
6
|
-
|
6
|
+
if File.directory?("models/")
|
7
|
+
dir = "models/"
|
8
|
+
else
|
9
|
+
raise RuntimeError, "[JTask] The directory 'models/' doesn't exist in your current location. Please create it or refer to the documentation on how to change your file path."
|
10
|
+
end
|
7
11
|
end
|
8
12
|
original_file = File.read(File.join(dir, filename))
|
9
13
|
objects = JSON.parse(original_file)
|
10
|
-
|
14
|
+
|
11
15
|
if objects["#{id}"]
|
12
16
|
# Delete the object with id n from the objects hash
|
13
17
|
insert = objects.tap{ |x| x.delete("#{id}") }
|
data/lib/jtask/get.rb
CHANGED
@@ -6,7 +6,11 @@ module Get
|
|
6
6
|
# Check if user has specified a custom directory.
|
7
7
|
unless dir
|
8
8
|
# If not, a default folder is assigned.
|
9
|
-
|
9
|
+
if File.directory?("models/")
|
10
|
+
dir = "models/"
|
11
|
+
else
|
12
|
+
raise RuntimeError, "[JTask] The directory 'models/' doesn't exist in your current location. Please create it or refer to the documentation on how to change your file path."
|
13
|
+
end
|
10
14
|
end
|
11
15
|
original_file = File.read(File.join(dir, filename))
|
12
16
|
objects = JSON.parse(original_file)
|
@@ -21,7 +25,7 @@ module Get
|
|
21
25
|
id = method
|
22
26
|
|
23
27
|
if objects["#{id}"]
|
24
|
-
output = { "id" => id.to_i }.merge(objects["#{id}"])
|
28
|
+
output = OpenStruct.new({ "id" => id.to_i }.merge(objects["#{id}"]))
|
25
29
|
else
|
26
30
|
# id supplied doesn't exist
|
27
31
|
raise NameError, "[JTask] The id #{method} could not be found in the file \"#{dir + filename}\"."
|
@@ -47,11 +51,9 @@ module Get
|
|
47
51
|
end
|
48
52
|
end
|
49
53
|
# Loop through each required record and
|
50
|
-
#
|
51
|
-
|
52
|
-
required_records.
|
53
|
-
output.push({ "id" => id.to_i }.merge(record))
|
54
|
-
end
|
54
|
+
# assemble each key-value into the open structure output.
|
55
|
+
# Map all openstructs to an array.
|
56
|
+
output = required_records.map { |id, record| OpenStruct.new({ "id" => id.to_i }.merge(record)) }
|
55
57
|
end
|
56
58
|
|
57
59
|
return output
|
data/lib/jtask/kill.rb
CHANGED
@@ -3,12 +3,16 @@ module Kill
|
|
3
3
|
# Check if user has specified a custom directory.
|
4
4
|
unless dir
|
5
5
|
# If not, a default folder is assigned.
|
6
|
-
|
6
|
+
if File.directory?("models/")
|
7
|
+
dir = "models/"
|
8
|
+
else
|
9
|
+
raise RuntimeError, "[JTask] The directory 'models/' doesn't exist in your current location. Please create it or refer to the documentation on how to change your file path."
|
10
|
+
end
|
7
11
|
end
|
8
12
|
|
9
13
|
# Delete the file
|
10
14
|
File.delete(File.join(dir, filename))
|
11
|
-
|
15
|
+
|
12
16
|
return true
|
13
17
|
end
|
14
18
|
end
|
data/lib/jtask/rename.rb
CHANGED
@@ -3,9 +3,13 @@ module Rename
|
|
3
3
|
# Check if user has specified a custom directory.
|
4
4
|
unless dir
|
5
5
|
# If not, a default folder is assigned.
|
6
|
-
|
6
|
+
if File.directory?("models/")
|
7
|
+
dir = "models/"
|
8
|
+
else
|
9
|
+
raise RuntimeError, "[JTask] The directory 'models/' doesn't exist in your current location. Please create it or refer to the documentation on how to change your file path."
|
10
|
+
end
|
7
11
|
end
|
8
|
-
|
12
|
+
|
9
13
|
# Rename the file
|
10
14
|
File.rename(File.join(dir, filename), File.join(dir, new))
|
11
15
|
|
data/lib/jtask/save.rb
CHANGED
@@ -3,7 +3,11 @@ module Save
|
|
3
3
|
# Check if user has specified a custom directory.
|
4
4
|
unless dir
|
5
5
|
# If not, a default folder is assigned.
|
6
|
-
|
6
|
+
if File.directory?("models/")
|
7
|
+
dir = "models/"
|
8
|
+
else
|
9
|
+
raise RuntimeError, "[JTask] The directory 'models/' doesn't exist in your current location. Please create it or refer to the documentation on how to change your file path."
|
10
|
+
end
|
7
11
|
end
|
8
12
|
# Check if the file already exists
|
9
13
|
unless File.exists?(File.join(dir, filename))
|
@@ -14,7 +18,7 @@ module Save
|
|
14
18
|
unless parameters.is_a?(Hash)
|
15
19
|
raise SyntaxError, "[JTask] Invalid value supplied to the parameters variable. Ensure your parameters are in the symbol hash form, eg - {name: \"Adam\", city: \"Melbourne\"}"
|
16
20
|
end
|
17
|
-
|
21
|
+
|
18
22
|
original_file = File.read(File.join(dir, filename))
|
19
23
|
objects = JSON.parse(original_file)
|
20
24
|
# Set the id of the new object
|
@@ -25,10 +29,10 @@ module Save
|
|
25
29
|
# No current objects exist yet, so set the id to 1
|
26
30
|
nextid = 1
|
27
31
|
end
|
28
|
-
|
32
|
+
|
29
33
|
# Remove last character "}" from file.
|
30
34
|
insert = File.read(File.join(dir, filename))[0..-2]
|
31
|
-
|
35
|
+
|
32
36
|
insert << "," if (objects.to_a).first # add a comma if at least one object already exists
|
33
37
|
insert << "\"#{nextid.to_s}\":"
|
34
38
|
insert << parameters.to_json
|
@@ -36,7 +40,7 @@ module Save
|
|
36
40
|
insert << "}"
|
37
41
|
# Re-write the file with the new version.
|
38
42
|
File.write(File.join(dir, filename), insert)
|
39
|
-
|
43
|
+
|
40
44
|
return true
|
41
45
|
end
|
42
46
|
end
|
data/lib/jtask/update.rb
CHANGED
@@ -3,7 +3,11 @@ module Update
|
|
3
3
|
# Check if user has specified a custom directory.
|
4
4
|
unless dir
|
5
5
|
# If not, a default folder is assigned.
|
6
|
-
|
6
|
+
if File.directory?("models/")
|
7
|
+
dir = "models/"
|
8
|
+
else
|
9
|
+
raise RuntimeError, "[JTask] The directory 'models/' doesn't exist in your current location. Please create it or refer to the documentation on how to change your file path."
|
10
|
+
end
|
7
11
|
end
|
8
12
|
original_file = File.read(File.join(dir, filename))
|
9
13
|
objects = JSON.parse(original_file)
|
@@ -13,7 +17,7 @@ module Update
|
|
13
17
|
# Update (or add) each parameter
|
14
18
|
insert["#{id}"][k.to_s] = v
|
15
19
|
end
|
16
|
-
|
20
|
+
|
17
21
|
# Re-write the file with the new version.
|
18
22
|
File.write(File.join(dir, filename), insert.to_json)
|
19
23
|
|
data/readme.md
CHANGED
@@ -2,114 +2,156 @@
|
|
2
2
|
|
3
3
|
JTask provides CRUD actions for storage of data in JSON format inside text files. It's very useful for times when databases cannot be used to store data, or a simple storage & retrieval mechanism is required. It can act just like a database, check it out:
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
JTask.save("preferences", {background_color: "black", font_size: "medium"})
|
8
|
-
#=> true
|
5
|
+
``` ruby
|
6
|
+
require "jtask"
|
9
7
|
|
10
|
-
|
11
|
-
|
8
|
+
JTask.save("preferences", {background_color: "black", font_size: "medium"})
|
9
|
+
#=> true
|
12
10
|
|
13
|
-
|
11
|
+
JTask.get("preferences", last: 1).font_size
|
12
|
+
#=> "medium"
|
13
|
+
```
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
{
|
18
|
-
"1": {
|
19
|
-
"background_colour": "black",
|
20
|
-
"font_size": "medium"
|
21
|
-
}
|
22
|
-
}
|
15
|
+
The above example stores the settings in a file called `preferences` using JSON. We then get the last object saved to the file and output the value of the `"font_size"` key.
|
23
16
|
|
24
|
-
|
17
|
+
**Example of JTask storage file:**
|
25
18
|
|
26
|
-
|
19
|
+
``` json
|
20
|
+
{
|
21
|
+
"1": {
|
22
|
+
"background_colour": "black",
|
23
|
+
"font_size": "medium"
|
24
|
+
}
|
25
|
+
}
|
26
|
+
```
|
27
|
+
|
28
|
+
JTask can even act as a management system for already exisiting json files. Please note that a few adjustments will need to be made to your files beforehand - check out the [JTask.convert()](https://github.com/adammcarthur/jtask/wiki/JTask.convert() "Configure existing json files for JTask") wiki guide for more information.
|
29
|
+
|
30
|
+
## Getting Started
|
31
|
+
``` bash
|
32
|
+
gem install jtask
|
33
|
+
```
|
34
|
+
|
35
|
+
``` ruby
|
36
|
+
# Include the jtask library where necassary
|
37
|
+
require "jtask"
|
38
|
+
|
39
|
+
# Tell JTask where your files are [optional]
|
40
|
+
jtask.settings do |s|
|
41
|
+
s.file_dir = "path/to/jtask_files"
|
42
|
+
end
|
43
|
+
```
|
44
|
+
|
45
|
+
### [JTask.save(filename, parameters, dir=nil)](https://github.com/adammcarthur/jtask/wiki/JTask.save() "View full guide")
|
27
46
|
*Saves a hash of parameters to the requested file.*
|
28
47
|
|
29
|
-
|
30
|
-
|
48
|
+
``` ruby
|
49
|
+
JTask.save("foods", {entree: "cheese", main: "hamburger", desert: "cake"})
|
50
|
+
```
|
51
|
+
|
31
52
|
You can use file extensions if you want (makes no difference), as well as set a custom directory for the file. The default directory JTask will look in is `/models`.
|
32
53
|
|
33
|
-
|
34
|
-
|
54
|
+
``` ruby
|
55
|
+
JTask.save("users.json", {username: "adam", twitter: "@adammcarth"}, "files/")
|
56
|
+
```
|
57
|
+
|
35
58
|
Notes:
|
36
59
|
|
37
60
|
- **JTask will automatically create the files** for you on save if they don't exist.
|
38
61
|
- To prepare already existing files for JTask operations, they must only contain `{}` inside.
|
39
62
|
- When setting a custom directory, ensure it ends with `/`.
|
40
63
|
|
41
|
-
### JTask.get(filename, method=nil, dir=nil)
|
42
|
-
*Retrieves stored JSON data from the file and returns
|
64
|
+
### [JTask.get(filename, method=nil, dir=nil)](https://github.com/adammcarthur/jtask/wiki/JTask.get() "View full guide")
|
65
|
+
*Retrieves stored JSON data from the file and returns an OpenStruct.*
|
66
|
+
|
67
|
+
``` ruby
|
68
|
+
JTask.get("email_subscribers")
|
69
|
+
#=> [ <OpenStruct "id"=1 "email"=>"gary@google.com">, <OpenStruct "id"=>2 "email"=>"blah"> ... ]
|
70
|
+
```
|
43
71
|
|
44
|
-
JTask.get("email_subscribers")
|
45
|
-
|
46
|
-
#=> {"1"=>{"email"=>"gary@google.com"}, "2"=>{"email"=>"john@isp.net"}...}
|
47
|
-
|
48
72
|
As seen above - calling JTask.get() without a method argument will return **all** the records stored. Let's now try and get the 50th email subscriber's email address:
|
49
73
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
74
|
+
``` ruby
|
75
|
+
@subscriber = JTask.get("email_subscribers", 50)
|
76
|
+
#=> <OpenStruct "id"="50" "email"="yukihiro@matsumoto.net">
|
77
|
+
|
78
|
+
@subscriber.email
|
79
|
+
#=> "yukihiro@matsumoto.net"
|
80
|
+
```
|
81
|
+
|
56
82
|
JTask also comes with a few retrieval methods similar to Active Record. Let's get the **first and last** `n` email subscribers:
|
57
83
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
84
|
+
``` ruby
|
85
|
+
JTask.get("email_subscribers", first: 25)
|
86
|
+
#=> [ <OpenStruct "id"=1>, <OpenStruct "id"=2>, ..., <OpenStruct "id"=25> ]
|
87
|
+
|
88
|
+
JTask.get("email_subscribers", last: 1)
|
89
|
+
#=> <OpenStruct "id"=365 "email"="goo@goo.gl">
|
90
|
+
```
|
63
91
|
|
64
|
-
### JTask.update(filename, id, parameters, dir=nil)
|
65
|
-
*Updates the
|
92
|
+
### [JTask.update(filename, id, parameters, dir=nil)](https://github.com/adammcarthur/jtask/wiki/JTask.update() "View full guide")
|
93
|
+
*Updates the `id` json object with a new set of parameters.*
|
66
94
|
|
67
|
-
|
95
|
+
``` ruby
|
96
|
+
JTask.update("ui_settings", 42, {show_ads: "no", background: "grey"})
|
97
|
+
```
|
68
98
|
|
69
99
|
JTask upgrades records gracefully - parameters already existing inside the JSON object will be replaced with the new value, whereas new parameters will be added.
|
70
100
|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
101
|
+
``` ruby
|
102
|
+
# Original Version
|
103
|
+
<OpenStruct "id"=42 "show_ads"="yes">
|
104
|
+
|
105
|
+
# Updated Version
|
106
|
+
<OpenStruct "id"=42 "show_ads"="no" "background"="grey">
|
107
|
+
```
|
76
108
|
|
77
109
|
To completely remove parameters (the entire key-value pair) from objects, refer to the JTask.chop() method below.
|
78
110
|
|
79
|
-
### JTask.destroy(filename, id, dir=nil)
|
111
|
+
### [JTask.destroy(filename, id, dir=nil)](https://github.com/adammcarthur/jtask/wiki/JTask.destroy() "View full guide")
|
80
112
|
*Removes an entire object from the file.*
|
81
113
|
|
82
|
-
|
83
|
-
|
84
|
-
|
114
|
+
``` ruby
|
115
|
+
JTask.destroy("twitter_names", 15)
|
116
|
+
```
|
117
|
+
|
118
|
+
### [JTask.chop(filename, id, paramter, dir=nil)](https://github.com/adammcarthur/jtask/wiki/JTask.chop() "View full guide")
|
85
119
|
*Removes an entire key-value pair (or parameter) from one or all of the file's objects.*
|
86
120
|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
121
|
+
``` ruby
|
122
|
+
JTask.chop("users", 4, "session_data")
|
123
|
+
|
124
|
+
JTask.chop("users", :all, "session_data")
|
125
|
+
```
|
126
|
+
|
91
127
|
Impact:
|
92
128
|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
# New Version
|
97
|
-
{ "4" => { "user_id" => "p18573" } }
|
98
|
-
|
99
|
-
The second example uses `:all` instead of an id. This would perform the same operation, but to all objects inside the target file (instead of a specific id).
|
129
|
+
``` ruby
|
130
|
+
# Old Version
|
131
|
+
<OpenStruct "id"=4 "user_id"="p18573" "session_data"="34F3jkdf9azfvVak2">
|
100
132
|
|
101
|
-
|
133
|
+
# New Version
|
134
|
+
<OpenStruct "id"=4 "user_id"="p18573">
|
135
|
+
```
|
136
|
+
|
137
|
+
The second example uses `:all` instead of an id. This would perform the same operation, but to all objects inside the target file (instead of a specific id). [Make sure you read the Chop wiki page](https://github.com/adammcarthur/jtask/wiki/JTask.chop()) to learn more.
|
138
|
+
|
139
|
+
### [JTask.rename(filename, new, dir=nil)](https://github.com/adammcarthur/jtask/wiki/JTask.rename() "View full guide")
|
102
140
|
*Simply renames the file to something different.*
|
103
141
|
|
104
|
-
|
105
|
-
|
106
|
-
|
142
|
+
``` ruby
|
143
|
+
JTask.rename("orders", "online_orders")
|
144
|
+
```
|
145
|
+
|
146
|
+
### [JTask.kill(filename, dir=nil)](https://github.com/adammcarthur/jtask/wiki/JTask.kill() "View full guide")
|
107
147
|
*Completely removes the entire file specified from the system.*
|
108
148
|
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
149
|
+
``` ruby
|
150
|
+
# Proceed with caution, the will delete the entire
|
151
|
+
# file and it cannot be recovered.
|
152
|
+
JTask.kill("not_needed_anymore.json")
|
153
|
+
```
|
154
|
+
|
113
155
|
## Share your ideas and contribute
|
114
156
|
|
115
157
|
I'd love to here what you plan to use JTask for. [Let me know via twitter](https://twitter.com/adammcarth), or email your thoughts and ideas to [adam@adammcarthur.net](mailto:adam@adammcarthur.net).
|
data/todo.txt
CHANGED
@@ -1,16 +1,3 @@
|
|
1
|
-
|
1
|
+
To do list moved to "enhancment" issues section on GitHub:
|
2
2
|
|
3
|
-
|
4
|
-
method cleaner when selecting hash elements.
|
5
|
-
|
6
|
-
Eg - JTask.get("email_subscribers", 5).email
|
7
|
-
|
8
|
-
For more information, see ActiveRecord's implementation of method_missing().
|
9
|
-
|
10
|
-
2. Add an encryption feature?
|
11
|
-
|
12
|
-
3. Allow users to set the default directory.
|
13
|
-
|
14
|
-
4. Clean up repeated code!!!
|
15
|
-
|
16
|
-
5. Make file writes more efficient (to prevent scaling issues). Currently, files are completely re-written with the new version on save(), update(), chop() and destroy().
|
3
|
+
https://github.com/adammcarthur/jtask/issues?labels=enhancement
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jtask
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam McArthur
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-04-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -52,7 +52,7 @@ post_install_message: |2-
|
|
52
52
|
|
53
53
|
Thanks for installing JTask Beta. Check out the full documentation and contribute at https://github.com/adammcarthur/jtask
|
54
54
|
|
55
|
-
In this release (v0.
|
55
|
+
In this release (v0.2.0 Beta): JTask now outputs OpenStructs instead of Hashes. Read more about this update here: https://github.com/adammcarthur/jtask/issues/2
|
56
56
|
|
57
57
|
- Adam (@adammcarth)
|
58
58
|
-
|