asana 0.0.4 → 0.0.5
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 +15 -0
- data/README.md +38 -1
- data/asana.gemspec +1 -2
- data/lib/asana.rb +1 -0
- data/lib/asana/resources/project.rb +0 -7
- data/lib/asana/resources/tag.rb +28 -0
- data/lib/asana/resources/task.rb +29 -0
- data/lib/asana/resources/workspace.rb +11 -0
- data/lib/asana/version.rb +1 -1
- data/spec/asana/resources/project_spec.rb +0 -8
- data/spec/asana/resources/tag_spec.rb +63 -0
- data/spec/asana/resources/task_spec.rb +30 -1
- data/spec/asana/resources/workspace_spec.rb +10 -1
- metadata +10 -38
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
YWVkYTQzZjIzNWRmYWY4OWE1OWUyN2E4ZDIzY2MyOWYzMmE3MzI5Zg==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
NjU1MzU5MGIwM2RhMWE3ZGUzZDQxMTdkZjE5NTY2MTZmYmQ5YjkyMQ==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
NWUxMWUwMWIwZWFkMTdkODUxOTM1N2Q3YjYyNmE0NmFjYjIwOTYxNGNlOTk3
|
10
|
+
MDQyYTQ3ODg5ZTllZjhlZDE0ZmZkOTNmMWM5NGEyZTMyYTU1MTc0NjlmYzA3
|
11
|
+
OTg0OGE1Y2JmZDQ3NTljYzdjN2U0OTk5YmJkNmUwOTM1NDc0ZWY=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
M2E3YjUwNDE1YWJmYTRiMmZkMjA1OTYyYjVkMDc3NDdiZThhYzdlZTMwMTA0
|
14
|
+
ZDk5Y2QxNWUyZTA0ZDQzMGJkMmFiMTRkMDVjMmQ1ZTAwMDRkMGExY2U3Yjg2
|
15
|
+
M2U3NGUyNmYxMDJlYmQxODNiNTI5YzZiOGE0ZWNiZjA3YjJmMjY=
|
data/README.md
CHANGED
@@ -87,11 +87,17 @@ tasks = workspace.tasks(:user_id)
|
|
87
87
|
# Get all users with access to a given workspace
|
88
88
|
users = workspace.users
|
89
89
|
|
90
|
+
# Get all tags in a given workspace
|
91
|
+
tags = workspace.tags
|
92
|
+
|
90
93
|
# Create a new task in a given workspace and assign it to the current user
|
91
94
|
workspace.create_task(:name => 'Get milk from the grocery store')
|
92
95
|
|
93
96
|
# Create a new project in a given workspace, current user as a watcher
|
94
97
|
workspace.create_project(:name => 'Upgrade Asana gem')
|
98
|
+
|
99
|
+
# Create a new tag in a given workspace
|
100
|
+
workspace.create_tag(:name => 'Programming')
|
95
101
|
```
|
96
102
|
|
97
103
|
### [Projects][]
|
@@ -133,6 +139,10 @@ tasks = project.tasks
|
|
133
139
|
workspace = Asana::Workspace.find(:workspace_id)
|
134
140
|
tasks = workspace.tasks
|
135
141
|
|
142
|
+
# Get all tasks with a given tag
|
143
|
+
tag = Asana::Tag.find(:tag_id)
|
144
|
+
tasks = tag.tasks
|
145
|
+
|
136
146
|
# Get all stories for a given task
|
137
147
|
task = tasks.first
|
138
148
|
stories = task.stories
|
@@ -147,6 +157,33 @@ task.create_story(story_settings)
|
|
147
157
|
task.add_project(project.id)
|
148
158
|
```
|
149
159
|
|
160
|
+
### [Tags][]
|
161
|
+
|
162
|
+
> A tag is a label that can be attached to any task in Asana. It exists in
|
163
|
+
> a single workspace or organization.
|
164
|
+
>
|
165
|
+
> Tags have some metadata associated with them, but it is possible that we will
|
166
|
+
> simplify them in the future so it is not encouraged to rely too heavily on
|
167
|
+
> it. Unlike projects, tags do not provide any ordering on the tasks they are
|
168
|
+
> associated with.
|
169
|
+
|
170
|
+
```ruby
|
171
|
+
# Get all tags in a given workspace
|
172
|
+
workspace = Asana::Workspace.find(:workspace_id)
|
173
|
+
tags = workspace.tags
|
174
|
+
|
175
|
+
# Get all tasks with a given tag
|
176
|
+
tag = Asana::Tag.find(:tag_id)
|
177
|
+
tasks = tag.tasks
|
178
|
+
|
179
|
+
# Create a new tag in a given workspace
|
180
|
+
workspace.create_tag(:name => 'Programming')
|
181
|
+
|
182
|
+
# Update a tag
|
183
|
+
tag = Asana::Tag.find(:tag_id)
|
184
|
+
tag.modify(:name => 'Development')
|
185
|
+
```
|
186
|
+
|
150
187
|
### [Stories][]
|
151
188
|
|
152
189
|
> A story represents an activity associated with an object in the Asana
|
@@ -167,7 +204,6 @@ story = Story.find(:story_id)
|
|
167
204
|
|
168
205
|
# Create a new story for the given task/project
|
169
206
|
task.create_story(story_settings)
|
170
|
-
project.create_story(story_settings)
|
171
207
|
```
|
172
208
|
|
173
209
|
## Contributing
|
@@ -186,3 +222,4 @@ project.create_story(story_settings)
|
|
186
222
|
[Projects]: http://developer.asana.com/documentation/#projects
|
187
223
|
[Tasks]: http://developer.asana.com/documentation/#tasks
|
188
224
|
[Stories]: http://developer.asana.com/documentation/#stories
|
225
|
+
[Tags]: http://developer.asana.com/documentation/#tags
|
data/asana.gemspec
CHANGED
@@ -10,8 +10,7 @@ Gem::Specification.new do |gem|
|
|
10
10
|
|
11
11
|
gem.add_dependency 'activeresource', '~> 3.2.3'
|
12
12
|
|
13
|
-
gem.add_development_dependency '
|
14
|
-
gem.add_development_dependency 'guard-minitest', '~> 0.5.0'
|
13
|
+
gem.add_development_dependency 'guard-minitest', '~> 1.0.0'
|
15
14
|
gem.add_development_dependency 'minitest', '~> 2.12.1'
|
16
15
|
gem.add_development_dependency 'rake', '~> 0.9.2.2'
|
17
16
|
gem.add_development_dependency 'vcr', '~> 2.1.0'
|
data/lib/asana.rb
CHANGED
@@ -23,13 +23,6 @@ module Asana
|
|
23
23
|
response = Project.put(self.id, nil, resource.to_json)
|
24
24
|
Project.new(connection.format.decode(response.body))
|
25
25
|
end
|
26
|
-
|
27
|
-
def create_story(*args)
|
28
|
-
path = "#{self.id}/stories"
|
29
|
-
story = Story.new(args.first)
|
30
|
-
response = Project.post(path, nil, story.to_json)
|
31
|
-
Story.new(connection.format.decode(response.body))
|
32
|
-
end
|
33
26
|
|
34
27
|
end
|
35
28
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Asana
|
2
|
+
class Tag < Asana::Resource
|
3
|
+
|
4
|
+
alias :create :method_not_allowed
|
5
|
+
alias :destroy :method_not_allowed
|
6
|
+
|
7
|
+
def self.all_by_task(*args)
|
8
|
+
parent_resources :task
|
9
|
+
all(*args)
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.all_by_workspace(*args)
|
13
|
+
parent_resources :workspace
|
14
|
+
all(*args)
|
15
|
+
end
|
16
|
+
|
17
|
+
def tasks
|
18
|
+
Task.all_by_tag(:params => { :tag_id => self.id })
|
19
|
+
end
|
20
|
+
|
21
|
+
def modify(modified_fields)
|
22
|
+
resource = Resource.new(modified_fields)
|
23
|
+
response = Tag.put(self.id, nil, resource.to_json)
|
24
|
+
Tag.new(connection.format.decode(response.body))
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
data/lib/asana/resources/task.rb
CHANGED
@@ -6,6 +6,11 @@ module Asana
|
|
6
6
|
all(*args)
|
7
7
|
end
|
8
8
|
|
9
|
+
def self.all_by_tag(*args)
|
10
|
+
parent_resources :tag
|
11
|
+
all(*args)
|
12
|
+
end
|
13
|
+
|
9
14
|
def self.all_by_workspace(*args)
|
10
15
|
parent_resources :workspace
|
11
16
|
all(*args)
|
@@ -21,6 +26,10 @@ module Asana
|
|
21
26
|
Project.all_by_task(:params => { :task_id => self.id })
|
22
27
|
end
|
23
28
|
|
29
|
+
def tags
|
30
|
+
Tag.all_by_task(:params => { :task_id => self.id })
|
31
|
+
end
|
32
|
+
|
24
33
|
def add_project(project_id)
|
25
34
|
path = "#{self.id}/addProject"
|
26
35
|
resource = Resource.new({:project => project_id})
|
@@ -28,6 +37,13 @@ module Asana
|
|
28
37
|
self
|
29
38
|
end
|
30
39
|
|
40
|
+
def add_tag(tag_id)
|
41
|
+
path = "#{self.id}/addTag"
|
42
|
+
resource = Resource.new({:tag => tag_id})
|
43
|
+
Task.post(path, nil, resource.to_json)
|
44
|
+
self
|
45
|
+
end
|
46
|
+
|
31
47
|
def create_story(*args)
|
32
48
|
path = "#{self.id}/stories"
|
33
49
|
options = { :task => self.id }
|
@@ -40,5 +56,18 @@ module Asana
|
|
40
56
|
Story.all_by_task(:params => { :task_id => self.id })
|
41
57
|
end
|
42
58
|
|
59
|
+
def create_subtask(*args)
|
60
|
+
path = "#{self.id}/subtasks"
|
61
|
+
options = { :task => self.id }
|
62
|
+
task = Task.new(options.merge(args.first))
|
63
|
+
response = Task.post(path, nil, task.to_json)
|
64
|
+
Task.new(connection.format.decode(response.body).merge parent: self)
|
65
|
+
end
|
66
|
+
|
67
|
+
def subtasks
|
68
|
+
path = "#{self.id}/subtasks"
|
69
|
+
Task.get(path, nil).map { |subtask| Task.new(subtask.merge(parent: self)) }
|
70
|
+
end
|
71
|
+
|
43
72
|
end
|
44
73
|
end
|
@@ -27,6 +27,17 @@ module Asana
|
|
27
27
|
Task.new(connection.format.decode(response.body))
|
28
28
|
end
|
29
29
|
|
30
|
+
def tags
|
31
|
+
Tag.all_by_workspace(:params => { :workspace_id => self.id })
|
32
|
+
end
|
33
|
+
|
34
|
+
def create_tag(*args)
|
35
|
+
options = { :workspace => self.id }
|
36
|
+
tag = Tag.new(options.merge(args.first))
|
37
|
+
response = Tag.post(nil, nil, tag.to_json)
|
38
|
+
Tag.new(connection.format.decode(response.body))
|
39
|
+
end
|
40
|
+
|
30
41
|
def users
|
31
42
|
User.all_by_workspace(:params => { :workspace_id => self.id })
|
32
43
|
end
|
data/lib/asana/version.rb
CHANGED
@@ -59,13 +59,5 @@ module Asana
|
|
59
59
|
end
|
60
60
|
end
|
61
61
|
|
62
|
-
describe '#create_story' do
|
63
|
-
it 'should create a new story for the given project' do
|
64
|
-
project = Workspace.all.first.create_project(:name => 'asana-test-project-story')
|
65
|
-
story = project.create_story(:text => 'foo')
|
66
|
-
story.must_be_instance_of Story
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
62
|
end
|
71
63
|
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require_relative '../../spec_helper'
|
2
|
+
|
3
|
+
module Asana
|
4
|
+
describe Tag do
|
5
|
+
|
6
|
+
before do
|
7
|
+
VCR.insert_cassette('tags', :record => :all)
|
8
|
+
Asana.configure do |c|
|
9
|
+
c.api_key = ENV['ASANA_API_KEY']
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
after do
|
14
|
+
VCR.eject_cassette
|
15
|
+
end
|
16
|
+
|
17
|
+
describe '.all' do
|
18
|
+
it 'should return all of the user\'s tags' do
|
19
|
+
tags = Tag.all
|
20
|
+
tags.must_be_instance_of Array
|
21
|
+
tags.first.must_be_instance_of Tag
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe '.create' do
|
26
|
+
it 'should raise an ActiveResource::MethodNotAllowed exception' do
|
27
|
+
tag = Tag.new
|
28
|
+
lambda { tag.save }.must_raise ActiveResource::MethodNotAllowed
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe '.find' do
|
33
|
+
it 'should return a single tag' do
|
34
|
+
tag = Tag.find(Tag.all.first.id)
|
35
|
+
tag.must_be_instance_of Tag
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe '#destroy' do
|
40
|
+
it 'should raise an ActiveResource::MethodNotAllowed exception' do
|
41
|
+
tag = Tag.all.first
|
42
|
+
lambda { tag.destroy}.must_raise ActiveResource::MethodNotAllowed
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe '#modify' do
|
47
|
+
it 'should modify the given tag with a new name' do
|
48
|
+
tag = Workspace.all.first.create_tag(:name => 'asana-test-tag-foo')
|
49
|
+
tag.modify(:name => 'asana-test-tag-bar').name.must_equal 'asana-test-tag-bar'
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe '#tasks' do
|
54
|
+
it 'should return all tasks for the given tag' do
|
55
|
+
tag = Tag.all.first
|
56
|
+
tasks = tag.tasks
|
57
|
+
tasks.must_be_instance_of Array
|
58
|
+
tasks.first.must_be_instance_of Task
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
end
|
@@ -44,7 +44,15 @@ module Asana
|
|
44
44
|
task.add_project project.id
|
45
45
|
end
|
46
46
|
end
|
47
|
-
|
47
|
+
|
48
|
+
describe '#add_tag' do
|
49
|
+
it 'should add the tag to the given task' do
|
50
|
+
task = Workspace.all.first.create_task(:name => 'asana-test-task-add-tag', :assignee => 'me')
|
51
|
+
tag = Workspace.all.first.create_tag(:name => 'asana-test-task-parent-tag')
|
52
|
+
task.add_tag tag.id
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
48
56
|
describe '#create_story' do
|
49
57
|
it 'should create a new story for the given task' do
|
50
58
|
task = Project.all.first.tasks.first
|
@@ -62,5 +70,26 @@ module Asana
|
|
62
70
|
end
|
63
71
|
end
|
64
72
|
|
73
|
+
describe '#create_subtask' do
|
74
|
+
it 'should create a new subtask for the given task' do
|
75
|
+
task = Project.all.first.tasks.first
|
76
|
+
subtask = task.create_subtask(:name => 'asana-test-subtask', :assignee => 'me')
|
77
|
+
subtask.must_be_instance_of Task
|
78
|
+
subtask.parent.must_be_instance_of Task
|
79
|
+
subtask.parent.id.must_equal task.id
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
describe '#subtasks' do
|
84
|
+
it 'should return all subtasks for the given task' do
|
85
|
+
task = Project.all.first.tasks.first
|
86
|
+
subtasks = task.subtasks
|
87
|
+
subtasks.must_be_instance_of Array
|
88
|
+
subtasks.first.must_be_instance_of Task
|
89
|
+
subtasks.first.parent.must_be_instance_of Task
|
90
|
+
subtasks.first.parent.id.must_equal task.id
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
65
94
|
end
|
66
95
|
end
|
@@ -50,7 +50,7 @@ module Asana
|
|
50
50
|
project = workspace.create_project(:name => 'asana-test-project')
|
51
51
|
project.must_be_instance_of Project
|
52
52
|
end
|
53
|
-
end
|
53
|
+
end
|
54
54
|
|
55
55
|
describe '#update' do
|
56
56
|
it 'should update the given workspace with a new name' do
|
@@ -76,6 +76,15 @@ module Asana
|
|
76
76
|
end
|
77
77
|
end
|
78
78
|
|
79
|
+
describe '#tags' do
|
80
|
+
it 'should return all tags for the given workspace' do
|
81
|
+
workspace = Workspace.all.first
|
82
|
+
tags = workspace.tags
|
83
|
+
tags.must_be_instance_of Array
|
84
|
+
tags.first.must_be_instance_of Tag
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
79
88
|
describe '#tasks' do
|
80
89
|
it 'should return all tasks for the given workspace' do
|
81
90
|
workspace = Workspace.all.first
|
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: asana
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.5
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Ryan Bright
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2013-07-14 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: activeresource
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,47 +20,27 @@ dependencies:
|
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: 3.2.3
|
30
|
-
- !ruby/object:Gem::Dependency
|
31
|
-
name: growl
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
|
-
requirements:
|
35
|
-
- - ~>
|
36
|
-
- !ruby/object:Gem::Version
|
37
|
-
version: 1.0.3
|
38
|
-
type: :development
|
39
|
-
prerelease: false
|
40
|
-
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - ~>
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: 1.0.3
|
46
27
|
- !ruby/object:Gem::Dependency
|
47
28
|
name: guard-minitest
|
48
29
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
30
|
requirements:
|
51
31
|
- - ~>
|
52
32
|
- !ruby/object:Gem::Version
|
53
|
-
version: 0.
|
33
|
+
version: 1.0.0
|
54
34
|
type: :development
|
55
35
|
prerelease: false
|
56
36
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
37
|
requirements:
|
59
38
|
- - ~>
|
60
39
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.
|
40
|
+
version: 1.0.0
|
62
41
|
- !ruby/object:Gem::Dependency
|
63
42
|
name: minitest
|
64
43
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
44
|
requirements:
|
67
45
|
- - ~>
|
68
46
|
- !ruby/object:Gem::Version
|
@@ -70,7 +48,6 @@ dependencies:
|
|
70
48
|
type: :development
|
71
49
|
prerelease: false
|
72
50
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
51
|
requirements:
|
75
52
|
- - ~>
|
76
53
|
- !ruby/object:Gem::Version
|
@@ -78,7 +55,6 @@ dependencies:
|
|
78
55
|
- !ruby/object:Gem::Dependency
|
79
56
|
name: rake
|
80
57
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
58
|
requirements:
|
83
59
|
- - ~>
|
84
60
|
- !ruby/object:Gem::Version
|
@@ -86,7 +62,6 @@ dependencies:
|
|
86
62
|
type: :development
|
87
63
|
prerelease: false
|
88
64
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
65
|
requirements:
|
91
66
|
- - ~>
|
92
67
|
- !ruby/object:Gem::Version
|
@@ -94,7 +69,6 @@ dependencies:
|
|
94
69
|
- !ruby/object:Gem::Dependency
|
95
70
|
name: vcr
|
96
71
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
72
|
requirements:
|
99
73
|
- - ~>
|
100
74
|
- !ruby/object:Gem::Version
|
@@ -102,7 +76,6 @@ dependencies:
|
|
102
76
|
type: :development
|
103
77
|
prerelease: false
|
104
78
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
79
|
requirements:
|
107
80
|
- - ~>
|
108
81
|
- !ruby/object:Gem::Version
|
@@ -110,7 +83,6 @@ dependencies:
|
|
110
83
|
- !ruby/object:Gem::Dependency
|
111
84
|
name: webmock
|
112
85
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
86
|
requirements:
|
115
87
|
- - ~>
|
116
88
|
- !ruby/object:Gem::Version
|
@@ -118,7 +90,6 @@ dependencies:
|
|
118
90
|
type: :development
|
119
91
|
prerelease: false
|
120
92
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
93
|
requirements:
|
123
94
|
- - ~>
|
124
95
|
- !ruby/object:Gem::Version
|
@@ -142,45 +113,46 @@ files:
|
|
142
113
|
- lib/asana/resource.rb
|
143
114
|
- lib/asana/resources/project.rb
|
144
115
|
- lib/asana/resources/story.rb
|
116
|
+
- lib/asana/resources/tag.rb
|
145
117
|
- lib/asana/resources/task.rb
|
146
118
|
- lib/asana/resources/user.rb
|
147
119
|
- lib/asana/resources/workspace.rb
|
148
120
|
- lib/asana/version.rb
|
149
121
|
- spec/asana/resources/project_spec.rb
|
150
122
|
- spec/asana/resources/story_spec.rb
|
123
|
+
- spec/asana/resources/tag_spec.rb
|
151
124
|
- spec/asana/resources/task_spec.rb
|
152
125
|
- spec/asana/resources/user_spec.rb
|
153
126
|
- spec/asana/resources/workspace_spec.rb
|
154
127
|
- spec/spec_helper.rb
|
155
128
|
homepage: http://github.com/rbright/asana
|
156
129
|
licenses: []
|
130
|
+
metadata: {}
|
157
131
|
post_install_message:
|
158
132
|
rdoc_options: []
|
159
133
|
require_paths:
|
160
134
|
- lib
|
161
135
|
required_ruby_version: !ruby/object:Gem::Requirement
|
162
|
-
none: false
|
163
136
|
requirements:
|
164
137
|
- - ! '>='
|
165
138
|
- !ruby/object:Gem::Version
|
166
139
|
version: '0'
|
167
140
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
168
|
-
none: false
|
169
141
|
requirements:
|
170
142
|
- - ! '>='
|
171
143
|
- !ruby/object:Gem::Version
|
172
144
|
version: '0'
|
173
145
|
requirements: []
|
174
146
|
rubyforge_project:
|
175
|
-
rubygems_version:
|
147
|
+
rubygems_version: 2.0.5
|
176
148
|
signing_key:
|
177
|
-
specification_version:
|
149
|
+
specification_version: 4
|
178
150
|
summary: Ruby wrapper for the Asana REST API
|
179
151
|
test_files:
|
180
152
|
- spec/asana/resources/project_spec.rb
|
181
153
|
- spec/asana/resources/story_spec.rb
|
154
|
+
- spec/asana/resources/tag_spec.rb
|
182
155
|
- spec/asana/resources/task_spec.rb
|
183
156
|
- spec/asana/resources/user_spec.rb
|
184
157
|
- spec/asana/resources/workspace_spec.rb
|
185
158
|
- spec/spec_helper.rb
|
186
|
-
has_rdoc:
|