squeel 1.2.1 → 1.2.2

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: 3d3196690094de459e3e30179f68ce63ee2032e1
4
- data.tar.gz: 827a3e061d72e29cac9b615cbc3fb66c6c1e3462
3
+ metadata.gz: 5bd3775d68a256e08489cd4c9e80f050c9048e46
4
+ data.tar.gz: d0c2141316dff16b8a0235f6ab1c8dae5224b139
5
5
  SHA512:
6
- metadata.gz: fcf69aceda5afe483dfad4a91d40b21d8472b250c5a9eb719afaa6ccc1252d9488d176c0cc9d41d7a68e18a66f0dd5ff33dbcf4d77b59fd12c673e311cae680c
7
- data.tar.gz: 6a934cabda1f179d9a920cf4974fe8776b68d4a58578ee2c067ae4f1e7fac78a0989268920e711845d78367d66521c297e0cb8215e5d8fe85b336d275ae0d249
6
+ metadata.gz: ca682a51846f17fb4f74dd5f23a10e022841b6ac91d62f744f6378a64c59fce21519b0cabf55f9dccb0a58f0b25a74592a74073d8ac67a59eb14aad7ea30cd0a
7
+ data.tar.gz: 26ef0beb4f3b04d40b852cd20ed085279186aadb83718e6ebcda1e0a1b62ea5dfd63bd4f3af7f9f1365e5505893db717757409419f0fa0323bb714512c8f16a5
@@ -1,4 +1,17 @@
1
- ## 1.2.1 (Unreleased)
1
+ ## 1.2.3 (Unreleased)
2
+
3
+ ## 1.2.2 (2014-11-25)
4
+
5
+ * Size method can return the result correctly when grouping by the column of a
6
+ joined table. Fixes #286
7
+ * Properly add 'AND' to generated SQL when joining through a polymorphic model
8
+ with the source type configuration and default scopes above Rails 4. Fixes #270.
9
+ * Fix NoMethodError when calling unscope method above Rails 4. By @estum
10
+ * Fix error when including HABTM or HMT associations without eager loading.
11
+ Fixes #326.
12
+ * Ordering sequence is now correct when chaining multiple order methods. Fixes #276.
13
+
14
+ ## 1.2.1 (2014-07-18)
2
15
 
3
16
  * Run all specs against sqlite, mysql and postgresql!
4
17
  * Genereta table names correctly when joining through an association. Fixes#302.
data/Gemfile CHANGED
@@ -6,6 +6,10 @@ gem 'rake'
6
6
  rails = ENV['RAILS'] || 'master'
7
7
  arel = ENV['AREL'] || 'master'
8
8
 
9
+ if rails == 'master'
10
+ gem 'i18n', github: 'svenfuchs/i18n', branch: 'master'
11
+ end
12
+
9
13
  arel_opts = case arel
10
14
  when /\// # A path
11
15
  {:path => arel}
@@ -35,3 +39,5 @@ else
35
39
  gem 'activerecord'
36
40
  end
37
41
  end
42
+
43
+
data/README.md CHANGED
@@ -23,8 +23,6 @@ just a simple example -- Squeel's capable of a whole lot more. Keep reading.
23
23
  In your Gemfile:
24
24
 
25
25
  ```ruby
26
- # Make sure you are using the latest version of polyamorous
27
- gem "polyamorous", :git => "git://github.com/activerecord-hackery/polyamorous.git"
28
26
  gem "squeel" # Last officially released gem
29
27
  # gem "squeel", :git => "git://github.com/activerecord-hackery/squeel.git" # Track git repo
30
28
  ```
@@ -88,24 +86,6 @@ A Squeel keypath is essentially a more concise and readable alternative to a
88
86
  deeply nested hash. For instance, in standard Active Record, you might join several
89
87
  associations like this to perform a query:
90
88
 
