trello_effort_tracker 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +5 -1
- data/Gemfile.lock +4 -4
- data/README.md +90 -27
- data/Rakefile +4 -1
- data/lib/trello_effort_tracker/tracked_card.rb +2 -1
- data/lib/trello_effort_tracker/trello_authorize.rb +3 -3
- data/lib/trello_effort_tracker/trello_configuration.rb +4 -4
- data/lib/trello_effort_tracker/trello_tracker.rb +3 -2
- data/lib/trello_effort_tracker/version.rb +1 -1
- data/lib/trello_effort_tracker.rb +3 -2
- data/spec/integration/trello_tracker_spec.rb +6 -9
- data/spec/trello_authorize_spec.rb +3 -3
- data/spec/trello_configuration_spec.rb +7 -7
- data/spec/trello_tracker_spec.rb +26 -0
- metadata +3 -2
data/CHANGELOG
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
0.0.5
|
2
|
+
- Improved docs
|
3
|
+
- Improved use of this tool as a gem
|
4
|
+
|
1
5
|
0.0.4
|
2
6
|
- A card moved into a DONE column is closed
|
3
7
|
|
@@ -12,6 +16,6 @@
|
|
12
16
|
- Should be able to open a Trello console with a rake task
|
13
17
|
- Avoid running the script if already run for that period
|
14
18
|
- Tracking data is now persisted in a mongo database
|
15
|
-
|
19
|
+
|
16
20
|
0.0.1
|
17
21
|
- Initial Release.
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
trello_effort_tracker (0.0.
|
4
|
+
trello_effort_tracker (0.0.4)
|
5
5
|
bson_ext
|
6
6
|
chronic
|
7
7
|
google_drive
|
@@ -47,8 +47,8 @@ GEM
|
|
47
47
|
json (1.7.6)
|
48
48
|
jwt (0.1.5)
|
49
49
|
multi_json (>= 1.0)
|
50
|
-
mime-types (1.
|
51
|
-
mongoid (3.0.
|
50
|
+
mime-types (1.20.1)
|
51
|
+
mongoid (3.0.20)
|
52
52
|
activemodel (~> 3.1)
|
53
53
|
moped (~> 1.2)
|
54
54
|
origin (~> 1.0)
|
@@ -82,7 +82,7 @@ GEM
|
|
82
82
|
rspec-expectations (2.12.1)
|
83
83
|
diff-lcs (~> 1.1.3)
|
84
84
|
rspec-mocks (2.12.2)
|
85
|
-
ruby-trello (0.5.
|
85
|
+
ruby-trello (0.5.1)
|
86
86
|
activemodel
|
87
87
|
addressable (~> 2.3)
|
88
88
|
json
|
data/README.md
CHANGED
@@ -6,40 +6,42 @@
|
|
6
6
|
## What is Trello Effort Tracker?
|
7
7
|
The purpose of this tool is to extract and track estimates and actual efforts on Trello cards.
|
8
8
|
You simply notify all of your estimates and efforts tracked on your Trello cards using a conventional format.
|
9
|
-
Trello Effort Tracker will extract and store these estimates and actual efforts to let you
|
9
|
+
Trello Effort Tracker will extract and store these estimates and actual efforts to let you mine useful key metrics (e.g. estimate errors, remaining efforts, pair programming frequencies, and so on).
|
10
10
|
|
11
11
|
## Why Trello Effort Tracker?
|
12
12
|
Trello is a very good surrogate for a physical team board: it's simple and effective, and it can really help when you have a distributed team.
|
13
13
|
That said, Trello does not (still) offer a way to track time estimated and actually spent on cards, though many people [ask for that feature](https://trello.com/card/time-tracking/4d5ea62fd76aa1136000000c/1054) on Trello's development board.
|
14
14
|
|
15
|
-
|
16
|
-
This 'tracking user' will then receives estimates and efforts notifications, and Trello Effort Tracker will collect
|
17
|
-
Moreover, a web app will be soon available to properly present card estimates and efforts
|
15
|
+
Having that precise need, we defined a simple convention to track estimates and efforts on cards: we use a predefined board member (let's call him 'tracking user') which we sent special notifications to (we call them 'tracking notifications').
|
16
|
+
This 'tracking user' will then receives estimates and efforts notifications, and Trello Effort Tracker will collect and store them.
|
17
|
+
Moreover, a web app will be soon available to properly present card estimates and efforts (we're working on it).
|
18
18
|
|
19
19
|
## More details
|
20
|
-
All you need to have to start using Trello Effort Tracker is a Trello account, a Trello board and a board member to use as 'tracking user'.
|
20
|
+
All you need to have to start using Trello Effort Tracker is a Trello account, a Trello board and a board member to use as 'tracking user'.
|
21
21
|
You'll also need to know your Trello developer key and generate a proper auth token to have access to the trackinguser's notifications.
|
22
22
|
To see how to have these two keys, see [the following section](#api_key).
|
23
23
|
|
24
|
-
The Trello API is used behind the scenes to read data from the team board.
|
25
|
-
Trello Effort Tracker uses the awesome [Trello API Ruby wrapper](https://github.com/jeremytregunna/ruby-trello) for this purpose.
|
24
|
+
The Trello API is used behind the scenes to read data from the team board. Trello Effort Tracker uses the awesome [Trello API Ruby wrapper](https://github.com/jeremytregunna/ruby-trello) for this purpose.
|
26
25
|
|
27
|
-
##
|
26
|
+
## Usage
|
27
|
+
This tool can be used as a standalone gem or cloning this git repo.
|
28
28
|
|
29
|
-
|
30
|
-
|
29
|
+
### Installation as a ruby gem
|
30
|
+
|
31
|
+
```shell
|
32
|
+
gem install trello_effort_tracker
|
31
33
|
```
|
32
34
|
|
33
|
-
|
35
|
+
### Installation cloning the repo
|
34
36
|
|
35
|
-
|
36
|
-
|
37
|
-
|
37
|
+
```shell
|
38
|
+
git clone git://github.com/xpepper/trello_effort_tracker.git
|
39
|
+
```
|
38
40
|
|
39
|
-
|
40
|
-
Copy the config template
|
41
|
+
Then cd in the lib and copy the config template
|
41
42
|
|
42
43
|
```shell
|
44
|
+
cd trello_effort_tracker
|
43
45
|
cp config/config.template.yaml config/config.yml
|
44
46
|
```
|
45
47
|
|
@@ -59,6 +61,15 @@ Then run bundle to get all the required gems:
|
|
59
61
|
bundle install
|
60
62
|
```
|
61
63
|
|
64
|
+
|
65
|
+
Full Disclosure: this library is still work-in-progress, so if you find anything missing or not functioning as you expect it to, please [open an issue on github](https://github.com/xpepper/trello_effort_tracker/issues).
|
66
|
+
|
67
|
+
## Requirements
|
68
|
+
* [mongoDB](http://www.mongodb.org/) - macosx users with homebrew will just run 'brew install mongodb' to have mongoDB installed on their machine.
|
69
|
+
* (optional) [rvm](https://rvm.io/rvm/install/) is useful (but optional) for development
|
70
|
+
|
71
|
+
|
72
|
+
|
62
73
|
### <a id="api_key"></a>Where do I get an API key?
|
63
74
|
Log in to Trello with your account and visit [https://trello.com/1/appKey/generate](https://trello.com/1/appKey/generate) to get your developer\_public\_key.
|
64
75
|
|
@@ -75,7 +86,7 @@ The best way is to use one of the rake task defined, e.g.
|
|
75
86
|
```ruby
|
76
87
|
rake 'run:today[test]' # will extract today's tracked data and store on the test db
|
77
88
|
|
78
|
-
rake run:today # will extract today's tracked data
|
89
|
+
rake run:today # will extract today's tracked data and store on the default (that is development) db
|
79
90
|
|
80
91
|
rake 'run:from_day[2012-11-1, production]' # will extract tracked data starting from November the 1st, 2012 and store them into the production db
|
81
92
|
```
|
@@ -83,22 +94,70 @@ rake 'run:from_day[2012-11-1, production]' # will extract tracked data starting
|
|
83
94
|
Or you may just create a TrelloTracker instance and execute its track method.
|
84
95
|
|
85
96
|
```ruby
|
97
|
+
require 'trello_effort_tracker'
|
98
|
+
|
86
99
|
tracker = TrelloTracker.new
|
87
100
|
tracker.track
|
88
101
|
```
|
89
|
-
You can set the Trello's auth params in three ways
|
90
102
|
|
91
|
-
|
92
|
-
|
93
|
-
|
103
|
+
### Configuration params
|
104
|
+
### Mongo storage configuration
|
105
|
+
Tracking data collected from Trello are stored in a MongoDB database.
|
106
|
+
|
107
|
+
There are two env variables you can set to configure mongodb
|
108
|
+
|
109
|
+
- `MONGOID_ENV` defines which mongodb env is actually used (development, test, production). Development is the default mongo environment.
|
110
|
+
- `MONGOID_CONFIG_PATH` defines the path to the mongoid configuration file (default is `config/mongoid.yml`)
|
111
|
+
|
112
|
+
A standard mongoid.yml is the following:
|
113
|
+
|
114
|
+
```yml
|
115
|
+
development:
|
116
|
+
sessions:
|
117
|
+
default:
|
118
|
+
database: trello_effort_tracker_dev
|
119
|
+
hosts:
|
120
|
+
- localhost:27017
|
121
|
+
test:
|
122
|
+
sessions:
|
123
|
+
default:
|
124
|
+
database: trello_effort_tracker_test
|
125
|
+
hosts:
|
126
|
+
- localhost:27017
|
127
|
+
production:
|
128
|
+
autocreate_indexes: true
|
129
|
+
persist_in_safe_mode: true
|
130
|
+
|
131
|
+
sessions:
|
132
|
+
default:
|
133
|
+
database: trello_effort_tracker_production
|
134
|
+
hosts:
|
135
|
+
- localhost:27017
|
136
|
+
```
|
137
|
+
|
138
|
+
#### Trello configuration params
|
139
|
+
You can set the Trello's configuration params in three ways.
|
140
|
+
Through the following environment variables (ENV object):
|
141
|
+
|
142
|
+
```
|
143
|
+
access_token_key
|
144
|
+
developer_public_key
|
145
|
+
tracker_username
|
146
|
+
```
|
147
|
+
|
148
|
+
Passing into the constructor a hash containing the auth values:
|
94
149
|
|
95
150
|
```ruby
|
96
151
|
tracker = TrelloTracker.new(
|
97
|
-
|
98
|
-
|
152
|
+
developer_public_key: "487635b55e6fe9021902fa763b4d101a",
|
153
|
+
access_token_key: "33bed56f2a12a49c9ba1c2d6ad3e2002e11a34358c3f3fe260d7fba746a06203",
|
154
|
+
tracker_username: "my_personal_tracker")
|
99
155
|
|
100
156
|
tracker.track
|
101
157
|
```
|
158
|
+
|
159
|
+
Or using the config.yml (which is the actual fallback mode, useful in development mode).
|
160
|
+
|
102
161
|
### Console
|
103
162
|
You can open a irb console with the ruby-trello gem and this gem loaded, so that you can query the db or the Trello API and play with them
|
104
163
|
|
@@ -106,9 +165,11 @@ You can open a irb console with the ruby-trello gem and this gem loaded, so that
|
|
106
165
|
rake console
|
107
166
|
```
|
108
167
|
|
109
|
-
|
110
|
-
|
111
|
-
|
168
|
+
The default env is development. To load a console in the (e.g.) production db env, execute:
|
169
|
+
|
170
|
+
```ruby
|
171
|
+
rake "console[production]"
|
172
|
+
```
|
112
173
|
|
113
174
|
### Estimate format convention
|
114
175
|
To set an estimate on a card, a Trello user should send a notification from that card to the tracker username, e.g.
|
@@ -160,6 +221,8 @@ Sending a tracking notification with the word DONE
|
|
160
221
|
|
161
222
|
will mark the card as closed.
|
162
223
|
|
224
|
+
Moreover, a card moved into a DONE column (the name of the Trello list contains the word "Done") is automatically marked as done.
|
225
|
+
|
163
226
|
## Database import/export
|
164
227
|
To export the db you can execute something like:
|
165
228
|
|
@@ -226,4 +289,4 @@ The best way to get your changes merged back into core is as follows:
|
|
226
289
|
1. Push the branch up to GitHub
|
227
290
|
1. Send a pull request for your branch
|
228
291
|
|
229
|
-
[@pierodibello](http://twitter.com/pierodibello)
|
292
|
+
[@pierodibello](http://twitter.com/pierodibello)
|
data/Rakefile
CHANGED
@@ -5,7 +5,6 @@ RSpec::Core::RakeTask.new(:spec)
|
|
5
5
|
|
6
6
|
task :default => :spec
|
7
7
|
task :specs => :spec
|
8
|
-
task :c => :console
|
9
8
|
|
10
9
|
desc "Open an irb session preloaded with this library, e.g. rake 'console[production]' will open a irb session with the production db env"
|
11
10
|
task :console, [:db_env] do |t, args|
|
@@ -13,6 +12,10 @@ task :console, [:db_env] do |t, args|
|
|
13
12
|
sh "export MONGOID_ENV=#{args.db_env}; irb -rubygems -I lib -r trello_effort_tracker.rb -r startup_trello.rb"
|
14
13
|
end
|
15
14
|
|
15
|
+
task :c, [:db_env] do |t, args|
|
16
|
+
Rake::Task[:console].invoke(args.db_env)
|
17
|
+
end
|
18
|
+
|
16
19
|
namespace :spec do
|
17
20
|
desc "Run fast specs"
|
18
21
|
RSpec::Core::RakeTask.new(:fast) do |t|
|
@@ -28,7 +28,8 @@ class TrackedCard
|
|
28
28
|
def self.update_or_create_with(trello_card)
|
29
29
|
tracked_card = find_or_create_by(trello_id: trello_card.id)
|
30
30
|
trello_card.attributes.delete(:id)
|
31
|
-
|
31
|
+
tracked_card_attributes = trello_card.attributes.merge(done: trello_card.in_done_column?)
|
32
|
+
updated_successfully = tracked_card.update_attributes(tracked_card_attributes)
|
32
33
|
return tracked_card if updated_successfully
|
33
34
|
end
|
34
35
|
|
@@ -4,12 +4,12 @@ module TrelloAuthorize
|
|
4
4
|
|
5
5
|
def authorize_on_trello(auth_params={})
|
6
6
|
%w{developer_public_key access_token_key}.each do |key|
|
7
|
-
auth_params[key] ||= ENV[key] || authorization_params_from_config_file[key]
|
7
|
+
auth_params[key.to_sym] ||= ENV[key] || authorization_params_from_config_file[key]
|
8
8
|
end
|
9
9
|
|
10
10
|
Trello.configure do |config|
|
11
|
-
config.developer_public_key = auth_params[
|
12
|
-
config.member_token = auth_params[
|
11
|
+
config.developer_public_key = auth_params[:developer_public_key]
|
12
|
+
config.member_token = auth_params[:access_token_key]
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module TrelloConfiguration
|
2
2
|
|
3
|
-
def tracker_username
|
4
|
-
@tracker_username ||= ENV["tracker_username"] || configuration["tracker_username"]
|
3
|
+
def tracker_username(forced_tracker_username=nil)
|
4
|
+
@tracker_username ||= forced_tracker_username || ENV["tracker_username"] || configuration["tracker_username"]
|
5
5
|
end
|
6
6
|
|
7
7
|
def authorization_params_from_config_file
|
@@ -9,9 +9,9 @@ module TrelloConfiguration
|
|
9
9
|
end
|
10
10
|
|
11
11
|
class Database
|
12
|
-
def self.load_env(db_env)
|
12
|
+
def self.load_env(db_env, mongoid_configuration_path=nil)
|
13
13
|
ENV['MONGOID_ENV'] = db_env
|
14
|
-
Mongoid.load!("config/mongoid.yml", db_env)
|
14
|
+
Mongoid.load!(mongoid_configuration_path || "config/mongoid.yml", db_env)
|
15
15
|
Trello.logger.info "Mongo db env: #{db_env.color(:green)}."
|
16
16
|
end
|
17
17
|
end
|
@@ -4,8 +4,9 @@ class TrelloTracker
|
|
4
4
|
|
5
5
|
trap("SIGINT") { exit! }
|
6
6
|
|
7
|
-
def initialize(
|
8
|
-
authorize_on_trello(
|
7
|
+
def initialize(custom_config_params = {})
|
8
|
+
authorize_on_trello(custom_config_params)
|
9
|
+
tracker_username(custom_config_params[:tracker_username])
|
9
10
|
end
|
10
11
|
|
11
12
|
def track(starting_date=Date.today)
|
@@ -4,6 +4,7 @@ require 'set'
|
|
4
4
|
require 'yaml'
|
5
5
|
require 'chronic'
|
6
6
|
require 'mongoid'
|
7
|
+
require 'forwardable'
|
7
8
|
|
8
9
|
require 'trello_effort_tracker/mongoid_helper'
|
9
10
|
require 'trello_effort_tracker/trello_configuration'
|
@@ -24,6 +25,6 @@ require 'trello_effort_tracker/google_docs_exporter'
|
|
24
25
|
require 'patches/trello/member'
|
25
26
|
require 'patches/trello/card'
|
26
27
|
|
27
|
-
TrelloConfiguration::Database.load_env(ENV['MONGOID_ENV'] || "development")
|
28
|
+
TrelloConfiguration::Database.load_env(ENV['MONGOID_ENV'] || "development", ENV['MONGOID_CONFIG_PATH'])
|
28
29
|
|
29
|
-
Trello.logger.level = Logger::DEBUG
|
30
|
+
Trello.logger.level = Logger::DEBUG
|
@@ -13,14 +13,14 @@ describe TrelloTracker do
|
|
13
13
|
|
14
14
|
let(:config) {
|
15
15
|
# auth params for trackinguser_for_test/testinguser!
|
16
|
-
OpenStruct.new(
|
17
|
-
|
18
|
-
|
16
|
+
OpenStruct.new(tracker: "trackinguser_for_test",
|
17
|
+
dev_key: "ef7c400e711057d7ba5e00be20139a33",
|
18
|
+
token: "9047d8fdbfdc960d41910673e300516cc8630dd4967e9b418fc27e410516362e")
|
19
19
|
}
|
20
20
|
|
21
21
|
it "tracks some estimates and efforts", :needs_valid_configuration => true do
|
22
|
-
|
23
|
-
tracker = TrelloTracker.new(
|
22
|
+
without_logging do
|
23
|
+
tracker = TrelloTracker.new(tracker_username: config.tracker, developer_public_key: config.dev_key, access_token_key: config.token)
|
24
24
|
tracker.track(DateTime.parse("2013-01-28"))
|
25
25
|
end
|
26
26
|
|
@@ -53,16 +53,13 @@ describe TrelloTracker do
|
|
53
53
|
|
54
54
|
private
|
55
55
|
|
56
|
-
def
|
57
|
-
original_tracker = ENV["tracker_username"]
|
56
|
+
def without_logging(&block)
|
58
57
|
original_error_level = Trello.logger.level
|
59
58
|
|
60
59
|
begin
|
61
|
-
ENV["tracker_username"] = tracking_user
|
62
60
|
Trello.logger.level = Logger::WARN
|
63
61
|
block.call unless block.nil?
|
64
62
|
ensure
|
65
|
-
ENV["tracker_username"] = original_tracker
|
66
63
|
Trello.logger.level = original_error_level
|
67
64
|
end
|
68
65
|
end
|
@@ -19,7 +19,7 @@ describe TrelloAuthorize do
|
|
19
19
|
ENV["developer_public_key"] = ENV["access_token_key"] = "anything"
|
20
20
|
YAML.should_receive(:load_file).never
|
21
21
|
|
22
|
-
authorize_on_trello(
|
22
|
+
authorize_on_trello(developer_public_key: "custom_dpk", access_token_key: "custom_atk")
|
23
23
|
|
24
24
|
Trello.client.auth_policy.developer_public_key.should == "custom_dpk"
|
25
25
|
Trello.client.auth_policy.member_token.should == "custom_atk"
|
@@ -31,7 +31,7 @@ describe TrelloAuthorize do
|
|
31
31
|
|
32
32
|
YAML.should_receive(:load_file).never
|
33
33
|
|
34
|
-
authorize_on_trello(
|
34
|
+
authorize_on_trello(any: "thing")
|
35
35
|
|
36
36
|
Trello.client.auth_policy.developer_public_key.should == "my_dpk"
|
37
37
|
Trello.client.auth_policy.member_token.should == "my_atk"
|
@@ -43,7 +43,7 @@ describe TrelloAuthorize do
|
|
43
43
|
config_hash = {"trello" => { "developer_public_key" => "any_dpk", "access_token_key" => "any_atk"}}
|
44
44
|
YAML.should_receive(:load_file).with("config/config.yml").and_return(config_hash)
|
45
45
|
|
46
|
-
authorize_on_trello(
|
46
|
+
authorize_on_trello(any: "thing")
|
47
47
|
|
48
48
|
Trello.client.auth_policy.developer_public_key.should == "any_dpk"
|
49
49
|
Trello.client.auth_policy.member_token.should == "any_atk"
|
@@ -11,22 +11,22 @@ describe TrelloConfiguration do
|
|
11
11
|
|
12
12
|
authorization_params_from_config_file["developer_public_key"].should == "any_dpk"
|
13
13
|
authorization_params_from_config_file["access_token_key"].should == "any_atk"
|
14
|
-
end
|
14
|
+
end
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
describe "#tracker_username" do
|
18
18
|
before(:each) do
|
19
19
|
@original = ENV["tracker_username"]
|
20
20
|
end
|
21
|
-
|
21
|
+
|
22
22
|
after(:each) do
|
23
23
|
ENV["tracker_username"] = @original
|
24
24
|
end
|
25
|
-
|
25
|
+
|
26
26
|
it "searches for the trello tracker username first from an env var" do
|
27
27
|
ENV["tracker_username"] = "my_tracker"
|
28
28
|
YAML.should_receive(:load_file).never
|
29
|
-
|
29
|
+
|
30
30
|
tracker_username.should == "my_tracker"
|
31
31
|
end
|
32
32
|
|
@@ -34,10 +34,10 @@ describe TrelloConfiguration do
|
|
34
34
|
ENV["tracker_username"] = nil
|
35
35
|
config_hash = {"tracker_username" => "my_trello_tracker" }
|
36
36
|
YAML.should_receive(:load_file).with("config/config.yml").and_return(config_hash)
|
37
|
-
|
37
|
+
|
38
38
|
tracker_username.should == "my_trello_tracker"
|
39
39
|
end
|
40
|
-
|
40
|
+
|
41
41
|
end
|
42
42
|
|
43
43
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe TrelloTracker do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
@original = ENV["tracker_username"]
|
7
|
+
ENV["tracker_username"] = "my_tracker"
|
8
|
+
end
|
9
|
+
|
10
|
+
after(:each) do
|
11
|
+
ENV["tracker_username"] = @original
|
12
|
+
end
|
13
|
+
|
14
|
+
it "force the trello tracker username in the constructor" do
|
15
|
+
tracker = TrelloTracker.new(tracker_username: "any_other_tracker")
|
16
|
+
|
17
|
+
tracker.tracker_username.should == "any_other_tracker"
|
18
|
+
end
|
19
|
+
|
20
|
+
it "takes the tracker username from the ENV var tracker_username" do
|
21
|
+
tracker = TrelloTracker.new
|
22
|
+
|
23
|
+
tracker.tracker_username.should == "my_tracker"
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trello_effort_tracker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-02-
|
12
|
+
date: 2013-02-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ruby-trello
|
@@ -182,6 +182,7 @@ files:
|
|
182
182
|
- spec/tracking_factory_spec.rb
|
183
183
|
- spec/trello_authorize_spec.rb
|
184
184
|
- spec/trello_configuration_spec.rb
|
185
|
+
- spec/trello_tracker_spec.rb
|
185
186
|
- trello_effort_tracker.gemspec
|
186
187
|
homepage: http://xplayer.wordpress.com
|
187
188
|
licenses: []
|