squeel 1.2.1 → 1.2.2

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 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