convenient_scopes 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -10,9 +10,9 @@ begin
10
10
  gem.email = "isc@massivebraingames.com"
11
11
  gem.homepage = "http://github.com/isc/convenient_scopes"
12
12
  gem.authors = ["Ivan Schneider"]
13
- gem.add_runtime_dependency "activerecord", ">= 3.0.0.beta4"
13
+ gem.add_runtime_dependency "activerecord", ">= 3.0.4"
14
14
  gem.add_development_dependency "shoulda", ">= 0"
15
- gem.add_development_dependency "sqlite3-ruby"
15
+ gem.add_development_dependency "sqlite3"
16
16
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
17
17
  end
18
18
  Jeweler::GemcutterTasks.new
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.0
1
+ 0.5.0
@@ -1,65 +1,63 @@
1
1
  # Generated by jeweler
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{convenient_scopes}
8
- s.version = "0.4.0"
8
+ s.version = "0.5.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ivan Schneider"]
12
- s.date = %q{2010-07-25}
12
+ s.date = %q{2011-02-20}
13
13
  s.description = %q{Dynamic scopes by convention for ActiveRecord 3}
14
14
  s.email = %q{isc@massivebraingames.com}
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE",
17
- "README.rdoc"
17
+ "README.rdoc"
18
18
  ]
19
19
  s.files = [
20
20
  ".document",
21
- ".gitignore",
22
- "LICENSE",
23
- "README.rdoc",
24
- "Rakefile",
25
- "VERSION",
26
- "convenient_scopes.gemspec",
27
- "lib/convenient_scopes.rb",
28
- "test/helper.rb",
29
- "test/test_associations.rb",
30
- "test/test_conditions.rb",
31
- "test/test_ordering.rb"
21
+ "LICENSE",
22
+ "README.rdoc",
23
+ "Rakefile",
24
+ "VERSION",
25
+ "convenient_scopes.gemspec",
26
+ "lib/convenient_scopes.rb",
27
+ "test/helper.rb",
28
+ "test/test_all_and_any_conditions.rb",
29
+ "test/test_associations.rb",
30
+ "test/test_conditions.rb",
31
+ "test/test_ordering.rb"
32
32
  ]
