snowplow_ruby_duid 1.0.0 → 1.0.1

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
2
  SHA1:
3
- metadata.gz: 6749b8244b13eba46c57d783d71a7f5f845a2b75
4
- data.tar.gz: bfe6033bc841788b45a8dd6c1935e206bbe4b814
3
+ metadata.gz: c2818143e193e501a987cbaca0dfcb084010d012
4
+ data.tar.gz: 4b6295b77691331a88608578c46a95e749a6e241
5
5
  SHA512:
6
- metadata.gz: 9c65749df84ffdacc6ea48cdb51bbdb232a8c832c48ccdccb27f03e75e11798c66169265809571f35a980bc21b9bf82ed012bbb23a7c635fd9246a12be972a79
7
- data.tar.gz: df781d3bc9c58c451c881198ff35d84479adb242f03336ac9ee9e1d3d8e5b2946a90989b3664e30a146bf09fa3cf055e3562f67dbf55d6d7c6a6071c968aab85
6
+ metadata.gz: 63df7f00beb0850f36f54505a5f239339432c8306e9e9a424402da2a0727cb4567c4867d77a6766a75160f8c12b082d3f0c906a5b2e7fa922a0f0fdf9836da97
7
+ data.tar.gz: 0a791495bf59396b38481f9efb025ede2907ca12413a6c1b2f21e026b4cf277d57e3a558a0248bebaeca2b1ebdb7157f77fbaef5496d93a8fa5e35e5b0385274
data/.rubocop.yml ADDED
@@ -0,0 +1,6 @@
1
+ Metrics/LineLength:
2
+ Enabled: false
3
+
4
+ Style/BlockDelimiters:
5
+ Exclude:
6
+ - 'spec/lib/snowplow_ruby_duid/cookie_spec.rb'
@@ -4,7 +4,7 @@ require 'snowplow_ruby_duid/domain_userid'
4
4
  require 'snowplow_ruby_duid/helper'
5
5
 
6
6
  module SnowplowRubyDuid
7
- KEY_PREFIX = '_sp_id'
7
+ KEY_PREFIX = '_sp_id'.freeze
8
8
  end
9
9
 
10
10
  ActionController::Base.send :include, SnowplowRubyDuid::Helper if defined?(ActionController)
@@ -2,15 +2,14 @@ module SnowplowRubyDuid
2
2
  # Responsible for generating a cookie that emulates the Snowplow cookie as closely as possible
3
3
  # Leverages the method used by ActionDispatch::Cookies::CookieJar to determine the top-level domain
4
4
  class Cookie
5
-
6
5
  # See: https://github.com/snowplow/snowplow-javascript-tracker/blob/d3d10067127eb5c95d0054c8ae60f3bdccba619d/src/js/tracker.js#L142
7
- COOKIE_PATH = '/'
6
+ COOKIE_PATH = '/'.freeze
8
7
  # See: https://github.com/snowplow/snowplow-javascript-tracker/blob/d3d10067127eb5c95d0054c8ae60f3bdccba619d/src/js/tracker.js#L156
9
8
  COOKIE_DURATION_MONTHS = 24
10
9
  # See: https://github.com/rails/rails/blob/b1124a2ac88778c0feb0157ac09367cbd204bf01/actionpack/lib/action_dispatch/middleware/cookies.rb#L214
11
10
  DOMAIN_REGEXP = /[^.]*\.([^.]*|..\...|...\...)$/
12
11
 
13
- def initialize host, domain_userid, request_created_at
12
+ def initialize(host, domain_userid, request_created_at)
14
13
  @host = host
15
14
  @domain_userid = domain_userid
16
15
  @request_created_at = request_created_at
@@ -20,7 +19,7 @@ module SnowplowRubyDuid
20
19
  # See: https://github.com/snowplow/snowplow-javascript-tracker/blob/d3d10067127eb5c95d0054c8ae60f3bdccba619d/src/js/tracker.js#L372-L374
21
20
  def key
22
21
  domain = top_level_domain || @host
23
- KEY_PREFIX + '.' + (Digest::SHA1.hexdigest (domain + COOKIE_PATH))[0..3]
22
+ KEY_PREFIX + '.' + Digest::SHA1.hexdigest(domain + COOKIE_PATH)[0..3]
24
23
  end
25
24
 
26
25
  def value
@@ -29,7 +28,7 @@ module SnowplowRubyDuid
29
28
  value: cookie_value,
30
29
  expires: cookie_expiration,
31
30
  domain: cookie_domain,