91
- #### Rails 4+
92
-
93
- ```ruby
94
- Person.joins(:articles => {:comments => :person}).references(:all)
95
- # => SELECT "people".* FROM "people"
96
- # LEFT OUTER JOIN "articles" ON "articles"."person_id" = "people"."id"
97
- # LEFT OUTER JOIN "comments" ON "comments"."article_id" = "articles"."id"
98
- # LEFT OUTER JOIN "people" "people_comments" ON "people_comments"."id" = "comments"."person_id"
99
- ```
100
-
101
- With a keypath, this would look like:
102
-
103
- ```ruby
104
- Person.joins{articles.comments.person}.references(:all)
105
- ```
106
-
107
- #### Rails 3.x
108
-
109
89
  ```ruby
110
90
  Person.joins(:articles => {:comments => :person})
111
91
  # => SELECT "people".* FROM "people"
@@ -454,6 +434,43 @@ Seat.joins { [payment.outer, subquery.as('seat_order_items').on { id == seat_ord
454
434
  # ) seat_order_items ON "seats"."id" = "seat_order_items"."orderable_id"
455
435
  ```
456
436
 
437
+ ### Includes
438
+
439
+ Includes works similarly with joins, it uses outer join defaultly. In Rails 4,
440
+ you need to use `references` with `includes` together.
441
+
442
+ #### Rails 4+
443
+
444
+ ```ruby
445
+ Person.includes(:articles => {:comments => :person}).references(:all)
446
+ # => SELECT "people".* FROM "people"
447
+ # LEFT OUTER JOIN "articles" ON "articles"."person_id" = "people"."id"
448
+ # LEFT OUTER JOIN "comments" ON "comments"."article_id" = "articles"."id"
449
+ # LEFT OUTER JOIN "people" "people_comments" ON "people_comments"."id" = "comments"."person_id"
450
+ ```
451
+
452
+ With a keypath, this would look like:
453
+
454
+ ```ruby
455
+ Person.includes{articles.comments.person}.references(:all)
456
+ ```
457
+
458
+ #### Rails 3.x
459
+
460
+ ```ruby
461
+ Person.includes(:articles => {:comments => :person})
462
+ # => SELECT "people".* FROM "people"
463
+ # LEFT OUTER JOIN "articles" ON "articles"."person_id" = "people"."id"
464
+ # LEFT OUTER JOIN "comments" ON "comments"."article_id" = "articles"."id"
465
+ # LEFT OUTER JOIN "people" "people_comments" ON "people_comments"."id" = "comments"."person_id"
466
+ ```
467
+
468
+ With a keypath, this would look like:
469
+
470
+ ```ruby
471
+ Person.includes{articles.comments.person}
472
+ ```
473
+
457
474
  ### Functions
458
475
 
459
476
  You can call SQL functions just like you would call a method in Ruby...
@@ -117,6 +117,10 @@ module Squeel
117
117
  Hash[equalities.map { |where| [where.left.name, where.right] }]
118
118
  end
119
119
 
120
+ def execute_grouped_calculation(operation, column_name, distinct)
121
+ super
122
+ end
123
+
120
124
  end
121
125
  end
122
126
  end
@@ -32,6 +32,10 @@ module Squeel
32
32
  arel
33
33
  end
34
34
 
35
+ def execute_grouped_calculation(operation, column_name, distinct)
36
+ super
37
+ end
38
+
35
39
  end
36
40
  end
37
41
  end
@@ -41,7 +41,7 @@ module Squeel
41
41
  when Hash
42
42
  rel.stringify_keys.has_key?(target_value)
43
43
  when Squeel::Nodes::Predicate
44
- rel.expr.symbol.to_s == target_value
44
+ rel.expr.symbol.to_s == target_value if rel.expr.respond_to?(:symbol)
45
45
  end
46
46
  end
47
47
 
@@ -160,10 +160,12 @@ module Squeel
160
160
 
161
161
  # if a symbol is given we prepend the quoted table name
162
162
  args = args.map { |arg|
163
- arg.is_a?(Symbol) ? "#{quoted_table_name}.#{arg} ASC" : arg
163
+ arg.is_a?(Symbol) ?
164
+ Arel::Nodes::Ascending.new(klass.arel_table[arg]) :
165
+ arg
164
166
  }
165
167
 
166
- self.order_values = args + self.order_values
168
+ self.order_values += args
167
169
  self
168
170
  end
169
171
 
@@ -17,7 +17,7 @@ module Squeel
17
17
  if records.empty?
18
18
  []
