convenient_scopes 0.4.0 → 0.5.0

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