33
33
  s.homepage = %q{http://github.com/isc/convenient_scopes}
34
- s.rdoc_options = ["--charset=UTF-8"]
35
34
  s.require_paths = ["lib"]
36
- s.rubygems_version = %q{1.3.6}
35
+ s.rubygems_version = %q{1.5.2}
37
36
  s.summary = %q{Dynamic scopes by convention for ActiveRecord 3}
38
37
  s.test_files = [
39
38
  "test/helper.rb",
40
- "test/test_all_and_any_conditions.rb",
41
- "test/test_associations.rb",
42
- "test/test_conditions.rb",
43
- "test/test_ordering.rb"
39
+ "test/test_all_and_any_conditions.rb",
40
+ "test/test_associations.rb",
41
+ "test/test_conditions.rb",
42
+ "test/test_ordering.rb"
44
43
  ]
45
44
 
46
45
  if s.respond_to? :specification_version then
47
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
48
46
  s.specification_version = 3
49
47
 
50
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
51
- s.add_runtime_dependency(%q<activerecord>, [">= 3.0.0.beta4"])
48
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
49
+ s.add_runtime_dependency(%q<activerecord>, [">= 3.0.4"])
52
50
  s.add_development_dependency(%q<shoulda>, [">= 0"])
53
- s.add_development_dependency(%q<sqlite3-ruby>, [">= 0"])
51
+ s.add_development_dependency(%q<sqlite3>, [">= 0"])
54
52
  else
55
- s.add_dependency(%q<activerecord>, [">= 3.0.0.beta4"])
53
+ s.add_dependency(%q<activerecord>, [">= 3.0.4"])
56
54
  s.add_dependency(%q<shoulda>, [">= 0"])
57
- s.add_dependency(%q<sqlite3-ruby>, [">= 0"])
55
+ s.add_dependency(%q<sqlite3>, [">= 0"])
58
56
  end
59
57
  else
60
- s.add_dependency(%q<activerecord>, [">= 3.0.0.beta4"])
58
+ s.add_dependency(%q<activerecord>, [">= 3.0.4"])
61
59
  s.add_dependency(%q<shoulda>, [">= 0"])
62
- s.add_dependency(%q<sqlite3-ruby>, [">= 0"])
60
+ s.add_dependency(%q<sqlite3>, [">= 0"])
63
61
  end
64
62
  end
65
63
 
@@ -13,7 +13,7 @@ module ConvenientScopes
13
13
 
14
14
  def equals_scope name
15
15
  return unless (column = match_suffix_and_column_name name, %w(equals eq is))
16
- lambda {|value| where(column => value)}
16
+ lambda {|value| unscoped.where(column => value)}
17
17
  end
18
18
 
19
19
  def does_not_equal_scope name
@@ -73,7 +73,7 @@ module ConvenientScopes
73
73
  def boolean_column_scope name
74
74
  return unless column_names.include? name.to_s
75
75
  return unless boolean_column? name
76
- where(name => true)
76
+ unscoped.where(name => true)
77
77
  end
78
78
 
79
79
  def negative_boolean_column_scope name
@@ -81,7 +81,7 @@ module ConvenientScopes
81
81
  return unless str_name.gsub!(/^not_/, '')
82
82
  return unless column_names.include? str_name
83
83
  return unless boolean_column? str_name
84
- where(str_name => false)
84
+ unscoped.where(str_name => false)
85
85
  end
86
86
 
87
87
  end
@@ -108,7 +108,7 @@ module ConvenientScopes
108
108
 
109
109
  def determine_order_scope_data name, direction
110
110
  if column_names.include? name.to_s
111
- order("#{quoted_table_name}.#{name} #{direction}")
111
+ unscoped.order("#{quoted_table_name}.#{name} #{direction}")
112
112
  elsif assoc = (possible_association_for_scope name)
113
113
  next_scope = name.to_s.split("#{assoc.name}_").last.to_sym # age
114
114
  scope_arg = assoc.klass.determine_order_scope_data next_scope, direction
@@ -132,7 +132,7 @@ module ConvenientScopes
132
132
  def define_scope name
133
133
  [Conditions, Ordering].map(&:instance_methods).flatten.each do |scope_type|
134
134
  if scope_arg = (send scope_type.to_sym, name)
135
- return scope_arg unless scope_arg.nil?
135
+ return scope_arg
136
136
  end
137
137
  end
138
138
  association_scope name
@@ -141,12 +141,12 @@ module ConvenientScopes
141
141
  def match_and_define_scope name, suffixes, sql_format, value_format = nil
142
142
  return unless (column = match_suffix_and_column_name name, suffixes)
143
143
  sql = formatted_sql column, sql_format
144
- lambda {|value| where([sql, value_format ? (value_format % value) : value])}
144
+ lambda {|value| unscoped.where([sql, value_format ? (value_format % value) : value])}
145
145
  end
146
146
 
147
147
  def match_and_define_scope_without_value name, suffixes, sql_format
148
148
  return unless (column = match_suffix_and_column_name name, suffixes)
149
- where(formatted_sql column, sql_format)
149
+ unscoped.where(formatted_sql column, sql_format)
150
150
  end
151
151
 
152
152
  def formatted_sql column, sql_format
@@ -14,6 +14,7 @@ class TestConditions < Test::Unit::TestCase
14
14
  User.blabla_eq('Bob')
15
15
  end
16
16
  assert_equal [@bob], User.pseudo_eq('Bob')
17
+ assert_equal [@slim], User.pseudo_eq('Slim')
17
18
  assert_equal [@slim], User.pseudo_is('Slim')
18
19
  assert_equal [@bob], User.first_name_is('Robert')
19
20
  end
@@ -66,5 +67,11 @@ class TestConditions < Test::Unit::TestCase
66
67
  assert_equal [@slim], User.not_admin
67
68
  end
68
69
 
70
+ should "not mix up scopes" do
71
+ User.age_gt(0).pseudo_null
72
+ sql = User.pseudo_null.to_sql
73
+ assert_nil sql['age']
74
+ end
75
+
69
76
  end
70
77
  end
@@ -1,13 +1,13 @@
1
1
  require 'helper'
2
2
 
3
3
  class TestOrdering < Test::Unit::TestCase
4
-
4
+
5
5
  context "convenient_scopes" do
6
-
6
+
7
7
  setup do
8
- @bob = User.create :age => 43
9
- @slim = User.create :age => 27
10
- @avon = User.create :age => 37
8
+ @bob = User.create :age => 43, :pseudo => 'Bob'
9
+ @slim = User.create :age => 27, :pseudo => 'Slim'
10
+ @avon = User.create :age => 37, :pseudo => 'Avon'
11
11
  @managers = Group.create :users => [@bob, @avon]
12
12
  @developers = Group.create :users => [@slim]
13
13
  end
@@ -16,12 +16,20 @@ class TestOrdering < Test::Unit::TestCase
16
16
  assert_equal [@slim, @avon, @bob], User.ascend_by_age
17
17
  assert_equal [@bob, @avon, @slim], User.descend_by_age
18
18
  end
19
-
19
+
20
20
  should "allow ordering by attributes of an association" do
21
21
  assert_equal [@developers, @managers], Group.ascend_by_users_age.uniq
22
22
  assert_equal [@managers, @developers], Group.descend_by_users_age.uniq
23
23
  end
24
-
24
+
25
+ should "not screw stuff" do
26
+ User.where(:pseudo => 'Bob').descend_by_pseudo
27
+ sql = User.descend_by_pseudo.to_sql
28
+ assert_nil sql['Bob']
29
+ sql = User.where(:pseudo => 'Slim').descend_by_pseudo.to_sql
30
+ assert sql['Slim']
31
+ end
32
+
25
33
  end
26
-
34
+
27
35
  end
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: convenient_scopes
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ hash: 11
5
+ prerelease:
5
6
  segments:
6
7
  - 0
7
- - 4
8
+ - 5
8
9
  - 0
9
- version: 0.4.0
10
+ version: 0.5.0
10
11
  platform: ruby
11
12
  authors:
12
13
  - Ivan Schneider
@@ -14,43 +15,48 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-07-25 00:00:00 +02:00
18
+ date: 2011-02-20 00:00:00 +01:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
22
  name: activerecord
22
23
  prerelease: false
23
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
24
26
  requirements:
25
27
  - - ">="
26
28
  - !ruby/object:Gem::Version
29
+ hash: 15
27
30
  segments:
28
31
  - 3
29
32
  - 0
30
- - 0
31
- - beta4
32
- version: 3.0.0.beta4
33
+ - 4
34
+ version: 3.0.4
33
35
  type: :runtime
34
36
  version_requirements: *id001
35
37
  - !ruby/object:Gem::Dependency
36
38
  name: shoulda
37
39
  prerelease: false
38
40
  requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
39
42
  requirements:
40
43
  - - ">="
41
44
  - !ruby/object:Gem::Version
45
+ hash: 3
42
46
  segments:
43
47
  - 0
44
48
  version: "0"
45
49
  type: :development
46
50
  version_requirements: *id002
47
51
  - !ruby/object:Gem::Dependency
48
- name: sqlite3-ruby
52
+ name: sqlite3
49
53
  prerelease: false
50
54
  requirement: &id003 !ruby/object:Gem::Requirement
55
+ none: false
51
56
  requirements:
52
57
  - - ">="
53
58
  - !ruby/object:Gem::Version
59
+ hash: 3
54
60
  segments:
55
61
  - 0
56
62
  version: "0"
@@ -67,7 +73,6 @@ extra_rdoc_files:
67
73
  - README.rdoc
68
74
  files:
69
75
  - .document
70
- - .gitignore
71
76
  - LICENSE
72
77
  - README.rdoc
73
78
  - Rakefile
@@ -75,6 +80,7 @@ files:
75
80
  - convenient_scopes.gemspec
76
81
  - lib/convenient_scopes.rb
77
82
  - test/helper.rb
83
+ - test/test_all_and_any_conditions.rb
78
84
  - test/test_associations.rb
79
85
  - test/test_conditions.rb
80
86
  - test/test_ordering.rb
@@ -83,28 +89,32 @@ homepage: http://github.com/isc/convenient_scopes
83
89
  licenses: []
84
90
 
85
91
  post_install_message:
86
- rdoc_options:
87
- - --charset=UTF-8
92
+ rdoc_options: []
93
+
88
94
  require_paths:
89
95
  - lib
90
96
  required_ruby_version: !ruby/object:Gem::Requirement
97
+ none: false
91
98
  requirements:
92
99
  - - ">="
93
100
  - !ruby/object:Gem::Version
101
+ hash: 3
94
102
  segments:
95
103
  - 0
96
104
  version: "0"
97
105
  required_rubygems_version: !ruby/object:Gem::Requirement
106
+ none: false
98
107
  requirements:
99
108
  - - ">="
100
109
  - !ruby/object:Gem::Version
110
+ hash: 3
101
111
  segments:
102
112
  - 0
103
113
  version: "0"
104
114
  requirements: []
105
115
 
106
116
  rubyforge_project:
107
- rubygems_version: 1.3.6
117
+ rubygems_version: 1.5.2
108
118
  signing_key:
109
119
  specification_version: 3
110
120
  summary: Dynamic scopes by convention for ActiveRecord 3
data/.gitignore DELETED
@@ -1,21 +0,0 @@
1
- ## MAC OS
2
- .DS_Store
3
-
4
- ## TEXTMATE
5
- *.tmproj
6
- tmtags
7
-
8
- ## EMACS
9
- *~
10
- \#*
11
- .\#*
12
-
13
- ## VIM
14
- *.swp
15
-
16
- ## PROJECT::GENERAL
17
- coverage
18
- rdoc
19
- pkg
20
-
21
- ## PROJECT::SPECIFIC