19
19
  else
20
- Visitors::PreloadVisitor.new.accept(associations).each do |association|
20
+ Visitors::PreloadVisitor.new.accept(associations).flat_map do |association|
21
21
  preloaders_on(association, records, preload_scope)
22
22
  end
23
23
  end
@@ -53,7 +53,7 @@ module Squeel
53
53
  when Hash
54
54
  rel.stringify_keys.has_key?(target_value)
55
55
  when Squeel::Nodes::Predicate
56
- rel.expr.symbol.to_s == target_value
56
+ rel.expr.symbol.to_s == target_value if rel.expr.respond_to?(:symbol)
57
57
  end
58
58
  end
59
59
 
@@ -272,9 +272,7 @@ module Squeel
272
272
 
273
273
  groups = binaries.group_by {|b| [b.class, b.left]}
274
274
 
275
- groups.each do |_, bins|
276
- arel.where(Arel::Nodes::And.new(bins))
277
- end
275
+ arel.where(Arel::Nodes::And.new(groups.map{|_, bins| bins}.flatten)) if groups.any?
278
276
 
279
277
  (wheres - binaries).each do |where|
280
278
  where = Arel.sql(where) if String === where
@@ -436,6 +434,12 @@ module Squeel
436
434
  end
437
435
  end
438
436
 
437
+ def execute_grouped_calculation(operation, column_name, distinct)
438
+ arel = Arel::SelectManager.new(table.engine, table)
439
+ build_join_dependency(arel, joins_values.flatten) unless joins_values.empty?
440
+ self.group_values = group_visit(group_values.uniq.reject{|g| g.blank?}) unless group_values.empty?
441
+ super
442
+ end
439
443
  end
440
444
  end
441
445
  end
@@ -1,3 +1,3 @@
1
1
  module Squeel
2
- VERSION = '1.2.1'
2
+ VERSION = '1.2.2'
3
3
  end
@@ -1,6 +1,8 @@
1
+ require 'pry'
1
2
  require 'faker'
2
3
  require 'active_record'
3
4
  require 'active_support'
5
+ require 'active_support/core_ext/string'
4
6
 
5
7
  module ActiveRecord
6
8
  # Shamelessly swiped from the AR test code
@@ -339,6 +339,10 @@ module Squeel
339
339
  relation.debug_sql.should match /SELECT #{Q}notes#{Q}.* FROM #{Q}notes#{Q} LEFT OUTER JOIN #{Q}articles#{Q} ON #{Q}articles#{Q}.#{Q}id#{Q} = #{Q}notes#{Q}.#{Q}notable_id#{Q} AND #{Q}notes#{Q}.#{Q}notable_type#{Q} = 'Article' LEFT OUTER JOIN #{Q}people#{Q} ON #{Q}people#{Q}.#{Q}id#{Q} = #{Q}articles#{Q}.#{Q}person_id#{Q} LEFT OUTER JOIN #{Q}people#{Q} #{Q}children_people#{Q} ON #{Q}children_people#{Q}.#{Q}parent_id#{Q} = #{Q}people#{Q}.#{Q}id#{Q} WHERE #{Q}children_people#{Q}.#{Q}name#{Q} = 'Ernie'/
340
340
  end
341
341
 
342
+ it 'eager loads has_and_belongs_to_many' do
343
+ expect { Article.includes{tags}.to_a }.should_not raise_error
344
+ expect { Person.includes{authored_article_comments}.to_a }.should_not raise_error
345
+ end
342
346
  end
343
347
 
344
348
  describe '#preload' do
@@ -523,6 +527,27 @@ module Squeel
523
527
  block.to_sql.should eq standard.to_sql
524
528
  end
525
529
 
530
+ it 'returns size correctly using group' do
531
+ if activerecord_version_at_least('3.2.0')
532
+ relation = Article.joins{person}.group{person.id}
533
+ relation.size.should have(10).items
534
+ relation.size[Person.first.id].should == 3
535
+ end
536
+
537
+ relation = Article.joins{person}.group{"people.id"}
538
+ relation.size.should have(10).items
539
+ relation.size[Person.first.id].should == 3
540
+
541
+ relation = Article.joins{person}.group("people.id")
542
+ relation.size.should have(10).items
543
+ relation.size[Person.first.id].should == 3
544
+
545
+ relation = Article.group{person_id}
546
+ relation.size.should have(11).items
547
+ relation.size[Person.first.id].should == 3
548
+
549
+ end
550
+
526
551
  end