32
- path: COOKIE_PATH,
31
+ path: COOKIE_PATH
33
32
  }
34
33
  end
35
34
 
@@ -37,17 +36,15 @@ module SnowplowRubyDuid
37
36
 
38
37
  # See: https://github.com/rails/rails/blob/b1124a2ac88778c0feb0157ac09367cbd204bf01/actionpack/lib/action_dispatch/middleware/cookies.rb#L286-L294
39
38
  def top_level_domain
40
- if (@host !~ /^[\d.]+$/) && (@host =~ DOMAIN_REGEXP)
41
- $&
42
- end
39
+ $& if (@host !~ /^[\d.]+$/) && (@host =~ DOMAIN_REGEXP)
43
40
  end
44
41
 
45
42
  # See: https://github.com/snowplow/snowplow-javascript-tracker/blob/d3d10067127eb5c95d0054c8ae60f3bdccba619d/src/js/tracker.js#L476-L487
46
43
  def cookie_value
47
- visitCount = '0'
48
- lastVisitTs = ''
49
- createTs = nowTs = @request_created_at.to_i.to_s
50
- [@domain_userid, createTs, visitCount, nowTs, lastVisitTs].join '.'
44
+ visit_count = '0'
45
+ last_visit_ts = ''
46
+ create_ts = now_ts = @request_created_at.to_i.to_s
47
+ [@domain_userid, create_ts, visit_count, now_ts, last_visit_ts].join '.'
51
48
  end
52
49
 
53
50
  def cookie_expiration
@@ -3,7 +3,6 @@ module SnowplowRubyDuid
3
3
  # Deviates from this Snowplow Javascript: https://github.com/snowplow/snowplow-javascript-tracker/blob/d3d10067127eb5c95d0054c8ae60f3bdccba619d/src/js/tracker.js#L468-L472
4
4
  # in order to provide a more unique identifier
5
5
  class DomainUserid
6
-
7
6
  LENGTH_OF_DUID_IN_BYTES = 8
8
7
 
9
8
  def initialize
@@ -3,7 +3,6 @@ module SnowplowRubyDuid
3
3
  # that will find or create a domain_userid, which will be
4
4
  # saved in the response's cookie if it does not exist
5
5
  module Helper
6
-
7
6
  def snowplow_domain_userid
8
7
  @snowplow_domain_userid ||= find_or_create_snowplow_domain_userid
9
8
  end
@@ -32,7 +31,7 @@ module SnowplowRubyDuid
32
31
  private :find_snowplow_domain_userid
33
32
 
34
33
  def find_snowplow_cookie
