alltweets 1.0.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: ec536fe270b3bceeb188693663e177427f319ae6
4
- data.tar.gz: fcd4b24a0cd54e0eab46c1f0d4d44d30ed5a760e
2
+ SHA256:
3
+ metadata.gz: 92146e6194c50c37002547794b336da5feaf3997909799fb2dc74ff1d1f0bab3
4
+ data.tar.gz: c36a5f0e5275cb84cb6ce09021e5ea56f7ad4132c04d5a6da20d0140a260f402
5
5
  SHA512:
6
- metadata.gz: cbb26f12f8e65a4be411a9ad371f60c7ed047522307056f16dc9be36fa252b44c5bcb7d0bad84aca12cb7c5da5e7d449fdc321ce343f11b569e97691cb8b00b8
7
- data.tar.gz: 7d7e24c593612f698c94aba9406d706d5f1fc115c534fb03334a159eaec45fe85331de471b1b637aac507296802fce7e5e1c5d1b398c85f3925ab9ced0380a2d
6
+ metadata.gz: a91de2daddb3406b1b2978ae0b09b1bb0dde4a95b5908df89b695fa314e79a16384185c175778874ae1151d1ec745fab621b2d49a64063b0e5cd9c722c4d7abc
7
+ data.tar.gz: df0c149c0261c221b975d0f9036490939ae71022ff52fde833e16be5ae5494f89594211bce0c1b3920f1d79310259f40093cd524b8cc5d70cce0d46804046100
data/CHANGELOG.md ADDED
@@ -0,0 +1,101 @@
1
+ ## [Unreleased]
2
+
3
+ ## [2.0.0] - 2021-06-27
4
+ ### Added
5
+ - Detail the token/secret pair message
6
+ - Add error handling when invalid options are specified
7
+ - Rewrite README
8
+ - We finally added CHANGELOG!
9
+
10
+ ### Changed
11
+ - Include retweets
12
+ - Update dependencies
13
+ - Use rainbow instead of colorize
14
+
15
+ ### Removed
16
+ - Remove `-r, --retweets` options
17
+ - Remove `-y, --yaml` options
18
+ - Remove Ruby code description from README
19
+
20
+ ### Fixed
21
+ - Change the author name
22
+ - Fix failed spec
23
+ - Added standard gem to run lint
24
+
25
+ ## [1.1.3] - 2016-12-10
26
+ ### Changed
27
+ - Update dependencies
28
+
29
+ ## [1.1.2] - 2016-12-10
30
+ ### Changed
31
+ - Update description
32
+
33
+ ### Removed
34
+ - Remove additional dependency and using optparse standard library
35
+
36
+ ### Fixed
37
+ - Add missing requirements
38
+
39
+ ## [1.1.1] - 2016-09-13
40
+ ### Fixed
41
+ - Change settings file permissions to `0600`
42
+
43
+ ## [1.1.0] - 2016-05-11
44
+ ### Added
45
+ - Add Ruby code example to README
46
+
47
+ ### Changed
48
+ - Don't open the browser automatically
49
+ - Rename class name: `Collector` => `Fetcher`
50
+ - Rename method name: `Fetcher#get_all_tweets` => `Fetcher#fetch_all_tweets`
51
+ - Allow `Fetcher#initialize` to be passed `Twitter::REST::Client` as an argument
52
+ - Change default `include_rts` from `false` to `true`. Note that only the default values have been changed when running the Ruby code directly, not when running alltweets from the command line
53
+
54
+ ## [1.0.2] - 2016-03-15
55
+ ### Changed
56
+ - Update description
57
+
58
+ ### Fixed
59
+ - Continue processing even if opening browser is failed
60
+
61
+ ## [1.0.1] - 2016-03-08
62
+ ### Changed
63
+ - Update description
64
+
65
+ ### Removed
66
+ - Remove Oj dependency
67
+
68
+ ### Fixed
69
+ - Fix typo of gemfile homepage URL
70
+
71
+ ## [1.0.0] - 2016-02-04
72
+ ### Changed
73
+ - Update dependencies
74
+ - Print result to stdout instead of a file
75
+ - Change default format from YAML to JSON
76
+ - Print system messages to stderr instead of stdout
77
+
78
+ ### Fixed
79
+ - Show an error if multiple username is given
80
+ - Return a status code 1 if an error occurs
81
+ - Support old Ruby 2.0 syntax
82
+
83
+ ## [0.1.3] - 2015-12-17
84
+ ### Changed
85
+ - Change consumer key/secret
86
+ - Update description
87
+ - Update dependencies
88
+
89
+ ## [0.1.2] - 2015-11-10
90
+ ### Changed
91
+ - Update description
92
+
93
+ ## [0.1.1] - 2015-10-30
94
+ ### Fixed
95
+ - Show an error if username is not specified
96
+ - Change the author name
97
+
98
+
99
+ ## [0.1.0] - 2015-07-29
100
+ ### Added
101
+ - Initial release
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source 'https://rubygems.org'
1
+ source "https://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in alltweets.gemspec
4
4
  gemspec
