jtask 0.1.0 → 0.2.0
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 +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
|
-
|