Commit 6c2064574daa1e273bcd3aeea2b27f864d910f24

Authored by Andrew Kane
1 parent 170914b6

Ruby 1.8 compatible

1 language: ruby 1 language: ruby
2 rvm: 2 rvm:
  3 + - 1.8.7
3 - 1.9.3 4 - 1.9.3
4 - 2.0.0 5 - 2.0.0
5 - jruby 6 - jruby
@@ -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
@@ -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