data/README.md CHANGED
@@ -1,38 +1,36 @@
1
- # AllTweets
1
+ # alltweets
2
2
 
3
3
  Downloads someone's all tweets.
4
4
 
5
5
  ## Installation
6
6
 
7
- ```
7
+ ```zsh
8
8
  $ gem install alltweets
9
9
  ```
10
10
 
11
11
  ## Usage
12
12
 
13
- ### Commands
13
+ Just specify the username. The results will be retrieved as JSON data and displayed on the stdout.
14
14
 
15
- * `alltweets <screen name>`: Download &lt;screen name&gt;'s all tweets.
15
+ ```zsh
16
+ $ alltweets tatzyr > tweets.json
17
+ ```
16
18
 
17
- ### Options
19
+ ## Options
18
20
 
19
- * `-r`, `--retweets`: Include retweets
20
- * `-y`, `--yaml`: Use YAML instead of JSON
21
21
  * `-v`, `--version`: Print version and exit
22
22
  * `-h`, `--help`: Show help message
23
23
 
24
- ### Example
24
+ ## Limitations
25
25
 
26
- * `alltweets tatzyr`: Download @tatzyr's all tweets.
27
- * `alltweets -r tatzyr`: Download @tatzyr's all tweets including retweets.
28
- * `alltweets -y tatzyr`: Download @tatzyr's all tweets as YAML instead of JSON.
26
+ alltweets can only retrieve 3200 tweets due to Twitter API limitations.
29
27
 
30
28
  ## Development
31
29
 
32
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment. Run `bundle exec alltweets` to use the gem in this directory, ignoring other installed copies of this gem.
30
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` and `rake standard` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment. Run `bundle exec alltweets` to use the gem in this directory, ignoring other installed copies of this gem.
33
31
 
34
32
  To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
35
33
 
36
34
  ## Contributing
37
35
 
38
- Bug reports and pull requests are welcome on GitHub at https://github.com/Tatzyr/alltweets.
36
+ Bug reports and pull requests are welcome on GitHub at https://github.com/tatzyr/alltweets.
data/Rakefile CHANGED
@@ -1,6 +1,7 @@
1
1
  require "bundler/gem_tasks"
2
2
  require "rspec/core/rake_task"
3
+ require "standard/rake"
3
4
 
4
5
  RSpec::Core::RakeTask.new(:spec)
5
6
 
