genderize_io_rb 0.0.9 → 0.0.10

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6289f33481a995b92a006be0b9e7e15fec4c16a3
4
- data.tar.gz: a506262d5ee712b7ccefc6cc880cb6446ef53df1
3
+ metadata.gz: 5176d92ef1a771a1a04d95a30ad0b888b960980b
4
+ data.tar.gz: 106c8b15bc17aab5a8637c83d90cb4b92fe34e4a
5
5
  SHA512:
6
- metadata.gz: ac9f3b0c7c0836627788ba4540ecb64f201a0b902c7b950a44e58718e3d64f34597da91f56dee79c3500a6115b885d80c2276dafe96ad2d472b3fea2da19847b
7
- data.tar.gz: 8f321ff64dc9d6cef23069f213351e430dc1c171c77afa65bdcf7601746baa8e5567ee9e7fde3754fdff4f051ca16b8e2eb8a1e09bb0fe4053b6929b2f03b883
6
+ metadata.gz: fdcf553e0c5f9d5f80e9ac3b3e7424ee4cceecfa44a8aa53dbf7368d3c0f352e2af315539e8e72c4e81106748081fb81ed8d266006b4e7cb024e9c070e235048
7
+ data.tar.gz: e7c86385281e560e64280b456b6783a9cbd816d75ee5b709433eb371dde49fc9a540669fa3362beff7affc3fa47c41f92831c3fae4248378d83804a3b7468e59
data/Gemfile CHANGED
@@ -17,3 +17,7 @@ group :development do
17
17
  gem "sqlite3"
18
18
  gem "baza", ">= 0.0.12"
19
19
  end
20
+
21
+ group :test do
22
+ gem "codeclimate-test-reporter", group: :test, require: nil
23
+ end
@@ -1,6 +1,6 @@
1
1
  GIT
2
2
  remote: https://github.com/technicalpickles/jeweler.git
3
- revision: f2128d70918d690a5226e176e00bbca51ce85646
3
+ revision: 922fcd5debfe50352868c7a5d49a95d74ba9988e
4
4
  specs:
5
5
  jeweler (2.0.1)
6
6
  builder
@@ -17,50 +17,53 @@ GEM
17
17
  specs:
18
18
  addressable (2.3.6)
19
19
  array_enumerator (0.0.3)
20
- baza (0.0.13)
20
+ baza (0.0.14)
21
21
  array_enumerator
22
22
  datet
23
23
  knjrbfw
24
24
  string-cases
25
25
  wref
26
26
  builder (3.2.2)
27
+ codeclimate-test-reporter (0.4.1)
28
+ simplecov (>= 0.7.1, < 1.0.0)
27
29
  datet (0.0.25)
28
30
  descendants_tracker (0.0.4)
29
31
  thread_safe (~> 0.3, >= 0.3.1)
30
32
  diff-lcs (1.1.3)
33
+ docile (1.1.5)
31
34
  faraday (0.9.0)
32
35
  multipart-post (>= 1.2, < 3)
33
- git (1.2.6)
34
- github_api (0.11.3)
36
+ git (1.2.8)
37
+ github_api (0.12.2)
35
38
  addressable (~> 2.3)
36
- descendants_tracker (~> 0.0.1)
39
+ descendants_tracker (~> 0.0.4)
37
40
  faraday (~> 0.8, < 0.10)
38
- hashie (>= 1.2)
41
+ hashie (>= 3.3)
39
42
  multi_json (>= 1.7.5, < 2.0)
40
- nokogiri (~> 1.6.0)
43
+ nokogiri (~> 1.6.3)
41
44
  oauth2
42
- hashie (2.1.1)
45
+ hashie (3.3.1)
43
46
  highline (1.6.21)
44
- http2 (0.0.23)
47
+ http2 (0.0.26)
48
+ string-cases
45
49
  json (1.8.1)
46
- jwt (0.1.11)
47
- multi_json (>= 1.5)
48
- knjrbfw (0.0.109)
50
+ jwt (1.0.0)
51
+ knjrbfw (0.0.110)
49
52
  datet
50
53
  http2
51
54
  php4r
52
55
  ruby_process
53
56
  tsafe
54
57
  wref
55
- mini_portile (0.5.3)
56
- multi_json (1.9.3)
58
+ mini_portile (0.6.0)
59
+ multi_json (1.10.1)
57
60
  multi_xml (0.5.5)
58
61
  multipart-post (2.0.0)
59
- nokogiri (1.6.1)
60
- mini_portile (~> 0.5.0)
61
- oauth2 (0.9.3)
62
+ nokogiri (1.6.3.1)
63
+ mini_portile (= 0.6.0)
64
+ oauth2 (1.0.0)
62
65
  faraday (>= 0.8, < 0.10)
63
- jwt (~> 0.1.8)
66
+ jwt (~> 1.0)
64
67
  multi_json (~> 1.3)
65
68
  multi_xml (~> 0.5)
66
69
  rack (~> 1.2)
@@ -69,7 +72,7 @@ GEM
69
72
  http2
70
73
  string-strtr
71
74
  rack (1.5.2)
72
- rake (10.3.1)
75
+ rake (10.3.2)
73
76
  rdoc (3.12.2)
74
77
  json (~> 1.4)
75
78
  rspec (2.8.0)
@@ -83,10 +86,15 @@ GEM
83
86
  ruby_process (0.0.9)
84
87
  tsafe
85
88
  wref
86
- sqlite3 (1.3.9)
89
+ simplecov (0.9.1)
90
+ docile (~> 1.1.0)
91
+ multi_json (~> 1.0)
92
+ simplecov-html (~> 0.8.0)
93
+ simplecov-html (0.8.0)
94
+ sqlite3 (1.3.10)
87
95
  string-cases (0.0.0)