35
- request.cookies.find { |(key, value)| key =~ /^#{KEY_PREFIX}/ } # result will be an array containing: [key, value]
34
+ request.cookies.find { |(key, _value)| key =~ /^#{KEY_PREFIX}/ } # result will be an array containing: [key, value]
36
35
  end
37
36
  private :find_snowplow_cookie
38
37
  end
@@ -1,3 +1,3 @@
1
1
  module SnowplowRubyDuid
2
- VERSION = '1.0.0'
2
+ VERSION = '1.0.1'.freeze
3
3
  end
@@ -8,19 +8,20 @@ Gem::Specification.new do |spec|
8
8
  spec.version = SnowplowRubyDuid::VERSION
9
9
  spec.authors = ['Simply Business']
10
10
  spec.email = ['tech@simplybusiness.co.uk']
11
- spec.description = %q{A gem that exposes the Snowplow domain userid in Rack applications. Also allows you to set your own domain userid that will be shared with the Snowplow Javascript tracker.}
12
- spec.summary = %q{A gem that exposes the Snowplow domain userid in Rack applications. Also allows you to set your own domain userid that will be shared with the Snowplow Javascript tracker.}
11
+ spec.description = 'A gem that exposes the Snowplow domain userid in Rack applications. Also allows you to set your own domain userid that will be shared with the Snowplow Javascript tracker.'
12
+ spec.summary = 'A gem that exposes the Snowplow domain userid in Rack applications. Also allows you to set your own domain userid that will be shared with the Snowplow Javascript tracker.'
13
13
  spec.homepage = 'https://github.com/simplybusiness/snowplow_ruby_duid'
14
14
  spec.license = 'MIT'
15
15
 
16
- spec.files = `git ls-files`.split($/)
16
+ spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ['lib']
20
20
 
21
- spec.add_development_dependency 'rack'
22
- spec.add_development_dependency 'rack-test'
23
- spec.add_development_dependency 'rspec'
24
- spec.add_development_dependency 'rutabaga'
25
- spec.add_development_dependency 'timecop'
21
+ spec.add_development_dependency 'rack', '~> 2.0'
22
+ spec.add_development_dependency 'rack-test', '~> 0.6'
23
+ spec.add_development_dependency 'rspec', '~> 3.5'
24
+ spec.add_development_dependency 'rubocop', '~> 0.46'
25
+ spec.add_development_dependency 'rutabaga', '~> 2.1'
26
+ spec.add_development_dependency 'timecop', '~> 0.8'
26
27
  end
@@ -9,87 +9,82 @@ module SnowplowRubyDuid
9
9
  subject { described_class.new @host, @domain_userid, @request_created_at }
10
10
 
11
11
  describe '#key' do
12
-
13
12
  it 'generates the key' do
14
13
  expect(subject.key).to eq('_sp_id.8fb9')
15
14
  end
16
15
  end
17
16
 
18
17
  describe '#value' do
19
-
20
18
  it 'generates a cookie' do
21
19
  expect(subject.value).to eq(
22
- {
23
20
  domain: '.simplybusiness.co.uk',
24
21
  expires: (DateTime.parse '2017-01-22 15:26:31 +0000').to_time,
25
22
  path: '/',
26
23
  value: 'domain_user_id.1421940391.0.1421940391.'
27
- })
24
+ )
28
25
  end
29
26
  end
30
27
 
31
- it 'runs the feature' do
32
- feature
33
- end
34
-
35
- step 'the host is :host' do |host|
36
- @host = host
37
- end
28
+ feature do
29
+ step 'the host is :host' do |host|
30
+ @host = host
31
+ end
38
32
 
39
- step 'the domain_userid is :domain_userid' do |domain_userid|
40
- @domain_userid = domain_userid
41
- end
33
+ step 'the domain_userid is :domain_userid' do |domain_userid|
34
+ @domain_userid = domain_userid
35
+ end
42
36
 
43
- step 'the time is :time' do |time|
44
- @request_created_at = (DateTime.parse time).to_time
45
- end
37
+ step 'the time is :time' do |time|
38
+ @request_created_at = (DateTime.parse time).to_time
39
+ end
46
40
 
47
- step 'I create a Snowplow cookie' do; end
41
+ step 'I create a Snowplow cookie' do; end
48
42
 
49
- step 'the cookie has the path :path' do |path|
50
- expect(subject.value[:path]).to eq(path)
51
- end
52
-
53
- step 'the cookie has the domain :domain' do |domain|
54
- if domain == ''
55
- expect(subject.value[:domain]).to be_nil
56
- else
57
- expect(subject.value[:domain]).to eq(domain)
43
+ step 'the cookie has the path :path' do |path|
44
+ expect(subject.value[:path]).to eq(path)
58
45
  end
59
- end
60
46
 
61
- step 'the cookie has the name :name' do |name|
62
- expect(subject.key).to eq(name)
63
- end
64
-
65
- step 'the cookie expires at :time' do |time|
66
- expect(subject.value[:expires].to_s).to eq(time)
67
- end
47
+ step 'the cookie has the domain :domain' do |domain|
48
+ if domain == ''
49
+ expect(subject.value[:domain]).to be_nil
50
+ else
51
+ expect(subject.value[:domain]).to eq(domain)
52
+ end
53
+ end
68
54
 
69
- step 'the cookie value is :value' do |value|
70
- expect(subject.value[:value]).to eq(value)
71
- end
55
+ step 'the cookie has the name :name' do |name|
56
+ expect(subject.key).to eq(name)
57
+ end
72
58
 
73
- step 'the cookie value for :field is :value' do |field, value|
74
- value_index = case field
75
- when 'domain_userid'
76
- then 0
77
- when 'createTs'
78
- then 1
79
- when 'visitCount'
80
- then 2
81
- when 'nowTs'
82
- then 3
83
- when 'lastVisitTs'
84
- then 4
85
- else
86
- raise "unknown field name: #{field}"
59
+ step 'the cookie expires at :time' do |time|
60
+ expect(subject.value[:expires].to_s).to eq(time)
87
61
  end
88
62
 
89
- value = nil if value == ''
63
+ step 'the cookie value is :value' do |value|
64
+ expect(subject.value[:value]).to eq(value)
65
+ end
90
66
 
91
- values = subject.value[:value].split '.'
92
- expect(values[value_index]).to eq(value)
67
+ step 'the cookie value for :field is :value' do |field, value|
68
+ value_index = case field
69
+ when 'domain_userid'
70
+ then 0
71
+ when 'createTs'
72
+ then 1
73
+ when 'visitCount'
74
+ then 2
75
+ when 'nowTs'
76
+ then 3
77
+ when 'lastVisitTs'
78
+ then 4
79
+ else
80
+ raise "unknown field name: #{field}"
81
+ end
82
+
83
+ value = nil if value == ''
84
+
85
+ values = subject.value[:value].split '.'
86
+ expect(values[value_index]).to eq(value)
87
+ end
93
88
  end
94
89
  end
95
90
  end
@@ -16,25 +16,23 @@ module SnowplowRubyDuid
16
16
  end
17
17
  subject { last_response.header['Set-Cookie'] }
18
18
 
19
- it 'runs the feature' do
20
- feature
21
- end
22
-
23
- step 'I set a Snowplow domain userid of :domain_userid in my cookie' do |domain_userid|
24
- set_cookie("_sp_id.3678=#{domain_userid}.631152000.0.631152000.631152000") unless domain_userid == ''
25
- end
19
+ feature do
20
+ step 'I set a Snowplow domain userid of :domain_userid in my cookie' do |domain_userid|
21
+ set_cookie("_sp_id.3678=#{domain_userid}.631152000.0.631152000.631152000") unless domain_userid == ''
22
+ end
26
23
 
27
- step 'I request the Snowplow domain userid' do
28
- allow_any_instance_of(DomainUserid).to receive(:to_s).and_return('2222222222222222')
29
- get '/'
30
- end
24
+ step 'I request the Snowplow domain userid' do
25
+ allow_any_instance_of(DomainUserid).to receive(:to_s).and_return('2222222222222222')
26
+ get '/'
27
+ end
31
28
 
32
- step 'I receive the Snowplow domain userid :domain_userid' do |domain_userid|
33
- expect(app.domain_userid).to eq(domain_userid)
34
- end
29
+ step 'I receive the Snowplow domain userid :domain_userid' do |domain_userid|
30
+ expect(app.domain_userid).to eq(domain_userid)
31
+ end
35
32
 
36
- step 'I have the Snowplow domain userid :domain_userid in my cookie' do |domain_userid|
37
- expect(subject).to include(domain_userid)
33
+ step 'I have the Snowplow domain userid :domain_userid in my cookie' do |domain_userid|
34
+ expect(subject).to include(domain_userid)
35
+ end
38
36
  end
39
37
 
40
38
  context 'when there is an existing snowplow cookie' do
@@ -54,7 +52,6 @@ module SnowplowRubyDuid
54
52
  end
55
53
 
56
54
  context 'when there is not an existing snowplow cookie' do
57
-
58
55
  it 'generates a domain userid and saves it in the response cookie' do
59
56
  get '/'
60
57
  expect(subject).to include(app.domain_userid)
@@ -69,10 +66,10 @@ class App
69
66
 
70
67
  attr_reader :request, :response, :domain_userid
71
68
 
72
- def call env
69
+ def call(env)
73
70
  @request = Rack::Request.new env
74
71
  @response = Rack::Response.new
75
- request.cookies.each{|k,v| response.set_cookie k, v }
72
+ request.cookies.each { |k, v| response.set_cookie k, v }
76
73
 
77
74
  @domain_userid = snowplow_domain_userid
78
75
 
data/spec/spec_helper.rb CHANGED
@@ -41,52 +41,50 @@ RSpec.configure do |config|
41
41
  mocks.verify_partial_doubles = true
42
42
  end
43
43
 
44
- # The settings below are suggested to provide a good initial experience
45
- # with RSpec, but feel free to customize to your heart's content.
46
- =begin
47
- # These two settings work together to allow you to limit a spec run
48
- # to individual examples or groups you care about by tagging them with
49
- # `:focus` metadata. When nothing is tagged with `:focus`, all examples
50
- # get run.
51
- config.filter_run :focus
52
- config.run_all_when_everything_filtered = true
53
-
54
- # Limits the available syntax to the non-monkey patched syntax that is recommended.
55
- # For more details, see:
56
- # - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
57
- # - http://teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
58
- # - http://myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3#new__config_option_to_disable_rspeccore_monkey_patching
59
- config.disable_monkey_patching!
60
-
61
- # This setting enables warnings. It's recommended, but in some cases may
62
- # be too noisy due to issues in dependencies.
63
- config.warnings = true
64
-
65
- # Many RSpec users commonly either run the entire suite or an individual
66
- # file, and it's useful to allow more verbose output when running an
67
- # individual spec file.
68
- if config.files_to_run.one?
69
- # Use the documentation formatter for detailed output,
70
- # unless a formatter has already been configured
71
- # (e.g. via a command-line flag).
72
- config.default_formatter = 'doc'
73
- end
74
-
75
- # Print the 10 slowest examples and example groups at the
76
- # end of the spec run, to help surface which specs are running
77
- # particularly slow.
78
- config.profile_examples = 10
79
-
80
- # Run specs in random order to surface order dependencies. If you find an
81
- # order dependency and want to debug it, you can fix the order by providing
82
- # the seed, which is printed after each run.
83
- # --seed 1234
84
- config.order = :random
85
-
86
- # Seed global randomization in this process using the `--seed` CLI option.
87
- # Setting this allows you to use `--seed` to deterministically reproduce
88
- # test failures related to randomization by passing the same `--seed` value
89
- # as the one that triggered the failure.
90
- Kernel.srand config.seed
91
- =end
44
+ # The settings below are suggested to provide a good initial experience
45
+ # with RSpec, but feel free to customize to your heart's content.
46
+ # # These two settings work together to allow you to limit a spec run
47
+ # # to individual examples or groups you care about by tagging them with
48
+ # # `:focus` metadata. When nothing is tagged with `:focus`, all examples
49
+ # # get run.
50
+ # config.filter_run :focus
51
+ # config.run_all_when_everything_filtered = true
52
+ #
53
+ # # Limits the available syntax to the non-monkey patched syntax that is recommended.
54
+ # # For more details, see:
55
+ # # - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
56
+ # # - http://teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
57
+ # # - http://myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3#new__config_option_to_disable_rspeccore_monkey_patching
58
+ # config.disable_monkey_patching!
59
+ #
60
+ # # This setting enables warnings. It's recommended, but in some cases may
61
+ # # be too noisy due to issues in dependencies.
62
+ # config.warnings = true
63
+ #
64
+ # # Many RSpec users commonly either run the entire suite or an individual
65
+ # # file, and it's useful to allow more verbose output when running an
66
+ # # individual spec file.
67
+ # if config.files_to_run.one?
68
+ # # Use the documentation formatter for detailed output,
69
+ # # unless a formatter has already been configured
70
+ # # (e.g. via a command-line flag).
71
+ # config.default_formatter = 'doc'
72
+ # end
73
+ #
74
+ # # Print the 10 slowest examples and example groups at the
75
+ # # end of the spec run, to help surface which specs are running
76
+ # # particularly slow.
77
+ # config.profile_examples = 10
78
+ #
79
+ # # Run specs in random order to surface order dependencies. If you find an
80
+ # # order dependency and want to debug it, you can fix the order by providing
81
+ # # the seed, which is printed after each run.
82
+ # # --seed 1234
83
+ # config.order = :random
84
+ #
85
+ # # Seed global randomization in this process using the `--seed` CLI option.
86
+ # # Setting this allows you to use `--seed` to deterministically reproduce
87
+ # # test failures related to randomization by passing the same `--seed` value
88
+ # # as the one that triggered the failure.
89
+ # Kernel.srand config.seed
92
90
  end
metadata CHANGED
@@ -1,85 +1,99 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: snowplow_ruby_duid
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Simply Business
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-25 00:00:00.000000000 Z
11
+ date: 2017-01-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '2.0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '2.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rack-test
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '0.6'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '0.6'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: '3.5'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: '3.5'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rubocop
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.46'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.46'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rutabaga
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
- - - ">="
73
+ - - "~>"
60
74
  - !ruby/object:Gem::Version
61
- version: '0'
75
+ version: '2.1'
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
- - - ">="
80
+ - - "~>"
67
81
  - !ruby/object:Gem::Version
68
- version: '0'
82
+ version: '2.1'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: timecop
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
- - - ">="
87
+ - - "~>"
74
88
  - !ruby/object:Gem::Version
75
- version: '0'
89
+ version: '0.8'
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
- - - ">="
94
+ - - "~>"
81
95
  - !ruby/object:Gem::Version
82
- version: '0'
96
+ version: '0.8'
83
97
  description: A gem that exposes the Snowplow domain userid in Rack applications. Also
84
98
  allows you to set your own domain userid that will be shared with the Snowplow Javascript
85
99
  tracker.
@@ -91,6 +105,7 @@ extra_rdoc_files: []
91
105
  files:
92
106
  - ".gitignore"
93
107
  - ".rspec"
108
+ - ".rubocop.yml"
94
109
  - Gemfile
95
110
  - LICENSE.txt
96
111
  - README.md