case_insensitive_arel 0.1.0 → 0.1.1
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/VERSION +1 -1
- data/case_insensitive_arel.gemspec +2 -2
- data/lib/case_insensitive_arel.rb +12 -4
- data/test/test_projects.rb +1 -0
- metadata +4 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.1
|
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{case_insensitive_arel}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Steve Lamotte"]
|
12
|
-
s.date = %q{2011-
|
12
|
+
s.date = %q{2011-05-18}
|
13
13
|
s.description = %q{If you're using Oracle or another DBMS that has case-insensitive collation sequences, and you don't want to litter your database access code with case conversions, this gem is for you.}
|
14
14
|
s.email = %q{steve@lexor.ca}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -6,11 +6,11 @@ module Arel #:nodoc:
|
|
6
6
|
class ToSql
|
7
7
|
# List of Arel types that should be converted to make them comparable in a case-insensitive fashion
|
8
8
|
%w(Arel_Attributes_Attribute Arel_Attributes_String String).each do |arel_type_name|
|
9
|
-
define_method "visit_#{arel_type_name}_with_case_insensitive" do |
|
10
|
-
value = send("visit_#{arel_type_name}_without_case_insensitive",
|
9
|
+
define_method "visit_#{arel_type_name}_with_case_insensitive" do |obj|
|
10
|
+
value = send("visit_#{arel_type_name}_without_case_insensitive", obj)
|
11
11
|
|
12
|
-
#
|
13
|
-
|
12
|
+
# Return either the original case-sensitive value or a converted version
|
13
|
+
Arel::CaseInsensitive.leave_case_sensitive?(obj) ? value : Arel::CaseInsensitive.convert_value(value)
|
14
14
|
end
|
15
15
|
alias_method_chain "visit_#{arel_type_name}", :case_insensitive
|
16
16
|
end
|
@@ -27,6 +27,14 @@ module Arel #:nodoc:
|
|
27
27
|
# Arel::CaseInsensitive.conversion_proc = Proc.new { |val| "UPPER(#{val})" }
|
28
28
|
cattr_accessor :conversion_proc
|
29
29
|
|
30
|
+
protected
|
31
|
+
|
32
|
+
# Determines whether an object should be converted to case-insensitive form or not
|
33
|
+
def self.leave_case_sensitive?(obj)
|
34
|
+
obj.respond_to?(:do_not_make_case_insensitive?) ||
|
35
|
+
false#(obj.respond_to?(:name) && obj.name.eql?('*'))
|
36
|
+
end
|
37
|
+
|
30
38
|
private
|
31
39
|
|
32
40
|
# Return the converted value or the value itself depending on the current state of +case_insensitive+
|
data/test/test_projects.rb
CHANGED
@@ -5,6 +5,7 @@ class TestProjects < Test::Unit::TestCase
|
|
5
5
|
Arel::CaseInsensitive.case_insensitive = true
|
6
6
|
should_be_like @users.project(Arel.sql('*')).to_sql, "SELECT * FROM \"users\""
|
7
7
|
should_be_like @users.project('*').to_sql, "SELECT * FROM \"users\""
|
8
|
+
should_be_like @users.project('"users".*').to_sql, "SELECT \"users\".* FROM \"users\""
|
8
9
|
should_be_like @users.project(@users[:name]).to_sql, "SELECT \"users\".\"name\" FROM \"users\""
|
9
10
|
should_be_like @users.project(@users[:name]).where(@users[:name].eq(@users[:name])).to_sql, "SELECT \"users\".\"name\" FROM \"users\" WHERE UPPER(\"users\".\"name\") = UPPER(\"users\".\"name\")"
|
10
11
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: case_insensitive_arel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 1
|
10
|
+
version: 0.1.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Steve Lamotte
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-05-18 00:00:00 -05:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|