88
96
  string-strtr (0.0.3)
89
- thread_safe (0.3.3)
97
+ thread_safe (0.3.4)
90
98
  tsafe (0.0.11)
91
99
  wref (0.0.6)
92
100
 
@@ -96,6 +104,7 @@ PLATFORMS
96
104
  DEPENDENCIES
97
105
  baza (>= 0.0.12)
98
106
  bundler (>= 1.0.0)
107
+ codeclimate-test-reporter
99
108
  http2
100
109
  jeweler!
101
110
  json
data/README.md CHANGED
@@ -1,3 +1,7 @@
1
+ [![Code Climate](https://codeclimate.com/github/kaspernj/genderize_io_rb/badges/gpa.svg)](https://codeclimate.com/github/kaspernj/genderize_io_rb)
2
+ [![Test Coverage](https://codeclimate.com/github/kaspernj/genderize_io_rb/badges/coverage.svg)](https://codeclimate.com/github/kaspernj/genderize_io_rb)
3
+ [![Build Status](https://api.shippable.com/projects/540e7b9a3479c5ea8f9ec210/badge?branchName=master)](https://app.shippable.com/projects/540e7b9a3479c5ea8f9ec210/builds/latest)
4
+
1
5
  # GenderizeIoRb
2
6
 
3
7
  Start by adding it to your Gemfile and bundle it:
@@ -9,12 +13,44 @@ Now check a name like this:
9
13
  ```ruby
10
14
  gir = GenderizeIoRb.new
11
15
  res = gir.info_for_name("kasper")
12
- puts "Name: #{res[:result].name}"
13
- puts "Gender: #{res[:result].gender}"
16
+ puts "Name: #{res.name}"
17
+ puts "Gender: #{res.gender}"
18
+ ```
19
+
20
+ It is also possible to look multiple names up:
21
+ ```ruby
22
+ GenderizeIoRb.new do |gir|
23
+ gir.info_for_names(["kasper", "christina"]).each do |result|
24
+ puts "Name: #{result.name}"
25
+ puts "Gender: #{result.gender}"
26
+ end
27
+ end
28
+ ```
29
+
30
+ You can attach a database-cache through a Baza::Db if Genderize is a bit slow:
31
+ ```ruby
32
+ # SQLite3 database will automatically be created with table and everything. If an existing db is given, the table will automatically be created within it.
33
+ Baza::Db.new(type: "sqlite3", path: path) do |db|
34
+ GenderizeIoRb.new(cache_db: db) do |gir|
35
+ # First request will be done through a HTTP request:
36
+ first_result = gir.info_for_name("kasper")
37
+ puts "Through HTTP?: #{first_result.from_http_request?}"
38
+
39
+ # Second result will be done by a
40
+ second_result = gir.info_for_name("kasper")
41
+ puts "Through DB cache? #{second_result.from_cache_db?}"
42
+ end
43
+ end
44
+ ```
45
+
46
+ If you need the connections to be kept open:
47
+ ```ruby
48
+ db = Baza::Db.new(type: "sqlite3", path: path)
49
+ gir = GenderizeIoRb.new(cache_db: db)
14
50
  ```
15
51
 
16
52
  # Contributing to genderize_io_rb
17
-
53
+
18
54
  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
19
55
  * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
20
56
  * Fork the project.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.9
1
+ 0.0.10
@@ -2,14 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
+ # stub: genderize_io_rb 0.0.10 ruby lib
5
6
 
6
7
  Gem::Specification.new do |s|
7
8
  s.name = "genderize_io_rb"
8
- s.version = "0.0.9"
9
+ s.version = "0.0.10"
9
10
 
10
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib"]
11
13
  s.authors = ["Kasper Johansen"]
12
- s.date = "2014-04-28"
14
+ s.date = "2014-11-03"
13
15
  s.description = "A small Gem that makes it possible to determine gender from a name via the Genderize.io service."
14
16
  s.email = "kaspernj@gmail.com"
15
17
  s.extra_rdoc_files = [
@@ -30,13 +32,14 @@ Gem::Specification.new do |s|
30
32
  "include/errors.rb",
31
33
  "include/result.rb",
32
34
  "lib/genderize_io_rb.rb",
35
+ "shippable.yml",
33
36
  "spec/genderize_io_rb_spec.rb",
37
+ "spec/shitload_of_names.json",
34
38
  "spec/spec_helper.rb"
35
39
  ]
36
40
  s.homepage = "http://github.com/kaspernj/genderize_io_rb"
37
41
  s.licenses = ["MIT"]
38
- s.require_paths = ["lib"]
39
- s.rubygems_version = "2.0.7"
42
+ s.rubygems_version = "2.4.0"
40
43
  s.summary = "A small Gem that makes it possible to determine gender from a name via the Genderize.io service."
41
44
 
42
45
  if s.respond_to? :specification_version then
@@ -1,15 +1,15 @@
1
1
  class GenderizeIoRb::DatabaseSchema
2
2
  SCHEMA = {
3
- :tables => {
4
- :genderize_io_rb_cache => {
5
- :columns => [
6
- {:name => :id, :type => :int, :autoincr => true, :primarykey => true},
7
- {:name => :name, :type => :varchar},
8
- {:name => :result, :type => :text},
9
- {:name => :created_at, :type => :datetime}
3
+ tables: {
4
+ genderize_io_rb_cache: {
5
+ columns: [
6
+ {name: :id, type: :int, autoincr: true, primarykey: true},
7
+ {name: :name, type: :varchar},
8
+ {name: :result, type: :text},
9
+ {name: :created_at, type: :datetime}
10
10
  ],
11
- :indexes => [
12
- {:name => :name, :columns => [:name], :unique => true}
11
+ indexes: [
12
+ {name: :name, columns: [:name], unique: true}
13
13
  ]
14
14
  }
15
15
  }
@@ -1,3 +1,5 @@
1
1
  class GenderizeIoRb::Errors
2
- class NameNotFound < RuntimeError; end
2
+ class NameNotFound < RuntimeError
3
+ attr_accessor :name
4
+ end
3
5
  end
@@ -26,4 +26,12 @@ class GenderizeIoRb::Result
26
26
  def to_s
27
27
  return "#<GenderizeIoRb::Result::#{@args[:data]}>"
28
28
  end
29
+
30
+ def from_http_request?
31
+ return @args[:from_http_request]
32
+ end
33
+
34
+ def from_cache_db?
35
+ return @args[:from_cache_db]
36
+ end
29
37
  end
@@ -5,87 +5,206 @@ require "string-cases" unless ::Kernel.const_defined?(:StringCases)
5
5
 
6
6
  class GenderizeIoRb
7
7
  attr_reader :cache_db
8
-
8
+
9
9
  def self.const_missing(name)
10
10
  require_relative "../include/#{::StringCases.camel_to_snake(name)}"
11
11
  raise LoadError, "Still not defined: '#{name}'." unless ::GenderizeIoRb.const_defined?(name)
12
12
  return ::GenderizeIoRb.const_get(name)
13
13
  end
14
-
15
- INITIALIZE_VALID_ARGS = [:cache_as, :cache_db]
14
+
15
+ INITIALIZE_VALID_ARGS = [:cache_as, :cache_db, :debug]
16
16
  def initialize(args = {})
17
17
  args.each do |key, val|
18
18
  raise "Invalid key: '#{key}'." unless INITIALIZE_VALID_ARGS.include?(key)
19
19
  end
20
-
20
+
21
+ @debug = args[:debug]
21
22
  @args = args
22
- @http = Http2.new(:host => "api.genderize.io")
23
-
23
+ @http = Http2.new(host: "api.genderize.io")
24
+
24
25
  # Make sure the database-version is up-to-date.
25
26
  @cache_db = args[:cache_db]
26
27
  if @cache_db
27
- Baza::Revision.new.init_db(:db => @cache_db, :schema => GenderizeIoRb::DatabaseSchema::SCHEMA)
28
+ Baza::Revision.new.init_db(db: @cache_db, schema: GenderizeIoRb::DatabaseSchema::SCHEMA)
28
29
  end
29
-
30
+
30
31
  @cache_as = args[:cache_as]
32
+
33
+ if block_given?
34
+ begin
35
+ yield self
36
+ ensure
37
+ destroy
38
+ end
39
+ end
40
+ end
41
+
42
+ def info_for_names(names, &blk)
43
+ names_lc = names.map{ |name| name.to_s.strip.downcase }
44
+ results = []
45
+
46
+ extract_cache_db_results_from_names(names) if @cache_db
47
+ if @cache_db
48
+ debug "Looking names up in db: #{names_lc}" if @debug
49
+ @cache_db.select(:genderize_io_rb_cache, name: names_lc) do |data|
50
+ debug "Found in db-cache: #{data}" if @debug
51
+
52
+ result = ::GenderizeIoRb::Result.new(
53
+ data: JSON.parse(data[:result]),
54
+ genderize_io_rb: self,
55
+ from_cache_db: true
56
+ )
57
+
58
+ raise "Could not delete name: #{data[:name]}" unless names_lc.delete(data[:name]) == data[:name]
59
+
60
+ handle_result(result, results, blk)
61
+ end
62
+ end
63
+
64
+ unless names_lc.empty?
65
+ debug "Looking names up using an HTTP request: #{names_lc}" if @debug
66
+ urls = generate_urls_from_names(names_lc)
67
+
68
+ # Request all the URL's.
69
+ urls.each do |url|
70
+ http_result = @http.get(url)
71
+ json_results = JSON.parse(http_result.body)
72
+
73
+ json_results.each do |json_result|
74
+ if json_result["gender"] == nil
75
+ error = GenderizeIoRb::Errors::NameNotFound.new("Name was not found on Genderize.io: '#{json_result["name"]}'.")
76
+ error.name = json_result["name"]
77
+
78
+ handle_result(error, results, blk)
79
+ else
80
+ store_cache_for_name(json_result["name"], json_result)
81
+
82
+ result = ::GenderizeIoRb::Result.new(
83
+ data: json_result,
84
+ genderize_io_rb: self,
85
+ from_http_request: true
86
+ )
87
+
88
+ handle_result(result, results, blk)
89
+ end
90
+ end
91
+ end
92
+ end
93
+
94
+ if blk
95
+ return nil
96
+ else
97
+ return results
98
+ end
31
99
  end
32
-
33
- def info_for_name(name, args = {})
34
- name = name.to_s.strip
35
- name_lc = name.downcase
36
-
100
+
101
+ def info_for_name(name)
102
+ name_lc = name.to_s.strip.downcase
103
+
37
104
  # If a database-cache is enabled, try to look result up there first.
38
105
  if @cache_db
39
- cache_db_res = @cache_db.single(:genderize_io_rb_cache, {:name => name_lc})
106
+ cache_db_res = @cache_db.single(:genderize_io_rb_cache, name: name_lc)
40
107
  if cache_db_res
41
108
  res = ::GenderizeIoRb::Result.new(
42
- :data => JSON.parse(cache_db_res[:result]),
43
- :genderize_io_rb => self
109
+ data: JSON.parse(cache_db_res[:result]),
110
+ genderize_io_rb: self,
111
+ from_cache_db: true
44
112
  )
45
113
  end
46
114
  end
47
-
48
- cache_as_key = "genderize_io_rb_#{name_lc}"
115
+
49
116
  if @cache_as
50
- cache_as_res = @cache_as.read(cache_as_key)
51
-
117
+ cache_as_res = @cache_as.read(cache_key_for_name(name_lc))
118
+
52
119
  if cache_as_res
53
120
  res = ::GenderizeIoRb::Result.new(
54
- :data => JSON.parse(cache_as_res),
55
- :genderize_io_rb => self
121
+ data: JSON.parse(cache_as_res),
122
+ genderize_io_rb: self,
123
+ from_cache_as: true
56
124
  )
57
125
  end
58
126
  end
59
-
127
+
60
128
  unless res
61
- http_res = @http.get("?name=#{CGI.escape(name)}")
129
+ http_res = @http.get("?name=#{CGI.escape(name_lc)}")
62
130
  json_res = JSON.parse(http_res.body)
63
-
64
- raise GenderizeIoRb::Errors::NameNotFound, "Name was not found on Genderize.io: '#{name}'." unless json_res["gender"]
65
-
131
+
132
+ raise GenderizeIoRb::Errors::NameNotFound, "Name was not found on Genderize.io: '#{name_lc}'." unless json_res["gender"]
133
+
66
134
  res = ::GenderizeIoRb::Result.new(
67
- :data => json_res,
68
- :genderize_io_rb => self
135
+ data: json_res,
136
+ genderize_io_rb: self,
137
+ from_http_request: true
69
138
  )
139
+ store_cache_for_name(name_lc, json_res)
140
+ end
141
+
142
+ return res
143
+ end
144
+
145
+ def destroy
146
+ @http.destroy
147
+ @destroyed = true
148
+ end
149
+
150
+ def destroyed?
151
+ return @destroyed
152
+ end
153
+
154
+ private
155
+
156
+ def handle_result(result, results, blk)
157
+ if blk
158
+ blk.call(result)
159
+ else
160
+ results << result
70
161
  end
71
-
162
+ end
163
+
164
+ def generate_urls_from_names(names_lc)
165
+ urls = []
166
+ url = "?"
167
+
168
+ names_lc.each_with_index do |name, index|
169
+ part = "name[#{index}]=#{CGI.escape(name)}"
170
+
171
+ new_length = part.length + url.length
172
+ if new_length >= 7000
173
+ urls << url
174
+ url = "?"
175
+ end
176
+
177
+ part.prepend("&") unless url == "?"
178
+ url << part
179
+ end
180
+
181
+ urls << url
182
+
183
+ return urls
184
+ end
185
+
186
+ def cache_key_for_name(name_lc)
187
+ "genderize_io_rb_#{name_lc}"
188
+ end
189
+
190
+ def store_cache_for_name(name_lc, json_result)
191
+ debug "Caching name: #{json_result}" if @debug
192
+
72
193
  # Save result to the database cache.
73
- if @cache_db && !cache_db_res
74
- @cache_db.insert(:genderize_io_rb_cache, {
75
- :name => name_lc,
76
- :result => http_res.body,
77
- :created_at => Time.now
194
+ if @cache_db
195
+ debug "Upserting into cache '#{name_lc}': #{json_result}" if @debug
196
+ @cache_db.upsert(:genderize_io_rb_cache, {name: name_lc}, {
197
+ result: JSON.generate(json_result),
198
+ created_at: Time.now
78
199
  })
79
200
  end
80
-
201
+
81
202
  if @cache_as && !cache_as_res
82
- @cache_as.write(cache_as_key, http_res.body)
203
+ @cache_as.write(cache_key_for_name(name_lc), http_res.body)
83
204
  end
84
-
85
- return {:result => res, :cache_db => @cache_db_res, :cache_as => cache_as_res}
86
205
  end
87
-
88
- def destroy
89
- @http.close
206
+
207
+ def debug(str)
208
+ $stderr.puts str if @debug
90
209
  end
91
210
  end
@@ -0,0 +1,7 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.1.2
4
+ script:
5
+ - CODECLIMATE_REPO_TOKEN=7d0bf2290d00f4aeaa414b2296c9cccfef311bebad75ce6716d22162ddff8e27 bundle exec rspec
6
+ notifications:
7
+ email: false
@@ -2,55 +2,121 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
2
 
3
3
  describe "GenderizeIoRb" do
4
4
  it "can detect various names" do
5
- gir = GenderizeIoRb.new
6
-
7
- res = gir.info_for_name("kasper")
8
- res[:result].name.should eql("kasper")
9
- res[:result].gender.should eql("male")
10
-
11
- res = gir.info_for_name("christina")
12
- res[:result].name.should eql("christina")
13
- res[:result].gender.should eql("female")
14
-
15
- gir.destroy
5
+ GenderizeIoRb.new do |gir|
6
+ res = gir.info_for_name("kasper")
7
+ res.name.should eq "kasper"
8
+ res.gender.should eq "male"
9
+ res.from_http_request?.should eq true
10
+
11
+ res = gir.info_for_name("christina")
12
+ res.name.should eq "christina"
13
+ res.gender.should eq "female"
14
+ res.from_http_request?.should eq true
15
+ end
16
16
  end
17
-
17
+
18
+ it "should accept a block to destroy automatically" do
19
+ gir = GenderizeIoRb.new{ |gir| }
20
+ gir.destroyed?.should eq true
21
+ end
22
+
18
23
  it "can use a db cache" do
19
24
  require "baza"
20
25
  require "tmpdir"
21
26
  require "sqlite3"
22
-
23
- db = Baza::Db.new(
24
- :type => "sqlite3",
25
- :path => "#{Dir.tmpdir}/genderize_io_rb_spec_#{Time.now.to_f.to_s}.sqlite3",
26
- :debug => false
27
- )
28
-
29
- gir = GenderizeIoRb.new(:cache_db => db)
30
-
31
- res = gir.info_for_name("kasper")
32
- res[:result].name.should eql("kasper")
33
-
34
- res = gir.cache_db.select(:genderize_io_rb_cache, "name" => "kasper")
35
-
36
- count = 0
37
- res.each do |data|
38
- data[:name].should eql("kasper")
39
- count += 1
27
+
28
+ Baza::Db.new(type: "sqlite3", path: "#{Dir.tmpdir}/genderize_io_rb_spec_#{Time.now.to_f.to_s}.sqlite3", debug: false) do |db|
29
+ GenderizeIoRb.new(cache_db: db) do |gir|
30
+ res = gir.info_for_name("kasper")
31
+ res.name.should eq "kasper"
32
+ res.from_http_request?.should eq true
33
+
34
+ res = gir.cache_db.select(:genderize_io_rb_cache, "name" => "kasper")
35
+
36
+ count = 0
37
+ res.each do |data|
38
+ data[:name].should eq "kasper"
39
+ count += 1
40
+ end
41
+
42
+ count.should > 0
43
+
44
+ expect {
45
+ gir.cache_db.insert(:genderize_io_rb_cache, name: "kasper")
46
+ }.to raise_error
47
+
48
+ res = gir.info_for_name("kasper")
49
+ res.name.should eq "kasper"
50
+ res.from_cache_db?.should eq true
51
+ end
40
52
  end
41
-
42
- count.should > 0
43
-
44
- expect {
45
- gir.cache_db.insert(:genderize_io_rb_cache, :name => "kasper")
46
- }.to raise_error
47
53
  end
48
-
54
+
49
55
  it "should raise errors when a name is not found" do
50
- gir = GenderizeIoRb.new
51
-
52
- expect {
53
- gir.info_for_name("ksldfjslkjfweuir")
54
- }.to raise_error(GenderizeIoRb::Errors::NameNotFound)
56
+ GenderizeIoRb.new do |gir|
57
+ expect {
58
+ gir.info_for_name("ksldfjslkjfweuir")
59
+ }.to raise_error(GenderizeIoRb::Errors::NameNotFound)
60
+ end
61
+ end
62
+
63
+ it "can do a multi-name request to speed it up with partly cache from a database" do
64
+ require "baza"
65
+ require "tmpdir"
66
+ require "sqlite3"
67
+
68
+ path = "#{Dir.tmpdir}/genderize_io_rb_spec_#{Time.now.to_f.to_s}.sqlite3"
69
+ File.unlink(path) if File.exists?(path)
70
+
71
+ Baza::Db.new(type: "sqlite3", path: path, debug: false) do |db|
72
+ GenderizeIoRb.new(cache_db: db, debug: false) do |gir|
73
+ results = gir.info_for_names(["kasper", "christina", "asdjkvujksuhdv"])
74
+
75
+ results[0].name.should eq "kasper"
76
+ results[0].gender.should eq "male"
77
+ results[0].from_http_request?.should eq true
78
+
79
+ results[1].name.should eq "christina"
80
+ results[1].gender.should eq "female"
81
+ results[1].from_http_request?.should eq true
82
+
83
+ results[2].is_a?(::GenderizeIoRb::Errors::NameNotFound).should eq true
84
+ results[2].name.should eq "asdjkvujksuhdv"
85
+
86
+
87
+ results = gir.info_for_names(["kasper", "charlotte", "bsdjkvujksuhdv"])
88
+
89
+ results[0].name.should eq "kasper"
90
+ results[0].gender.should eq "male"
91
+ results[0].from_cache_db?.should eq true
92
+
93
+ results[1].name.should eq "charlotte"
94
+ results[1].gender.should eq "female"
95
+ results[1].from_http_request?.should eq true
96
+
97
+ results[2].is_a?(::GenderizeIoRb::Errors::NameNotFound).should eq true
98
+ results[2].name.should eq "bsdjkvujksuhdv"
99
+ end
100
+ end
101
+ end
102
+
103
+ it "should automatically chomp up a lot of names to avoid errors" do
104
+ names = JSON.parse(File.read("#{File.dirname(__FILE__)}/shitload_of_names.json"))
105
+ names = names.map{ |name| name.slice(1, name.length) }
106
+
107
+ GenderizeIoRb.new do |gir|
108
+ # Check returning of array.
109
+ results = gir.info_for_names(names)
110
+ results.length.should eq names.length
111
+
112
+
113
+ # Check yielding works so it is possible to save memory.
114
+ count = 0
115
+ gir.info_for_names(names) do |result|
116
+ count += 1
117
+ end
118
+
119
+ count.should eq names.length
120
+ end
55
121
  end
56
122
  end
@@ -0,0 +1,100 @@
1
+ [
2
+ "fAaliyah","mAaron","fAarushi","fAbbey","fAbbi","fAbbie","fAbby","mAbdul","mAbdullah","mAbel"
3
+ ,"fAbi","fAbia","fAbigail","mAbraham","mAbram","mAbriel","fAby","fAcacia","mAce","fAda"
4
+ ,"fAdalia","fAdalyn","mAdam","mAdan","fAddie","fAddison","mAde","fAdelaide","fAdele","fAdelia"
5
+ ,"fAdelina","fAdeline","mAden","mAdnan","fAdreanna","mAdrian","fAdriana","fAdrianna","fAdrianne","fAdrienne"
6
+ ,"fAerona","fAgatha","fAggie","fAgnes","mAhmad","mAhmed","fAida","mAidan","mAiden","fAileen"
7
+ ,"fAimee","fAine","mAinsley","fAinsley","fAisha","fAisling","mAl","mAlain","fAlaina","mAlan"
8
+ ,"fAlana","fAlanis","fAlanna","fAlannah","mAlastair","fAlayah","fAlayna","fAlba","mAlbert","mAlberto"
9
+ ,"mAlbie","mAlden","mAldo","fAleah","mAlec","fAlecia","fAleisha","fAlejandra","mAlejandro","mAlen"
10
+ ,"fAlena","mAlesandro","fAlessandra","fAlessia","mAlex","fAlex","fAlexa","mAlexander","fAlexandra","fAlexandria"
11
+ ,"fAlexia","fAlexis","mAlexis","fAlexus","mAlfie","mAlfonso","mAlfred","mAlfredo","mAli","fAli"
12
+ ,"fAlia","fAlice","fAlicia","fAlina","fAlisa","fAlisha","fAlison","fAlissa","mAlistair","fAlivia"
13
+ ,"fAliyah","fAlize","fAlka","mAllan","mAllen","fAllie","fAllison","fAlly","fAllyson","fAlma"
14
+ ,"fAlondra","mAlonzo","mAloysius","mAlphonso","mAlton","mAlvin","fAlycia","fAlyshialynn","fAlyson","fAlyssa"
15
+ ,"fAlyssia","fAmalia","fAmanda","fAmani","fAmara","fAmari","mAmari","fAmaris","fAmaya","fAmber"
16
+ ,"fAmelia","fAmelie","fAmerica","fAmethyst","fAmie","fAmina","mAmir","fAmirah","mAmit","mAmos"
17
+ ,"fAmy","fAmya","fAna","fAnabel","fAnabelle","fAnahi","fAnais","fAnamaria","fAnastasia","fAndie"
18
+ ,"mAndre","fAndrea","mAndreas","mAndres","mAndrew","fAndromeda","mAndy","fAngel","mAngel","fAngela"
19
+ ,"fAngelia","fAngelica","fAngelina","fAngeline","fAngelique","mAngelo","fAngie","mAngus","fAnika","fAnisa"
20
+ ,"fAnita","fAniya","fAniyah","fAnjali","fAnn","fAnna","fAnnabel","fAnnabella","fAnnabelle","fAnnabeth"
21
+ ,"fAnnalisa","fAnnalise","fAnne","fAnneke","fAnnemarie","fAnnette","fAnnie","fAnnika","fAnnmarie","fAnselma"
22
+ ,"fAnthea","mAnthony","fAntoinette","mAnton","fAntonia","mAntonio","mAntony","fAnuja","fAnusha","fAnya"
23
+ ,"fAoibhe","fAoibheann","fAoife","fAphrodite","fApple","fApril","fAqua","fArabella","mAran","mArcher"
24
+ ,"mArchie","mAri","fAria","fAriadne","fAriana","fArianna","fArianne","fAriel","fAriella","fArielle"
25
+ ,"fArisha","mArjun","fArleen","fArlene","mArlo","mArman","mArmando","mArnold","mArrie","mArt"
26
+ ,"fArtemis","mArthur","mArturo","mArwin","fArya","mAsa","mAsad","mAsh","fAsha","fAshanti"
27
+ ,"mAsher","fAshlee","fAshleigh","mAshley","fAshley","fAshlie","fAshlyn","fAshlynn","mAshton","fAshton"
28
+ ,"fAshvini","fAsia","mAsif","fAsma","mAspen","fAspen","mAston","fAstrid","fAthena","mAtticus"
29
+ ,"fAubree","fAubrey","mAubrey","fAudra","fAudrey","fAudrina","mAudwin","mAugust","fAugustina","mAugustus"
30
+ ,"fAurelia","fAurora","mAusten","mAustin","fAutumn","fAva","fAvalon","fAvery","mAvery","fAvril"
31
+ ,"mAxel","fAya","mAyaan","fAyana","fAyanna","mAyden","fAyesha","fAyisha","fAyla","fAzalea"
32
+ ,"fAzaria","fAzariah","fBailey","mBailey","fBarbara","fBarbie","mBarclay","mBarnaby","mBarney","mBarrett"
33
+ ,"mBarry","mBart","mBartholomew","mBasil","mBay","fBaylee","mBaylor","fBea","fBeatrice","fBeatrix"
34
+ ,"mBeau","fBecca","fBeccy","mBeck","mBeckett","fBecky","fBelinda","fBella","mBellamy","fBellatrix"
35
+ ,"fBelle","mBen","mBenedict","fBenita","mBenjamin","mBenji","mBenjy","mBennett","mBennie","mBenny"
36
+ ,"mBenson","fBenthe","mBentley","mBently","fBernadette","mBernard","mBernardo","fBernice","mBernie","mBert"
37
+ ,"fBertha","mBertie","mBertram","fBeryl","fBess","fBeth","fBethan","fBethanie","fBethany","fBetsy"
38
+ ,"fBettina","fBetty","mBevan","fBeverly","fBeyonce","fBhu","fBianca","mBill","fBillie","mBilly"
39
+ ,"mBladen","mBlain","mBlaine","fBlair","mBlair","fBlaire","mBlaise","fBlake","mBlake","fBlanche"
40
+ ,"mBlaze","fBliss","fBloom","fBlossom","mBlue","fBlythe","mBob","fBobbi","fBobbie","mBobby"
41
+ ,"mBodie","fBonita","fBonnie","mBoris","mBoston","mBoyd","mBrad","mBraden","mBradford","mBradley"
42
+ ,"mBradwin","mBrady","mBraeden","fBraelyn","mBram","mBranden","fBrandi","mBrandon","fBrandy","mBrantley"
43
+ ,"mBraxton","mBrayan","mBrayden","mBraydon","fBraylee","mBraylon","fBrea","fBreanna","fBree","fBreeze"
44
+ ,"fBrenda","mBrendan","mBrenden","mBrendon","fBrenna","mBrennan","mBrent","mBret","mBrett","mBrevyn"
45
+ ,"fBria","mBrian","fBriana","fBrianna","fBrianne","fBriar","mBrice","fBridget","fBridgette","fBridie"
46
+ ,"fBriella","fBrielle","fBriley","mBrinley","fBrinley","fBriony","fBrisa","fBritney","fBritt","fBrittany"
47
+ ,"fBrittney","mBrock","mBrodie","mBrody","fBrogan","mBrogan","mBronson","fBronte","fBronwen","fBronwyn"
48
+ ,"fBrooke","fBrooklyn","fBrooklynn","mBrooks","mBruce","mBruno","mBryan","fBryanna","mBryant","mBryce"
49
+ ,"mBrydon","fBrylee","fBryn","fBrynlee","fBrynn","mBryon","fBryony","mBryson","mBuck","mBuddy"
50
+ ,"fBunty","mBurt","mBurton","mBuster","mButch","mByron","mCadby","mCade","mCaden","fCadence"
51
+ ,"mCael","mCaelan","mCaesar","mCai","mCaiden","fCailin","mCain","fCaitlan","fCaitlin","fCaitlyn"
52
+ ,"mCaius","mCal","mCaleb","fCaleigh","mCalhoun","fCali","mCallan","fCallie","fCalliope","fCallista"
53
+ ,"mCallum","mCalum","mCalvin","fCalypso","mCam","mCamden","fCameron","mCameron","fCami","fCamila"
54
+ ,"fCamilla","fCamille","mCampbell","mCamron","fCamryn","fCandace","fCandice","fCandy","fCaoimhe","fCaprice"
55
+ ,"fCara","mCarey","fCarina","fCaris","fCarissa","mCarl","fCarla","fCarley","fCarlie","mCarlos"
56
+ ,"mCarlton","fCarly","fCarlynn","fCarmel","fCarmela","fCarmen","fCarol","fCarole","fCarolina","fCaroline"
57
+ ,"fCarolyn","fCarrie","mCarsen","mCarson","mCarter","fCarter","mCary","fCarys","mCasey","fCasey"
58
+ ,"mCash","mCasper","fCassandra","fCassia","fCassidy","fCassie","mCassius","mCastiel","fCat","fCate"
59
+ ,"fCaterina","mCathal","fCathalina","fCatherine","fCathleen","fCathy","fCatlin","mCato","fCatrina","fCatriona"
60
+ ,"mCavan","mCayden","fCayla","fCece","fCecelia","mCecil","fCecilia","fCecily","mCedric","fCeleste"
61
+ ,"fCelestia","fCelestine","fCelia","fCelina","fCeline","fCerys","mCesar","mChad","mChance","mChandler"
62
+ ,"fChanel","fChanelle","mChanning","fChantal","fChantelle","fCharis","fCharissa","fCharity","fCharlene","mCharles"
63
+ ,"fCharley","mCharlie","fCharlie","fCharlize","fCharlotte","fCharmaine","mChase","fChastity","mChaz","mChe"
64
+ ,"fChelsea","fChelsey","fChenille","fCher","fCheri","fCherie","fCherry","fCheryl","mChesney","mChester"
65
+ ,"mChevy","fCheyanne","fCheyenne","fChiara","mChip","fChloe","mChris","fChris","fChrissy","fChrista"
66
+ ,"fChristabel","fChristal","fChristen","fChristi","mChristian","fChristiana","fChristie","fChristina","fChristine","mChristopher"
67
+ ,"fChristy","fChrystal","mChuck","mCian","fCiara","mCiaran","fCici","fCiel","fCierra","mCillian"
68
+ ,"fCindy","fClaire","mClancy","fClara","fClarabelle","fClare","mClarence","fClarice","fClarissa","fClarisse"
69
+ ,"mClark","fClary","mClaude","fClaudette","fClaudia","fClaudine","mClay","mClayton","fClea","mClement"
70
+ ,"fClementine","fCleo","mCliff","mClifford","mClifton","mClint","mClinton","mClive","fClodagh","fClover"
71
+ ,"mClyde","mCoby","fCoco","mCody","mCohen","mColby","mCole","fColette","mColin","fColleen"
72
+ ,"mCollin","mColm","mColt","mColton","mConan","mConner","fConnie","mConnor","mConor","mConrad"
73
+ ,"fConstance","mConstantine","mCooper","fCora","fCoral","fCoralie","fCoraline","mCorbin","fCordelia","mCorey"
74
+ ,"fCori","fCorina","fCorinne","mCormac","mCornelius","fCorra","mCory","fCosette","fCourtney","mCraig"
75
+ ,"mCristian","fCristina","mCristobal","mCruz","fCrystal","mCullen","mCurt","mCurtis","mCuthbert","fCynthia"
76
+ ,"mCyril","mCyrus","mDacey","fDagmar","fDahlia","mDaire","fDaisy","fDakota","mDakota","mDale"
77
+ ,"mDallas","mDalton","mDamian","mDamien","mDamion","mDamon","mDan","mDana","fDana","mDane"
78
+ ,"fDanette","fDani","fDanica","mDaniel","fDaniela","fDaniella","fDanielle","fDanika","mDanny","mDante"
79
+ ,"fDaphne","mDara","fDara","mDaragh","fDarcey","fDarcie","mDarcy","fDarcy","mDaren","fDaria"
80
+ ,"mDarian","mDarin","mDario","mDarius","fDarla","fDarlene","mDarnell","mDarragh","mDarrel","mDarrell"
81
+ ,"mDarren","mDarrin","mDarryl","mDarwin","mDaryl","mDash","mDashawn","fDashee","mDave","mDavid"
82
+ ,"fDavida","fDavina","mDavion","mDavis","fDawn","mDawson","mDax","mDaxter","mDaxton","fDayna"
83
+ ,"fDaysha","mDayton","mDeacon","mDean","fDeana","mDeandre","fDeann","fDeanna","fDeanne","fDebbie"
84
+ ,"fDebora","fDeborah","fDebra","mDeclan","fDee","fDeedee","fDeena","mDeepak","fDeidre","fDeirdre"
85
+ ,"fDeja","fDelaney","fDelanie","mDelbert","fDelia","fDelilah","fDella","fDelores","fDelphine","fDemetria"
86
+ ,"mDemetrius","fDemi","fDena","mDenis","fDenise","mDennis","fDenny","mDenver","mDenzel","mDerek"
87
+ ,"mDerrick","mDeshawn","fDesiree","mDesmond","fDestinee","fDestiny","mDev","mDevin","mDevlin","mDevon"
88
+ ,"mDewayne","mDewey","mDexter","mDhalsim","fDiamond","fDiana","fDiane","fDianna","fDianne","mDiarmuid"
89
+ ,"mDick","fDido","mDiego","mDieter","mDillon","mDimitri","fDina","mDinesh","mDino","mDion"
90
+ ,"fDionne","fDior","mDirk","fDixie","mDjango","mDmitri","fDolly","fDolores","mDominic","mDominick"
91
+ ,"fDominique","mDon","mDonald","fDonna","mDonnie","mDonovan","fDora","fDoreen","mDorian","fDoris"
92
+ ,"fDorothy","fDot","mDoug","mDouglas","mDoyle","mDrake","fDrew","mDrew","mDuane","mDuke"
93
+ ,"fDulce","mDuncan","mDustin","mDwayne","mDwight","mDylan","fEabha","mEamon","mEarl","mEarnest"
94
+ ,"mEaston","fEbony","fEcho","mEd","mEddie","mEddy","mEden","fEden","mEdgar","fEdie"
95
+ ,"mEdison","fEdith","mEdmund","fEdna","mEduardo","mEdward","mEdwardo","mEdwin","fEdwina","fEffie"
96
+ ,"mEfrain","mEfren","mEgan","mEgon","fEileen","fEilidh","fEimear","fElaina","fElaine","fElana"
97
+ ,"fEleanor","fElectra","fElektra","fElena","mEli","fEliana","mElias","mElijah","fElin","fElina"
98
+ ,"mEliot","fElisa","fElisabeth","fElise","mElisha","fEliza","fElizabeth","fElla","fElle","fEllen"
99
+ ,"fEllery","fEllie","mElliot","mElliott","mEllis","fEllis","fElly","mElmer","mElmo","fElodie"
100
+ ,"fEloise","fElora","fElsa","fElsie","fElspeth","mElton","fElvira","mElvis","fElysia","fElyza"]
@@ -1,3 +1,6 @@
1
+ require "codeclimate-test-reporter"
2
+ CodeClimate::TestReporter.start
3
+
1
4
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
5
  $LOAD_PATH.unshift(File.dirname(__FILE__))
3
6
  require 'rspec'
@@ -8,5 +11,5 @@ require 'genderize_io_rb'
8
11
  Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
9
12
 
10
13
  RSpec.configure do |config|
11
-
14
+
12
15
  end
metadata CHANGED
@@ -1,139 +1,139 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: genderize_io_rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kasper Johansen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-28 00:00:00.000000000 Z
11
+ date: 2014-11-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: http2
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: json
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: string-cases
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: 2.8.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 2.8.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rdoc
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: '3.12'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ~>
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '3.12'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: bundler
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: 1.0.0
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: 1.0.0
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: jeweler
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - '>='
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - '>='
108
+ - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: sqlite3
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - '>='
115
+ - - ">="
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - '>='
122
+ - - ">="
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: baza
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - '>='
129
+ - - ">="
130
130
  - !ruby/object:Gem::Version
131
131
  version: 0.0.12
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - '>='
136
+ - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: 0.0.12
139
139
  description: A small Gem that makes it possible to determine gender from a name via
@@ -145,8 +145,8 @@ extra_rdoc_files:
145
145
  - LICENSE.txt
146
146
  - README.md
147
147
  files:
148
- - .document
149
- - .rspec
148
+ - ".document"
149
+ - ".rspec"
150
150
  - Gemfile
151
151
  - Gemfile.lock
152
152
  - LICENSE.txt
@@ -158,7 +158,9 @@ files:
158
158
  - include/errors.rb
159
159
  - include/result.rb
160
160
  - lib/genderize_io_rb.rb
161
+ - shippable.yml
161
162
  - spec/genderize_io_rb_spec.rb
163
+ - spec/shitload_of_names.json
162
164
  - spec/spec_helper.rb
163
165
  homepage: http://github.com/kaspernj/genderize_io_rb
164
166
  licenses:
@@ -170,17 +172,17 @@ require_paths:
170
172
  - lib
171
173
  required_ruby_version: !ruby/object:Gem::Requirement
172
174
  requirements:
173
- - - '>='
175
+ - - ">="
174
176
  - !ruby/object:Gem::Version
175
177
  version: '0'
176
178
  required_rubygems_version: !ruby/object:Gem::Requirement
177
179
  requirements:
178
- - - '>='
180
+ - - ">="
179
181
  - !ruby/object:Gem::Version
180
182
  version: '0'
181
183
  requirements: []
182
184
  rubyforge_project:
183
- rubygems_version: 2.0.7
185
+ rubygems_version: 2.4.0
184
186
  signing_key:
185
187
  specification_version: 4
186
188
  summary: A small Gem that makes it possible to determine gender from a name via the