Commit 6c2064574daa1e273bcd3aeea2b27f864d910f24
1 parent
170914b6
Exists in
master
and in
17 other branches
Ruby 1.8 compatible
Showing
5 changed files
with
23 additions
and
18 deletions
Show diff stats
.travis.yml
Gemfile
@@ -6,6 +6,6 @@ gemspec | @@ -6,6 +6,6 @@ gemspec | ||
6 | # gem "activerecord", github: "rails/rails" | 6 | # gem "activerecord", github: "rails/rails" |
7 | 7 | ||
8 | platform :jruby do | 8 | platform :jruby do |
9 | - gem "activerecord-jdbcpostgresql-adapter", github: "jruby/activerecord-jdbc-adapter" | ||
10 | - gem "activerecord-jdbcmysql-adapter", github: "jruby/activerecord-jdbc-adapter" | 9 | + gem "activerecord-jdbcpostgresql-adapter", :github => "jruby/activerecord-jdbc-adapter" |
10 | + gem "activerecord-jdbcmysql-adapter", :github => "jruby/activerecord-jdbc-adapter" | ||
11 | end | 11 | end |
README.md
@@ -125,10 +125,10 @@ Use the master version of your JDBC adapter. You will get incorrect results for | @@ -125,10 +125,10 @@ Use the master version of your JDBC adapter. You will get incorrect results for | ||
125 | 125 | ||
126 | ```sh | 126 | ```sh |
127 | # postgresql | 127 | # postgresql |
128 | -gem "activerecord-jdbcpostgresql-adapter", github: "jruby/activerecord-jdbc-adapter" | 128 | +gem "activerecord-jdbcpostgresql-adapter", :github => "jruby/activerecord-jdbc-adapter" |
129 | 129 | ||
130 | # mysql | 130 | # mysql |
131 | -gem "activerecord-jdbcmysql-adapter", github: "jruby/activerecord-jdbc-adapter" | 131 | +gem "activerecord-jdbcmysql-adapter", :github => "jruby/activerecord-jdbc-adapter" |
132 | ``` | 132 | ``` |
133 | 133 | ||
134 | ## Complete list | 134 | ## Complete list |
lib/groupdate.rb
@@ -30,9 +30,9 @@ module Groupdate | @@ -30,9 +30,9 @@ module Groupdate | ||
30 | # http://www.postgresql.org/docs/9.1/static/functions-datetime.html | 30 | # http://www.postgresql.org/docs/9.1/static/functions-datetime.html |
31 | fields = %w(second minute hour day week month year day_of_week hour_of_day) | 31 | fields = %w(second minute hour day week month year day_of_week hour_of_day) |
32 | fields.each do |field| | 32 | fields.each do |field| |
33 | - self.scope :"group_by_#{field}", lambda {|unsafe_column, time_zone = Time.zone| | ||
34 | - column = connection.quote_column_name(unsafe_column) | ||
35 | - time_zone ||= "Etc/UTC" | 33 | + self.scope :"group_by_#{field}", lambda {|*args| |
34 | + column = connection.quote_column_name(args[0]) | ||
35 | + time_zone = args[1] || Time.zone || "Etc/UTC" | ||
36 | if time_zone.is_a?(ActiveSupport::TimeZone) or time_zone = ActiveSupport::TimeZone[time_zone] | 36 | if time_zone.is_a?(ActiveSupport::TimeZone) or time_zone = ActiveSupport::TimeZone[time_zone] |
37 | time_zone = time_zone.tzinfo.name | 37 | time_zone = time_zone.tzinfo.name |
38 | else | 38 | else |
test/groupdate_test.rb
@@ -16,7 +16,7 @@ end | @@ -16,7 +16,7 @@ end | ||
16 | 16 | ||
17 | # migrations | 17 | # migrations |
18 | %w(postgresql mysql2).each do |adapter| | 18 | %w(postgresql mysql2).each do |adapter| |
19 | - ActiveRecord::Base.establish_connection adapter: adapter, database: "groupdate_test", username: adapter == "mysql2" ? "root" : nil | 19 | + ActiveRecord::Base.establish_connection :adapter => adapter, :database => "groupdate_test", :username => adapter == "mysql2" ? "root" : nil |
20 | 20 | ||
21 | unless ActiveRecord::Base.connection.table_exists? "users" | 21 | unless ActiveRecord::Base.connection.table_exists? "users" |
22 | ActiveRecord::Migration.create_table :users do |t| | 22 | ActiveRecord::Migration.create_table :users do |t| |
@@ -32,22 +32,22 @@ describe Groupdate do | @@ -32,22 +32,22 @@ describe Groupdate do | ||
32 | describe adapter do | 32 | describe adapter do |
33 | 33 | ||
34 | before do | 34 | before do |
35 | - User.establish_connection adapter: adapter, database: "groupdate_test", username: adapter == "mysql2" ? "root" : nil | 35 | + User.establish_connection :adapter => adapter, :database => "groupdate_test", :username => adapter == "mysql2" ? "root" : nil |
36 | User.delete_all | 36 | User.delete_all |
37 | end | 37 | end |
38 | 38 | ||
39 | it "works!" do | 39 | it "works!" do |
40 | [ | 40 | [ |
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")} | 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 | ].each{|u| User.create!(u) } | 44 | ].each{|u| User.create!(u) } |
45 | 45 | ||
46 | assert_equal( | 46 | assert_equal( |
47 | - { | 47 | + ordered_hash({ |
48 | time_key("2013-04-01 00:00:00 UTC") => 1, | 48 | time_key("2013-04-01 00:00:00 UTC") => 1, |
49 | time_key("2013-04-02 00:00:00 UTC") => 1 | 49 | time_key("2013-04-02 00:00:00 UTC") => 1 |
50 | - }, | 50 | + }), |
51 | User.where("score > 1").group_by_day(:created_at).count | 51 | User.where("score > 1").group_by_day(:created_at).count |
52 | ) | 52 | ) |
53 | end | 53 | end |
@@ -124,7 +124,7 @@ describe Groupdate do | @@ -124,7 +124,7 @@ describe Groupdate do | ||
124 | 124 | ||
125 | def assert_group(method, created_at, key, time_zone = nil) | 125 | def assert_group(method, created_at, key, time_zone = nil) |
126 | create_user created_at | 126 | create_user created_at |
127 | - assert_equal({time_key(key) => 1}, User.send(:"group_by_#{method}", :created_at, time_zone).count) | 127 | + assert_equal(ordered_hash({time_key(key) => 1}), User.send(:"group_by_#{method}", :created_at, time_zone).count) |
128 | end | 128 | end |
129 | 129 | ||
130 | def assert_group_tz(method, created_at, key) | 130 | def assert_group_tz(method, created_at, key) |
@@ -133,7 +133,7 @@ describe Groupdate do | @@ -133,7 +133,7 @@ describe Groupdate do | ||
133 | 133 | ||
134 | def assert_group_number(method, created_at, key, time_zone = nil) | 134 | def assert_group_number(method, created_at, key, time_zone = nil) |
135 | create_user created_at | 135 | create_user created_at |
136 | - assert_equal({number_key(key) => 1}, User.send(:"group_by_#{method}", :created_at, time_zone).count) | 136 | + assert_equal(ordered_hash({number_key(key) => 1}), User.send(:"group_by_#{method}", :created_at, time_zone).count) |
137 | end | 137 | end |
138 | 138 | ||
139 | def assert_group_number_tz(method, created_at, key) | 139 | def assert_group_number_tz(method, created_at, key) |
@@ -144,7 +144,7 @@ describe Groupdate do | @@ -144,7 +144,7 @@ describe Groupdate do | ||
144 | if RUBY_PLATFORM == "java" | 144 | if RUBY_PLATFORM == "java" |
145 | 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/, "") | 145 | 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 | else | 146 | else |
147 | - User.connection.adapter_name == "PostgreSQL" && ActiveRecord::VERSION::MAJOR == 3 ? Time.parse(key).strftime("%Y-%m-%d %H:%M:%S%z")[0..-3] : Time.parse(key) | 147 | + User.connection.adapter_name == "PostgreSQL" && ActiveRecord::VERSION::MAJOR == 3 ? Time.parse(key).strftime("%Y-%m-%d %H:%M:%S+00") : Time.parse(key) |
148 | end | 148 | end |
149 | end | 149 | end |
150 | 150 | ||
@@ -156,8 +156,12 @@ describe Groupdate do | @@ -156,8 +156,12 @@ describe Groupdate do | ||
156 | end | 156 | end |
157 | end | 157 | end |
158 | 158 | ||
159 | + def ordered_hash(hash) | ||
160 | + RUBY_VERSION =~ /1\.8/ ? hash.inject(ActiveSupport::OrderedHash.new){|h, (k, v)| h[k] = v; h } : hash | ||
161 | + end | ||
162 | + | ||
159 | def create_user(created_at) | 163 | def create_user(created_at) |
160 | - User.create!(name: "Andrew", score: 1, created_at: Time.parse(created_at)) | 164 | + User.create!(:name => "Andrew", :score => 1, :created_at => Time.parse(created_at)) |
161 | end | 165 | end |
162 | 166 | ||
163 | end | 167 | end |