groupdate 0.1.3 → 0.1.4
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 +7 -0
- data/.travis.yml +1 -0
- data/Gemfile +2 -2
- data/README.md +3 -3
- data/lib/groupdate/version.rb +1 -1
- data/lib/groupdate.rb +3 -3
- data/test/groupdate_test.rb +19 -11
- metadata +17 -32
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 96aed6d659f986f853f50f45bc93663f884235ac
|
4
|
+
data.tar.gz: b33a101116de8a25f3fde64ab7824aeb5e09d72b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a7756158b511af490af7f6c6c6f516674161c5e2f5957380d4d6c7eb30cf733f25b4d7acdd203d9f835c7a98b9126ec91c3027910f71717eeb455ad993c37200
|
7
|
+
data.tar.gz: 3c1998ad9aec8d3a93001e86ad6d4e54d43547cc32689a32a247566b3bb010b9792799077a5c9485fbfdb906cf2f830d080d3c05856a432988d5d9764c75637b
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
@@ -6,6 +6,6 @@ gemspec
|
|
6
6
|
# gem "activerecord", github: "rails/rails"
|
7
7
|
|
8
8
|
platform :jruby do
|
9
|
-
gem "activerecord-jdbcpostgresql-adapter", github
|
10
|
-
gem "activerecord-jdbcmysql-adapter", github
|
9
|
+
gem "activerecord-jdbcpostgresql-adapter", :github => "jruby/activerecord-jdbc-adapter"
|
10
|
+
gem "activerecord-jdbcmysql-adapter", :github => "jruby/activerecord-jdbc-adapter"
|
11
11
|
end
|
data/README.md
CHANGED
@@ -123,12 +123,12 @@ mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql
|
|
123
123
|
|
124
124
|
Use the master version of your JDBC adapter. You will get incorrect results for versions before [this commit](https://github.com/jruby/activerecord-jdbc-adapter/commit/c1cdb7cec8d3f06fc54995e8d872d830bd0a4d91).
|
125
125
|
|
126
|
-
```
|
126
|
+
```ruby
|
127
127
|
# postgresql
|
128
|
-
gem "activerecord-jdbcpostgresql-adapter", github
|
128
|
+
gem "activerecord-jdbcpostgresql-adapter", :github => "jruby/activerecord-jdbc-adapter"
|
129
129
|
|
130
130
|
# mysql
|
131
|
-
gem "activerecord-jdbcmysql-adapter", github
|
131
|
+
gem "activerecord-jdbcmysql-adapter", :github => "jruby/activerecord-jdbc-adapter"
|
132
132
|
```
|
133
133
|
|
134
134
|
## Complete list
|
data/lib/groupdate/version.rb
CHANGED
data/lib/groupdate.rb
CHANGED
@@ -30,9 +30,9 @@ module Groupdate
|
|
30
30
|
# http://www.postgresql.org/docs/9.1/static/functions-datetime.html
|
31
31
|
fields = %w(second minute hour day week month year day_of_week hour_of_day)
|
32
32
|
fields.each do |field|
|
33
|
-
self.scope :"group_by_#{field}", lambda {|
|
34
|
-
column = connection.
|
35
|
-
time_zone
|
33
|
+
self.scope :"group_by_#{field}", lambda {|*args|
|
34
|
+
column = connection.quote_table_name(args[0])
|
35
|
+
time_zone = args[1] || Time.zone || "Etc/UTC"
|
36
36
|
if time_zone.is_a?(ActiveSupport::TimeZone) or time_zone = ActiveSupport::TimeZone[time_zone]
|
37
37
|
time_zone = time_zone.tzinfo.name
|
38
38
|
else
|
data/test/groupdate_test.rb
CHANGED
@@ -16,7 +16,7 @@ end
|
|
16
16
|
|
17
17
|
# migrations
|
18
18
|
%w(postgresql mysql2).each do |adapter|
|
19
|
-
ActiveRecord::Base.establish_connection adapter
|
19
|
+
ActiveRecord::Base.establish_connection :adapter => adapter, :database => "groupdate_test", :username => adapter == "mysql2" ? "root" : nil
|
20
20
|
|
21
21
|
unless ActiveRecord::Base.connection.table_exists? "users"
|
22
22
|
ActiveRecord::Migration.create_table :users do |t|
|
@@ -32,22 +32,22 @@ describe Groupdate do
|
|
32
32
|
describe adapter do
|
33
33
|
|
34
34
|
before do
|
35
|
-
User.establish_connection adapter
|
35
|
+
User.establish_connection :adapter => adapter, :database => "groupdate_test", :username => adapter == "mysql2" ? "root" : nil
|
36
36
|
User.delete_all
|
37
37
|
end
|
38
38
|
|
39
39
|
it "works!" do
|
40
40
|
[
|
41
|
-
{name
|
42
|
-
{name
|
43
|
-
{name
|
41
|
+
{:name => "Andrew", :score => 1, :created_at => Time.parse("2013-04-01 00:00:00 UTC")},
|
42
|
+
{:name => "Jordan", :score => 2, :created_at => Time.parse("2013-04-01 00:00:00 UTC")},
|
43
|
+
{:name => "Nick", :score => 3, :created_at => Time.parse("2013-04-02 00:00:00 UTC")}
|
44
44
|
].each{|u| User.create!(u) }
|
45
45
|
|
46
46
|
assert_equal(
|
47
|
-
{
|
47
|
+
ordered_hash({
|
48
48
|
time_key("2013-04-01 00:00:00 UTC") => 1,
|
49
49
|
time_key("2013-04-02 00:00:00 UTC") => 1
|
50
|
-
},
|
50
|
+
}),
|
51
51
|
User.where("score > 1").group_by_day(:created_at).count
|
52
52
|
)
|
53
53
|
end
|
@@ -58,6 +58,10 @@ describe Groupdate do
|
|
58
58
|
assert_equal({}, User.group_by_hour_of_day(:created_at).order("hour_of_day desc").count)
|
59
59
|
end
|
60
60
|
|
61
|
+
it "allows for table name" do
|
62
|
+
assert_equal({}, User.group_by_day("users.created_at").count)
|
63
|
+
end
|
64
|
+
|
61
65
|
it "group_by_second" do
|
62
66
|
assert_group :second, "2013-04-01 00:00:01 UTC", "2013-04-01 00:00:01 UTC"
|
63
67
|
end
|
@@ -124,7 +128,7 @@ describe Groupdate do
|
|
124
128
|
|
125
129
|
def assert_group(method, created_at, key, time_zone = nil)
|
126
130
|
create_user created_at
|
127
|
-
assert_equal({time_key(key) => 1}, User.send(:"group_by_#{method}", :created_at, time_zone).count)
|
131
|
+
assert_equal(ordered_hash({time_key(key) => 1}), User.send(:"group_by_#{method}", :created_at, time_zone).count)
|
128
132
|
end
|
129
133
|
|
130
134
|
def assert_group_tz(method, created_at, key)
|
@@ -133,7 +137,7 @@ describe Groupdate do
|
|
133
137
|
|
134
138
|
def assert_group_number(method, created_at, key, time_zone = nil)
|
135
139
|
create_user created_at
|
136
|
-
assert_equal({number_key(key) => 1}, User.send(:"group_by_#{method}", :created_at, time_zone).count)
|
140
|
+
assert_equal(ordered_hash({number_key(key) => 1}), User.send(:"group_by_#{method}", :created_at, time_zone).count)
|
137
141
|
end
|
138
142
|
|
139
143
|
def assert_group_number_tz(method, created_at, key)
|
@@ -144,7 +148,7 @@ describe Groupdate do
|
|
144
148
|
if RUBY_PLATFORM == "java"
|
145
149
|
User.connection.adapter_name == "PostgreSQL" ? Time.parse(key).strftime("%Y-%m-%d %H:%M:%S%z")[0..-3] : Time.parse(key).strftime("%Y-%m-%d %H:%M:%S").gsub(/ 00\:00\:00\z/, "")
|
146
150
|
else
|
147
|
-
User.connection.adapter_name == "PostgreSQL" && ActiveRecord::VERSION::MAJOR == 3 ? Time.parse(key).strftime("%Y-%m-%d %H:%M:%S
|
151
|
+
User.connection.adapter_name == "PostgreSQL" && ActiveRecord::VERSION::MAJOR == 3 ? Time.parse(key).strftime("%Y-%m-%d %H:%M:%S+00") : Time.parse(key)
|
148
152
|
end
|
149
153
|
end
|
150
154
|
|
@@ -156,8 +160,12 @@ describe Groupdate do
|
|
156
160
|
end
|
157
161
|
end
|
158
162
|
|
163
|
+
def ordered_hash(hash)
|
164
|
+
RUBY_VERSION =~ /1\.8/ ? hash.inject(ActiveSupport::OrderedHash.new){|h, (k, v)| h[k] = v; h } : hash
|
165
|
+
end
|
166
|
+
|
159
167
|
def create_user(created_at)
|
160
|
-
User.create!(name
|
168
|
+
User.create!(:name => "Andrew", :score => 1, :created_at => Time.parse(created_at))
|
161
169
|
end
|
162
170
|
|
163
171
|
end
|
metadata
CHANGED
@@ -1,36 +1,32 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: groupdate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.4
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Andrew Kane
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-05-01 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: activerecord
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: 3.0.0
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: 3.0.0
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: bundler
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - ~>
|
36
32
|
- !ruby/object:Gem::Version
|
@@ -38,7 +34,6 @@ dependencies:
|
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
38
|
- - ~>
|
44
39
|
- !ruby/object:Gem::Version
|
@@ -46,65 +41,57 @@ dependencies:
|
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rake
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: minitest
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - '>='
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - '>='
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: pg
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - '>='
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '0'
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - '>='
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '0'
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: mysql2
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
|
-
- -
|
87
|
+
- - '>='
|
100
88
|
- !ruby/object:Gem::Version
|
101
89
|
version: '0'
|
102
90
|
type: :development
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
|
-
- -
|
94
|
+
- - '>='
|
108
95
|
- !ruby/object:Gem::Version
|
109
96
|
version: '0'
|
110
97
|
description: The simplest way to group temporal data
|
@@ -127,28 +114,26 @@ files:
|
|
127
114
|
homepage: ''
|
128
115
|
licenses:
|
129
116
|
- MIT
|
117
|
+
metadata: {}
|
130
118
|
post_install_message:
|
131
119
|
rdoc_options: []
|
132
120
|
require_paths:
|
133
121
|
- lib
|
134
122
|
required_ruby_version: !ruby/object:Gem::Requirement
|
135
|
-
none: false
|
136
123
|
requirements:
|
137
|
-
- -
|
124
|
+
- - '>='
|
138
125
|
- !ruby/object:Gem::Version
|
139
126
|
version: '0'
|
140
127
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
141
|
-
none: false
|
142
128
|
requirements:
|
143
|
-
- -
|
129
|
+
- - '>='
|
144
130
|
- !ruby/object:Gem::Version
|
145
131
|
version: '0'
|
146
132
|
requirements: []
|
147
133
|
rubyforge_project:
|
148
|
-
rubygems_version:
|
134
|
+
rubygems_version: 2.0.0
|
149
135
|
signing_key:
|
150
|
-
specification_version:
|
136
|
+
specification_version: 4
|
151
137
|
summary: The simplest way to group temporal data
|
152
138
|
test_files:
|
153
139
|
- test/groupdate_test.rb
|
154
|
-
has_rdoc:
|