527
552
 
528
553
  describe '#where' do
@@ -661,12 +686,44 @@ module Squeel
661
686
 
662
687
  it 'uses Squeel and Arel at the same time' do
663
688
  relation = User.where{id.in([1,2,3]) & User.arel_table[:id].not_eq(nil) }
664
- relation.to_sql.should match /SELECT #{Q}users#{Q}.\* FROM #{Q}users#{Q}\s+WHERE \(\(#{Q}users#{Q}.#{Q}id#{Q} IN \(1, 2, 3\) AND #{Q}users#{Q}.#{Q}id#{Q} IS NOT NULL\)\)/
665
- relation = User.where{
666
- (id.in([1,2,3]) | User.arel_table[:id].eq(1)) & ((id == 1) | User.arel_table[:id].not_eq(nil)) }
667
- relation.to_sql.should match /SELECT #{Q}users#{Q}.\* FROM #{Q}users#{Q}\s+WHERE \(\(\(#{Q}users#{Q}.#{Q}id#{Q} IN \(1, 2, 3\) OR #{Q}users#{Q}.#{Q}id#{Q} = 1\) AND \(#{Q}users#{Q}.#{Q}id#{Q} = 1 OR #{Q}users#{Q}.#{Q}id#{Q} IS NOT NULL\)\)\)/
689
+
690
+ if activerecord_version_at_least '4.2.0'
691
+ relation.to_sql.should eq "
692
+ SELECT #{Q}users#{Q}.* FROM #{Q}users#{Q}
693
+ WHERE (#{Q}users#{Q}.#{Q}id#{Q} IN (1, 2, 3)
694
+ AND #{Q}users#{Q}.#{Q}id#{Q} IS NOT NULL)
695
+ ".squish
696
+ else
697
+ relation.to_sql.should match /SELECT #{Q}users#{Q}.\* FROM #{Q}users#{Q}\s+WHERE \(\(#{Q}users#{Q}.#{Q}id#{Q} IN \(1, 2, 3\) AND #{Q}users#{Q}.#{Q}id#{Q} IS NOT NULL\)\)/
698
+ end
699
+
700
+ relation = User.where {
701
+ (id.in([1,2,3]) | User.arel_table[:id].eq(1)) &
702
+ ((id == 1) | User.arel_table[:id].not_eq(nil)) }
703
+
704
+ if activerecord_version_at_least '4.2.0'
705
+ relation.to_sql.should eq "
706
+ SELECT #{Q}users#{Q}.*
707
+ FROM #{Q}users#{Q}
708
+ WHERE ((#{Q}users#{Q}.#{Q}id#{Q} IN (1, 2, 3) OR #{Q}users#{Q}.#{Q}id#{Q} = 1)
709
+ AND (#{Q}users#{Q}.#{Q}id#{Q} = 1 OR #{Q}users#{Q}.#{Q}id#{Q} IS NOT NULL))
710
+ ".squish
711
+ else
712
+ relation.to_sql.should match /SELECT #{Q}users#{Q}.\* FROM #{Q}users#{Q}\s+WHERE \(\(\(#{Q}users#{Q}.#{Q}id#{Q} IN \(1, 2, 3\) OR #{Q}users#{Q}.#{Q}id#{Q} = 1\) AND \(#{Q}users#{Q}.#{Q}id#{Q} = 1 OR #{Q}users#{Q}.#{Q}id#{Q} IS NOT NULL\)\)\)/
713
+ end
668
714
  end
669
715
 
716
+ it "large than & less than" do
717
+ if activerecord_version_at_least '4.1.0'
718
+ relation = User.where { created_at <= 1.hours.ago }
719
+ expect { relation.to_sql }.not_to raise_error
720
+
721
+ relation = User.where { created_at < 1.hours.ago }
722
+ expect { relation.to_sql }.not_to raise_error
723
+ else
724
+ pending 'Unsupported under Rails 4.1'
725
+ end
726
+ end
670
727
  end
671
728
 
672
729
  describe '#joins' do
@@ -718,7 +775,19 @@ module Squeel
718
775
  end
719
776
 
720
777
  it 'validates polymorphic relationship with source type' do
721
- if activerecord_version_at_least '3.2.7'
778
+ if activerecord_version_at_least('4.0.0')
779
+ relation = Group.joins{users}
780
+
781
+ if MYSQL_ENV
782
+ relation.to_sql.should match /#{Q}memberships#{Q}.#{Q}active#{Q} = 1/
783
+ else
784
+ relation.to_sql.should match /#{Q}memberships#{Q}.#{Q}active#{Q} = 't'/
785
+ end
786
+
787
+ relation.to_sql.should match /#{Q}memberships#{Q}.#{Q}member_type#{Q} = 'User'/
788
+ relation.to_sql.should match /INNER JOIN #{Q}users#{Q} ON #{Q}users#{Q}.#{Q}id#{Q} = #{Q}memberships#{Q}.#{Q}member_id#{Q}/
789
+ relation.to_sql.should match /INNER JOIN #{Q}memberships#{Q} ON #{Q}memberships#{Q}.#{Q}group_id#{Q} = #{Q}groups#{Q}.#{Q}id#{Q}/
790
+ elsif activerecord_version_at_least('3.2.7')
722
791
  Group.first.users.to_sql.should match /#{Q}memberships#{Q}.#{Q}member_type#{Q} = 'User'/
723
792
  else
724
793
  Group.first.users.size.should eq 1
@@ -746,14 +815,29 @@ module Squeel
746
815
  if MYSQL_ENV
747
816
  User.first.groups.to_sql.should match /#{Q}memberships#{Q}.#{Q}active#{Q} = 1/
748
817
  else
749
- puts User.first.groups.to_sql
750
818
  User.first.groups.to_sql.should match /#{Q}memberships#{Q}.#{Q}active#{Q} = 't'/
751
819
  end
752
-
753
820
  else
754
821
  pending "Rails 3.0.x doesn't support to_sql in an association."
755
822
  end
756
823
  end
824
+
825
+ it 'default scopes with multiple wheres' do
826
+ if activerecord_version_at_least('4.0.0')
827
+ relation = Dept.joins { people_named_bill_with_low_salary }
828
+
829
+ relation.to_sql.should eq "
830
+ SELECT #{Q}depts#{Q}.*
831
+ FROM #{Q}depts#{Q}
832
+ INNER JOIN #{Q}people#{Q} ON
833
+ #{Q}people#{Q}.#{Q}dept_id#{Q} = #{Q}depts#{Q}.#{Q}id#{Q} AND
834
+ #{Q}people#{Q}.#{Q}name#{Q} = 'Bill' AND
835
+ #{Q}people#{Q}.#{Q}salary#{Q} < 20000
836
+ ".squish
837
+ else
838
+ pending "Rails 3.x doesn't support default scope in joins"
839
+ end
840
+ end
757
841
  end
758
842
 
759
843
  describe '#having' do
@@ -806,6 +890,11 @@ module Squeel
806
890
  relation.to_sql.should match /ORDER BY #{Q}people#{Q}.#{Q}id#{Q} ASC/
807
891
  end
808
892
 
893
+ it 'orders chain in correct sequence' do
894
+ relation = Article.order {id.asc}.order {title.desc}
895
+ relation.to_sql.should match /#{Q}articles#{Q}.#{Q}id#{Q} ASC, #{Q}articles#{Q}.#{Q}title#{Q} DESC/
896
+ end
897
+
809
898
  end
810
899
 
811
900
  describe '#reorder' do
@@ -966,6 +1055,24 @@ module Squeel
966
1055
 
967
1056
  end
968
1057
 
1058
+ describe '#where_unscoping' do
1059
+
1060
+ it "doesn't ruin everything when predicate expression in where_values doesn't respond to :symbol method" do
1061
+ unless activerecord_version_at_least '4.2.0'
1062
+ if activerecord_version_at_least '4.0.0'
1063
+ order_items = OrderItem.where{quantity == 0}.where{unit_price / 2 == 5}
1064
+ expect { order_items.unscope(where: :quantity) }.should_not raise_error
1065
+ order_items.to_sql.should_not match /#{Q}order_items#{Q}.#{Q}quantity#{Q} = 0/
1066
+ else
1067
+ pending 'Unsupported on AR versions < 4.0.0'
1068
+ end
1069
+ else
1070
+ pending 'Not required in AR versions > 4.2.0'
1071
+ end
1072
+ end
1073
+
1074
+ end
1075
+
969
1076
  describe '#as' do
970
1077
 
971
1078
  it 'aliases the relation in an As node' do
@@ -1,4 +1,5 @@
1
1
  class Person < ActiveRecord::Base
2
+ belongs_to :dept
2
3
  belongs_to :parent, :class_name => 'Person', :foreign_key => :parent_id
3
4
  has_many :children, :class_name => 'Person', :foreign_key => :parent_id
4
5
  has_many :articles
@@ -58,6 +59,19 @@ class PersonNamedBill < ActiveRecord::Base
58
59
  scope :with_salary_equal_to, lambda { |value| where{abs(salary) == value} }
59
60
  end
60
61
 
62
+ class Dept < ActiveRecord::Base
63
+ has_many :people_named_bill_with_low_salary,
64
+ class_name: 'PersonNamedBillAndLowSalary', foreign_key: 'dept_id'
65
+ end
66
+
67
+ class PersonNamedBillAndLowSalary < Person
68
+ if ActiveRecord::VERSION::MAJOR > 3 || ActiveRecord::VERSION::MINOR > 0
69
+ default_scope { where { name == 'Bill' }.where { salary < 20000 } }
70
+ else # 3.0 doesn't support callables for default_scope
71
+ default_scope where { name == 'Bill' }.where { salary < 20000 }
72
+ end
73
+ end
74
+
61
75
  class Message < ActiveRecord::Base
62
76
  belongs_to :author, :class_name => 'Person'
63
77
  belongs_to :recipient, :class_name => 'Person'
@@ -145,9 +159,14 @@ end
145
159
 
146
160
  class Models
147
161
  def self.make
162
+ dept = Dept.create(name: Faker::Lorem.name)
163
+
148
164
  10.times do |i|
149
165
  # 10 people total, salary gt 30000
150
- person = Person.create(name: Faker::Name.name, salary: 30000 + (i + 1) * 1000)
166
+ person = Person.create(name: Faker::Name.name,
167
+ salary: 30000 + (i + 1) * 1000,
168
+ dept: dept)
169
+
151
170
  2.times do
152
171
  # 20 unidentified object total, 2 per person
153
172
  person.unidentified_objects.create(name: Faker::Lorem.words(1).first)
@@ -79,10 +79,15 @@ silence_stream(STDOUT) do
79
79
  ActiveRecord::Migration.verbose = false
80
80
 
81
81
  ActiveRecord::Schema.define do
82
+ create_table :depts, :force => true do |t|
83
+ t.string :name
84
+ end
85
+
82
86
  create_table :people, :force => true do |t|
83
87
  t.integer :parent_id
84
88
  t.string :name
85
89
  t.integer :salary
90
+ t.integer :dept_id
86
91
  end
87
92
 
88
93
  create_table :messages, :force => true do |t|
@@ -6,8 +6,8 @@ Gem::Specification.new do |s|
6
6
  s.name = "squeel"
7
7
  s.version = Squeel::VERSION
8
8
  s.platform = Gem::Platform::RUBY
9
- s.authors = ["Ernie Miller"]
10
- s.email = ["ernie@erniemiller.org"]
9
+ s.authors = ["Ernie Miller", "Xiang Li"]
10
+ s.email = ["ernie@erniemiller.org", "bigxiang@gmail.com"]
11
11
  s.homepage = "https://github.com/ernie/squeel"
12
12
  s.summary = %q{Active Record, improved.}
13
13
  s.description = %q{
@@ -27,6 +27,8 @@ Gem::Specification.new do |s|
27
27
  s.add_development_dependency 'mysql', '~> 2.9.1'
28
28
  s.add_development_dependency 'mysql2', '~> 0.3.16'
29
29
  s.add_development_dependency 'pg', '~> 0.17.1'
30
+ s.add_development_dependency 'git_pretty_accept', '~> 0.4.0'
31
+ s.add_development_dependency 'pry'
30
32
 
31
33
  s.files = `git ls-files`.split("\n")
32
34
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: squeel
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ernie Miller
8
+ - Xiang Li
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-07-18 00:00:00.000000000 Z
12
+ date: 2014-11-25 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: activerecord
@@ -136,12 +137,41 @@ dependencies:
136
137
  - - "~>"
137
138
  - !ruby/object:Gem::Version
138
139
  version: 0.17.1
140
+ - !ruby/object:Gem::Dependency
141
+ name: git_pretty_accept
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - "~>"
145
+ - !ruby/object:Gem::Version
146
+ version: 0.4.0
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - "~>"
152
+ - !ruby/object:Gem::Version
153
+ version: 0.4.0
154
+ - !ruby/object:Gem::Dependency
155
+ name: pry
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
161
+ type: :development
162
+ prerelease: false
163
+ version_requirements: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
139
168
  description: "\n Squeel unlocks the power of Arel in your Rails application with\n
140
169
  \ a handy block-based syntax. You can write subqueries, access named\n functions
141
170
  provided by your RDBMS, and more, all without writing\n SQL strings. Supporting
142
171
  Rails 3 and 4.\n "
143
172
  email:
144
173
  - ernie@erniemiller.org
174
+ - bigxiang@gmail.com
145
175
  executables: []
146
176
  extensions: []
147
177
  extra_rdoc_files: []
@@ -292,8 +322,42 @@ required_rubygems_version: !ruby/object:Gem::Requirement
292
322
  version: '0'
293
323
  requirements: []
294
324
  rubyforge_project: squeel
295
- rubygems_version: 2.2.2
325
+ rubygems_version: 2.4.3
296
326
  signing_key:
297
327
  specification_version: 4
298
328
  summary: Active Record, improved.
299
- test_files: []
329
+ test_files:
330
+ - spec/config.travis.yml
331
+ - spec/config.yml
332
+ - spec/console.rb
333
+ - spec/core_ext/symbol_spec.rb
334
+ - spec/helpers/squeel_helper.rb
335
+ - spec/spec_helper.rb
336
+ - spec/squeel/adapters/active_record/base_extensions_spec.rb
337
+ - spec/squeel/adapters/active_record/context_spec.rb
338
+ - spec/squeel/adapters/active_record/join_dependency_extensions_spec.rb
339
+ - spec/squeel/adapters/active_record/relation_extensions_spec.rb
340
+ - spec/squeel/core_ext/symbol_spec.rb
341
+ - spec/squeel/dsl_spec.rb
342
+ - spec/squeel/nodes/as_spec.rb
343
+ - spec/squeel/nodes/function_spec.rb
344
+ - spec/squeel/nodes/grouping_spec.rb
345
+ - spec/squeel/nodes/join_spec.rb
346
+ - spec/squeel/nodes/key_path_spec.rb
347
+ - spec/squeel/nodes/literal_spec.rb
348
+ - spec/squeel/nodes/operation_spec.rb
349
+ - spec/squeel/nodes/operators_spec.rb
350
+ - spec/squeel/nodes/order_spec.rb
351
+ - spec/squeel/nodes/predicate_operators_spec.rb
352
+ - spec/squeel/nodes/predicate_spec.rb
353
+ - spec/squeel/nodes/sifter_spec.rb
354
+ - spec/squeel/nodes/stub_spec.rb
355
+ - spec/squeel/nodes/subquery_join_spec.rb
356
+ - spec/squeel/visitors/from_visitor_spec.rb
357
+ - spec/squeel/visitors/order_visitor_spec.rb
358
+ - spec/squeel/visitors/predicate_visitor_spec.rb
359
+ - spec/squeel/visitors/preload_visitor_spec.rb
360
+ - spec/squeel/visitors/select_visitor_spec.rb
361
+ - spec/squeel/visitors/visitor_spec.rb
362
+ - spec/support/models.rb
363
+ - spec/support/schema.rb