diff --git a/.github/workflows/ruby.yml b/.github/workflows/ruby.yml index 32b961b..3e6812b 100644 --- a/.github/workflows/ruby.yml +++ b/.github/workflows/ruby.yml @@ -15,19 +15,20 @@ jobs: strategy: matrix: ruby-version: - - '2.0' - - '2.1' - - '2.2' - '2.3' - '2.5' - '2.6' - # - '2.7' - # - '3.0' + - '2.7' + - '3.0' + - '3.1' + - '3.2' + - '3.3' + - '3.4' steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v6 - name: Set up Ruby - uses: ruby/setup-ruby@0a29871fe2b0200a17a4497bae54fe5df0d973aa # v1.115.3 + uses: ruby/setup-ruby@d697be2f83c6234b20877c3b5eac7a7f342f0d0c # v1.269.0 with: ruby-version: ${{ matrix.ruby-version }} bundler-cache: true # runs 'bundle install' and caches installed gems automatically diff --git a/lib/mixpanel-ruby/events.rb b/lib/mixpanel-ruby/events.rb index fbe4b56..be653cd 100644 --- a/lib/mixpanel-ruby/events.rb +++ b/lib/mixpanel-ruby/events.rb @@ -55,7 +55,7 @@ def track(distinct_id, event, properties={}, ip=nil) properties = { 'distinct_id' => distinct_id, 'token' => @token, - 'time' => Time.now.to_f, + 'time' => (Time.now.to_f * 1000).to_i, 'mp_lib' => 'ruby', '$lib_version' => Mixpanel::VERSION, }.merge(properties) @@ -103,7 +103,7 @@ def import(api_key, distinct_id, event, properties={}, ip=nil) properties = { 'distinct_id' => distinct_id, 'token' => @token, - 'time' => Time.now.to_f, + 'time' => (Time.now.to_f * 1000).to_i, 'mp_lib' => 'ruby', '$lib_version' => Mixpanel::VERSION, }.merge(properties) diff --git a/lib/mixpanel-ruby/groups.rb b/lib/mixpanel-ruby/groups.rb index 8b09e2c..42048dc 100644 --- a/lib/mixpanel-ruby/groups.rb +++ b/lib/mixpanel-ruby/groups.rb @@ -170,7 +170,7 @@ def delete_group(group_key, group_id, optional_params={}) def update(message) data = { '$token' => @token, - '$time' => Time.now.to_f, + '$time' => (Time.now.to_f * 1000).to_i, }.merge(message) message = {'data' => data} diff --git a/lib/mixpanel-ruby/people.rb b/lib/mixpanel-ruby/people.rb index 8cf57ee..8bcbf34 100644 --- a/lib/mixpanel-ruby/people.rb +++ b/lib/mixpanel-ruby/people.rb @@ -223,7 +223,7 @@ def delete_user(distinct_id, optional_params={}) def update(message) data = { '$token' => @token, - '$time' => Time.now.to_f, + '$time' => (Time.now.to_f * 1000).to_i, }.merge(message) message = {'data' => data} diff --git a/lib/mixpanel-ruby/tracker.rb b/lib/mixpanel-ruby/tracker.rb index 5327f71..123fa8b 100644 --- a/lib/mixpanel-ruby/tracker.rb +++ b/lib/mixpanel-ruby/tracker.rb @@ -165,7 +165,7 @@ def generate_tracking_url(distinct_id, event, properties={}, endpoint=nil) properties = { 'distinct_id' => distinct_id, 'token' => @token, - 'time' => Time.now.to_f, + 'time' => (Time.now.to_f * 1000).to_i, 'mp_lib' => 'ruby', '$lib_version' => Mixpanel::VERSION, }.merge(properties) diff --git a/mixpanel-ruby.gemspec b/mixpanel-ruby.gemspec index d1c61e2..0bc5c16 100644 --- a/mixpanel-ruby.gemspec +++ b/mixpanel-ruby.gemspec @@ -12,10 +12,12 @@ spec = Gem::Specification.new do |spec| spec.homepage = 'https://mixpanel.com/help/reference/ruby' spec.license = 'Apache License 2.0' - spec.required_ruby_version = '>= 2.0.0' + spec.required_ruby_version = '>= 2.3.0' + spec.add_runtime_dependency 'mutex_m' + spec.add_runtime_dependency "base64" spec.add_development_dependency 'activesupport', '~> 4.0' - spec.add_development_dependency 'rake', '~> 0' + spec.add_development_dependency 'rake', '~> 13' spec.add_development_dependency 'rspec', '~> 3.0' spec.add_development_dependency 'webmock', '~> 1.18' end diff --git a/spec/mixpanel-ruby/events_spec.rb b/spec/mixpanel-ruby/events_spec.rb index 6d9bc20..57f6ade 100644 --- a/spec/mixpanel-ruby/events_spec.rb +++ b/spec/mixpanel-ruby/events_spec.rb @@ -27,7 +27,7 @@ 'mp_lib' => 'ruby', '$lib_version' => Mixpanel::VERSION, 'token' => 'TEST TOKEN', - 'time' => @time_now.to_i + 'time' => @time_now.to_i * 1000 } }]]) end @@ -46,7 +46,7 @@ 'mp_lib' => 'ruby', '$lib_version' => Mixpanel::VERSION, 'token' => 'TEST TOKEN', - 'time' => @time_now.to_i + 'time' => @time_now.to_i * 1000 } } } ]]) diff --git a/spec/mixpanel-ruby/groups_spec.rb b/spec/mixpanel-ruby/groups_spec.rb index 063c4d8..877f42a 100644 --- a/spec/mixpanel-ruby/groups_spec.rb +++ b/spec/mixpanel-ruby/groups_spec.rb @@ -23,7 +23,7 @@ '$token' => 'TEST TOKEN', '$group_key' => 'TEST GROUP KEY', '$group_id' => 'TEST GROUP ID', - '$time' => @time_now.to_i * 1000, + '$time' => (@time_now.to_f * 1000).to_i, '$set' => { '$groupname' => 'Mixpanel', '$grouprevenue' => 200 @@ -39,7 +39,7 @@ '$token' => 'TEST TOKEN', '$group_key' => 'TEST GROUP KEY', '$group_id' => 'TEST GROUP ID', - '$time' => @time_now.to_i * 1000, + '$time' => (@time_now.to_f * 1000).to_i, '$set' => { 'created_at' => '2013-01-02T03:04:05' } @@ -54,7 +54,7 @@ '$token' => 'TEST TOKEN', '$group_key' => 'TEST GROUP KEY', '$group_id' => 'TEST GROUP ID', - '$time' => @time_now.to_i * 1000, + '$time' => (@time_now.to_f * 1000).to_i, '$set' => { 'created_at' => '2013-01-02T02:04:05' } @@ -70,7 +70,7 @@ '$token' => 'TEST TOKEN', '$group_key' => 'TEST GROUP KEY', '$group_id' => 'TEST GROUP ID', - '$time' => @time_now.to_i * 1000, + '$time' => (@time_now.to_f * 1000).to_i, '$set' => { 'created_at' => '2013-01-02T02:04:05' } @@ -86,7 +86,7 @@ '$token' => 'TEST TOKEN', '$group_key' => 'TEST GROUP KEY', '$group_id' => 'TEST GROUP ID', - '$time' => @time_now.to_i * 1000, + '$time' => (@time_now.to_f * 1000).to_i, '$set_once' => { '$groupname' => 'Mixpanel', '$grouprevenue' => 200 @@ -102,7 +102,7 @@ '$token' => 'TEST TOKEN', '$group_key' => 'TEST GROUP KEY', '$group_id' => 'TEST GROUP ID', - '$time' => @time_now.to_i * 1000, + '$time' => (@time_now.to_f * 1000).to_i, '$remove' => { 'Albums' => 'Diamond Dogs' } @@ -117,7 +117,7 @@ '$token' => 'TEST TOKEN', '$group_key' => 'TEST GROUP KEY', '$group_id' => 'TEST GROUP ID', - '$time' => @time_now.to_i * 1000, + '$time' => (@time_now.to_f * 1000).to_i, '$union' => { 'Albums' => ['Diamond Dogs'] } @@ -130,7 +130,7 @@ '$token' => 'TEST TOKEN', '$group_key' => 'TEST GROUP KEY', '$group_id' => 'TEST GROUP ID', - '$time' => @time_now.to_i * 1000, + '$time' => (@time_now.to_f * 1000).to_i, '$unset' => ['Albums'] }]]) end @@ -141,7 +141,7 @@ '$token' => 'TEST TOKEN', '$group_key' => 'TEST GROUP KEY', '$group_id' => 'TEST GROUP ID', - '$time' => @time_now.to_i * 1000, + '$time' => (@time_now.to_f * 1000).to_i, '$unset' => ['Albums', 'Vinyls'] }]]) end @@ -152,7 +152,7 @@ '$token' => 'TEST TOKEN', '$group_key' => 'TEST GROUP KEY', '$group_id' => 'TEST GROUP ID', - '$time' => @time_now.to_i * 1000, + '$time' => (@time_now.to_f * 1000).to_i, '$delete' => '' }]]) end diff --git a/spec/mixpanel-ruby/tracker_spec.rb b/spec/mixpanel-ruby/tracker_spec.rb index cf32bd3..1fe54eb 100644 --- a/spec/mixpanel-ruby/tracker_spec.rb +++ b/spec/mixpanel-ruby/tracker_spec.rb @@ -29,7 +29,7 @@ 'mp_lib' => 'ruby', '$lib_version' => Mixpanel::VERSION, 'token' => 'TEST TOKEN', - 'time' => @time_now.to_i + 'time' => @time_now.to_i * 1000 } expected_data = {'event' => event, 'properties' => properties.merge(default_properties)} @@ -61,7 +61,7 @@ with { |req| body = req.body } message_urlencoded = body[/^data=(.*?)(?:&|$)/, 1] - message_json = Base64.strict_decode64(URI.unescape(message_urlencoded)) + message_json = Base64.strict_decode64(CGI.unescape(message_urlencoded)) message = JSON.load(message_json) expect(message).to eq({ 'event' => 'TEST EVENT', @@ -71,7 +71,7 @@ 'mp_lib' => 'ruby', '$lib_version' => Mixpanel::VERSION, 'token' => 'TEST TOKEN', - 'time' => @time_now.to_i + 'time' => @time_now.to_i * 1000 } }) end @@ -94,7 +94,7 @@ 'mp_lib' => 'ruby', '$lib_version' => Mixpanel::VERSION, 'token' => 'TEST TOKEN', - 'time' => @time_now.to_i + 'time' => @time_now.to_i * 1000 } } ], @@ -106,7 +106,7 @@ 'mp_lib' => 'ruby', '$lib_version' => Mixpanel::VERSION, 'token' => 'TEST TOKEN', - 'time' => @time_now.to_i + 'time' => @time_now.to_i * 1000 } }, 'api_key' => 'API_KEY',