6
- task :default => :spec
7
+ task default: :spec
data/alltweets.gemspec CHANGED
@@ -1,29 +1,27 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ lib = File.expand_path("../lib", __FILE__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'alltweets/version'
3
+ require "alltweets/version"
5
4
 
6
5
  Gem::Specification.new do |spec|
7
- spec.name = "alltweets"
8
- spec.version = AllTweets::VERSION
9
- spec.authors = ["Tatsuya Otsuka"]
10
- spec.email = ["tatzyr@gmail.com"]
6
+ spec.name = "alltweets"
7
+ spec.version = AllTweets::VERSION
8
+ spec.authors = ["Tatsuya Otsuka"]
9
+ spec.email = ["tatzyr@gmail.com"]
11
10
 
12
- spec.summary = %q{Downloads someone's all tweets.}
13
- spec.homepage = "https://github.com/Tatzyr/alltweets"
11
+ spec.summary = "Downloads someone's all tweets."
12
+ spec.homepage = "https://github.com/tatzyr/alltweets"
14
13
 
15
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
16
- spec.bindir = "exe"
17
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
14
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
15
+ spec.bindir = "exe"
16
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
18
17
  spec.require_paths = ["lib"]
19
18
 
20
- spec.add_dependency "colorize", "~> 0.7.7"
21
- spec.add_dependency "launchy", "~> 2.4.3"
22
- spec.add_dependency "oauth", "~> 0.4.7"
23
- spec.add_dependency "trollop", '~> 2.1.2'
24
- spec.add_dependency "twitter", "~> 5.15"
19
+ spec.add_dependency "oauth", "~> 0.5"
20
+ spec.add_dependency "rainbow", "~> 3.0"
21
+ spec.add_dependency "twitter", "~> 7.0"
25
22
 
26
- spec.add_development_dependency "bundler", "~> 1.10"
27
- spec.add_development_dependency "rake", "~> 10.0"
23
+ spec.add_development_dependency "bundler", "~> 2.2"
24
+ spec.add_development_dependency "rake", "~> 13.0"
28
25
  spec.add_development_dependency "rspec"
26
+ spec.add_development_dependency "standard"
29
27
  end
data/lib/alltweets.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  require "alltweets/version"
2
2
  require "alltweets/cli"
3
- require "alltweets/collector"
3
+ require "alltweets/fetcher"
4
4
  require "alltweets/settings"
data/lib/alltweets/cli.rb CHANGED
@@ -1,47 +1,49 @@
1
- require "colorize"
2
1
  require "json"
3
- require "trollop"
2
+ require "optparse"
3
+ require "rainbow/ext/string"
4
+ require "alltweets/fetcher"
5
+ require "alltweets/settings"
6
+ require "alltweets/version"
4
7
 
5
8
  module AllTweets
6
9
  class CLI
7
- def initialize
10
+ def run
11
+ Rainbow.enabled = true # forcing coloring even when stdout/stderr is not a tty
8
12
  @screen_name, @opts = parse_args
9
13
  @settings = Settings.new
10
14
  update_access_token
11
- @collector = Collector.new(
12
- consumer_key: @settings.consumer_key,
13
- consumer_secret: @settings.consumer_secret,
14
- access_token: @settings.access_token,
15
- access_token_secret: @settings.access_token_secret
16
- )
17
- end
18
-
19
- def run
20
- warn "Downloading @#{@screen_name}'s all tweets"
21
- result = @collector.get_all_tweets(@screen_name, include_retweets: @opts[:retweets]).map(&:to_h)
22
-
23
- if @opts[:yaml]
24
- dump_data = YAML.dump(result)
25
- else
26
- dump_data = JSON.dump(result)
27
- end
28
-
29
- puts dump_data
15
+ fetch_and_print
30
16
  rescue
31
- warn "Error: #{$!}".colorize(:red)
17
+ warn "Error: #{$!}".color(:red)
32
18
  exit 1
33
19
  end
34
20
 
35
21
  private
22
+
36
23
  def parse_args
37
- opts = Trollop::options do
38
- opt :retweets, "Include retweets"
39
- opt :yaml, "Use YAML instead of JSON"
40
- version "alltweets #{VERSION}"
24
+ opts = ARGV.getopts("", "help", "version")
25
+
26
+ if opts["help"]
27
+ puts <<~EOS
28
+ alltweets #{VERSION}
29
+
30
+ Usage:
31
+ alltweets [options] SCREEN_NAME
32
+
33
+ Options:
34
+ -v, --version Print version and exit
35
+ -h, --help Show this message
36
+ EOS
37
+ exit
38
+ end
39
+
40
+ if opts["version"]
41
+ puts "alltweets #{VERSION}"
42
+ exit
41
43
  end
42
44
 
43
45
  unless ARGV.size == 1
44
- warn "usage: alltweets [options] <screen name>"
46
+ warn "usage: alltweets [options] SCREEN_NAME"
45
47
  exit 1
46
48
  end
47
49
 
@@ -59,21 +61,31 @@ module AllTweets
59
61
  )
60
62
  request_token = consumer.get_request_token
61
63
 
62
- warn "1) Open: #{request_token.authorize_url}".colorize(:cyan)
63
- begin
64
- Launchy.open(request_token.authorize_url)
65
- rescue Launchy::CommandNotFoundError
66
- warn "Warning: Clouldn't open web browser".colorize(:yellow)
67
- end
68
-
69
- $stderr.print "2) Enter the PIN: ".colorize(:cyan)
64
+ warn "You need to get token/secret pair of Twitter OAuth.".color(:cyan)
65
+ warn "The token/secret pair will be saved to #{@settings.filename}".color(:cyan)
66
+ warn "".color(:cyan)
67
+ warn "1) Open: #{request_token.authorize_url}".color(:cyan)
68
+ $stderr.print "2) Enter the PIN: ".color(:cyan)
70
69
  pin = $stdin.gets.strip
71
70
 
72
71
  access_token = request_token.get_access_token(oauth_verifier: pin)
73
72
 
74
- warn "Saving access token and access token secret to #{@settings.filename}"
75
73
  @settings.add_access_tokens(access_token.token, access_token.secret)
74
+ warn "Saved the token/secret pair to #{@settings.filename}".color(:cyan)
76
75
  end
77
76
  end
77
+
78
+ def fetch_and_print
79
+ fetcher = Fetcher.new(
80
+ consumer_key: @settings.consumer_key,
81
+ consumer_secret: @settings.consumer_secret,
82
+ access_token: @settings.access_token,
83
+ access_token_secret: @settings.access_token_secret
84
+ )
85
+
86
+ warn "Downloading @#{@screen_name}'s all tweets..."
87
+ result = fetcher.fetch_all_tweets(@screen_name).map(&:to_h)
88
+ puts JSON.dump(result)
89
+ end
78
90
  end
79
91
  end
@@ -1,21 +1,27 @@
1
1
  require "twitter"
2
2
 
3
3
  module AllTweets
4
- class Collector
5
- def initialize(hash)
6
- @client = Twitter::REST::Client.new(hash)
4
+ class Fetcher
5
+ def initialize(arg)
6
+ @client = case arg
7
+ when Hash
8
+ Twitter::REST::Client.new(arg)
9
+ else
10
+ arg
11
+ end
7
12
  end
8
13
 
9
- def get_all_tweets(user, include_retweets: false)
14
+ def fetch_all_tweets(user, include_retweets: true)
10
15
  collect_with_max_id do |max_id|
11
- options = { count: 200, include_rts: include_retweets }
16
+ options = {count: 200, include_rts: include_retweets}
12
17
  options[:max_id] = max_id unless max_id.nil?
13
18
  @client.user_timeline(user, options)
14
19
  end
15
20
  end
16
21
 
17
22
  private
18
- def collect_with_max_id(collection=[], max_id = nil, &block)
23
+
24
+ def collect_with_max_id(collection = [], max_id = nil, &block)
19
25
  response = yield(max_id)
20
26
  collection += response
21
27
  if response.empty?
@@ -1,4 +1,3 @@
1
- require "launchy"
2
1
  require "oauth"
3
2
  require "yaml"
4
3
 
@@ -6,10 +5,10 @@ module AllTweets
6
5
  class Settings
7
6
  INITIAL_SETTINGS = {
8
7
  consumer_key: "GyRoi6Jx4T4olW1Rfwgfaa5kv",
9
- consumer_secret: "OHx2XugBhtg7kuI4yaPANXh3rplREN0Si8CoLzVWYpkeDyH3NJ",
8
+ consumer_secret: "OHx2XugBhtg7kuI4yaPANXh3rplREN0Si8CoLzVWYpkeDyH3NJ"
10
9
  }
11
10
 
12
- def initialize(filename = File.expand_path('~/.alltweets'))
11
+ def initialize(filename = File.expand_path("~/.alltweets"))
13
12
  @filename = filename
14
13
  @settings = load_file
15
14
  end
@@ -33,6 +32,7 @@ module AllTweets
33
32
  end
34
33
 
35
34
  private
35
+
36
36
  def load_file
37
37
  return INITIAL_SETTINGS unless exist?
38
38
 
@@ -40,7 +40,7 @@ module AllTweets
40
40
  end
41
41
 
42
42
  def dump_file
43
- open(@filename, "w") do |f|
43
+ File.open(@filename, "w", 0o600) do |f|
44
44
  YAML.dump(@settings, f)
45
45
  end
46
46
  end
@@ -1,3 +1,3 @@
1
1
  module AllTweets
2
- VERSION = "1.0.2"
2
+ VERSION = "2.0.0"
3
3
  end
metadata CHANGED
@@ -1,115 +1,101 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alltweets
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tatsuya Otsuka
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-03-15 00:00:00.000000000 Z
11
+ date: 2021-06-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: colorize
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: 0.7.7
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: 0.7.7
27
- - !ruby/object:Gem::Dependency
28
- name: launchy
14
+ name: oauth
29
15
  requirement: !ruby/object:Gem::Requirement
30
16
  requirements:
31
17
  - - "~>"
32
18
  - !ruby/object:Gem::Version
33
- version: 2.4.3
19
+ version: '0.5'
34
20
  type: :runtime
35
21
  prerelease: false
36
22
  version_requirements: !ruby/object:Gem::Requirement
37
23
  requirements:
38
24
  - - "~>"
39
25
  - !ruby/object:Gem::Version
40
- version: 2.4.3
26
+ version: '0.5'
41
27
  - !ruby/object:Gem::Dependency
42
- name: oauth
28
+ name: rainbow
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
31
  - - "~>"
46
32
  - !ruby/object:Gem::Version
47
- version: 0.4.7
33
+ version: '3.0'
48
34
  type: :runtime
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
38
  - - "~>"
53
39
  - !ruby/object:Gem::Version
54
- version: 0.4.7
40
+ version: '3.0'
55
41
  - !ruby/object:Gem::Dependency
56
- name: trollop
42
+ name: twitter
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
45
  - - "~>"
60
46
  - !ruby/object:Gem::Version
61
- version: 2.1.2
47
+ version: '7.0'
62
48
  type: :runtime
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
52
  - - "~>"
67
53
  - !ruby/object:Gem::Version
68
- version: 2.1.2
54
+ version: '7.0'
69
55
  - !ruby/object:Gem::Dependency
70
- name: twitter
56
+ name: bundler
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
59
  - - "~>"
74
60
  - !ruby/object:Gem::Version
75
- version: '5.15'
76
- type: :runtime
61
+ version: '2.2'
62
+ type: :development
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
66
  - - "~>"
81
67
  - !ruby/object:Gem::Version
82
- version: '5.15'
68
+ version: '2.2'
83
69
  - !ruby/object:Gem::Dependency
84
- name: bundler
70
+ name: rake
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
73
  - - "~>"
88
74
  - !ruby/object:Gem::Version
89
- version: '1.10'
75
+ version: '13.0'
90
76
  type: :development
91
77
  prerelease: false
92
78
  version_requirements: !ruby/object:Gem::Requirement
93
79
  requirements:
94
80
  - - "~>"
95
81
  - !ruby/object:Gem::Version
96
- version: '1.10'
82
+ version: '13.0'
97
83
  - !ruby/object:Gem::Dependency
98
- name: rake
84
+ name: rspec
99
85
  requirement: !ruby/object:Gem::Requirement
100
86
  requirements:
101
- - - "~>"
87
+ - - ">="
102
88
  - !ruby/object:Gem::Version
103
- version: '10.0'
89
+ version: '0'
104
90
  type: :development
105
91
  prerelease: false
106
92
  version_requirements: !ruby/object:Gem::Requirement
107
93
  requirements:
108
- - - "~>"
94
+ - - ">="
109
95
  - !ruby/object:Gem::Version
110
- version: '10.0'
96
+ version: '0'
111
97
  - !ruby/object:Gem::Dependency
112
- name: rspec
98
+ name: standard
113
99
  requirement: !ruby/object:Gem::Requirement
114
100
  requirements:
115
101
  - - ">="
@@ -122,7 +108,7 @@ dependencies:
122
108
  - - ">="
123
109
  - !ruby/object:Gem::Version
124
110
  version: '0'
125
- description:
111
+ description:
126
112
  email:
127
113
  - tatzyr@gmail.com
128
114
  executables:
@@ -132,7 +118,7 @@ extra_rdoc_files: []
132
118
  files:
133
119
  - ".gitignore"
134
120
  - ".rspec"
135
- - ".travis.yml"
121
+ - CHANGELOG.md
136
122
  - Gemfile
137
123
  - LICENSE
138
124
  - README.md
@@ -143,13 +129,13 @@ files:
143
129
  - exe/alltweets
144
130
  - lib/alltweets.rb
145
131
  - lib/alltweets/cli.rb
146
- - lib/alltweets/collector.rb
132
+ - lib/alltweets/fetcher.rb
147
133
  - lib/alltweets/settings.rb
148
134
  - lib/alltweets/version.rb
149
- homepage: https://github.com/Tatzyr/alltweets
135
+ homepage: https://github.com/tatzyr/alltweets
150
136
  licenses: []
151
137
  metadata: {}
152
- post_install_message:
138
+ post_install_message:
153
139
  rdoc_options: []
154
140
  require_paths:
155
141
  - lib
@@ -164,9 +150,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
164
150
  - !ruby/object:Gem::Version
165
151
  version: '0'
166
152
  requirements: []
167
- rubyforge_project:
168
- rubygems_version: 2.6.1
169
- signing_key:
153
+ rubygems_version: 3.2.21
154
+ signing_key:
170
155
  specification_version: 4
171
156
  summary: Downloads someone's all tweets.
172
157
  test_files: []
data/.travis.yml DELETED
@@ -1,4 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.2.2
4
- before_install: gem install bundler -v 1.10.6