case_insensitive_arel 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/.document ADDED
@@ -0,0 +1,5 @@
1
+ lib/**/*.rb
2
+ bin/*
3
+ -
4
+ features/**/*.feature
5
+ LICENSE.txt
data/Gemfile ADDED
@@ -0,0 +1,11 @@
1
+ source "http://rubygems.org"
2
+
3
+ gem "arel", ">= 2.0.9"
4
+ gem 'activesupport', '>= 3.0.0'
5
+
6
+ group :development do
7
+ gem "shoulda", ">= 0"
8
+ gem "bundler", "~> 1.0.0"
9
+ gem "jeweler", "~> 1.5.2"
10
+ gem "rcov", ">= 0"
11
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,24 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ activesupport (3.0.5)
5
+ arel (2.0.9)
6
+ git (1.2.5)
7
+ jeweler (1.5.2)
8
+ bundler (~> 1.0.0)
9
+ git (>= 1.2.5)
10
+ rake
11
+ rake (0.8.7)
12
+ rcov (0.9.9)
13
+ shoulda (2.11.3)
14
+
15
+ PLATFORMS
16
+ ruby
17
+
18
+ DEPENDENCIES
19
+ activesupport (>= 3.0.0)
20
+ arel (>= 2.0.9)
21
+ bundler (~> 1.0.0)
22
+ jeweler (~> 1.5.2)
23
+ rcov
24
+ shoulda
data/LICENSE.txt ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2011 Steve Lamotte
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,19 @@
1
+ = case_insensitive_arel
2
+
3
+ Description goes here.
4
+
5
+ == Contributing to case_insensitive_arel
6
+
7
+ * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
8
+ * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
9
+ * Fork the project
10
+ * Start a feature/bugfix branch
11
+ * Commit and push until you are happy with your contribution
12
+ * Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
13
+ * Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
14
+
15
+ == Copyright
16
+
17
+ Copyright (c) 2011 Steve Lamotte. See LICENSE.txt for
18
+ further details.
19
+
data/Rakefile ADDED
@@ -0,0 +1,55 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ begin
4
+ Bundler.setup(:default, :development)
5
+ rescue Bundler::BundlerError => e
6
+ $stderr.puts e.message
7
+ $stderr.puts "Run `bundle install` to install missing gems"
8
+ exit e.status_code
9
+ end
10
+ require 'rake'
11
+
12
+ require 'jeweler'
13
+ Jeweler::Tasks.new do |gem|
14
+ # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
15
+ gem.name = "case_insensitive_arel"
16
+ gem.homepage = "http://github.com/slamotte/case_insensitive_arel"
17
+ gem.license = "MIT"
18
+ gem.summary = %Q{Allows Arel queries to be case-insensitive}
19
+ gem.description = <<EOF
20
+ If you're using Oracle or another DBMS that has case-insensitive collation sequences, this gem is for you.
21
+ EOF
22
+ gem.email = "steve@lexor.ca"
23
+ gem.authors = ["Steve Lamotte"]
24
+ # Include your dependencies below. Runtime dependencies are required when using your gem,
25
+ # and development dependencies are only needed for development (ie running rake tasks, tests, etc)
26
+ gem.add_runtime_dependency 'arel', '>= 2.0.9'
27
+ gem.add_runtime_dependency 'activesupport'
28
+ end
29
+ Jeweler::RubygemsDotOrgTasks.new
30
+
31
+ require 'rake/testtask'
32
+ Rake::TestTask.new(:test) do |test|
33
+ test.libs << 'lib' << 'test'
34
+ test.pattern = 'test/**/test_*.rb'
35
+ test.verbose = true
36
+ end
37
+
38
+ require 'rcov/rcovtask'
39
+ Rcov::RcovTask.new do |test|
40
+ test.libs << 'test'
41
+ test.pattern = 'test/**/test_*.rb'
42
+ test.verbose = true
43
+ end
44
+
45
+ task :default => :test
46
+
47
+ require 'rake/rdoctask'
48
+ Rake::RDocTask.new do |rdoc|
49
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
50
+
51
+ rdoc.rdoc_dir = 'rdoc'
52
+ rdoc.title = "case_insensitive_arel #{version}"
53
+ rdoc.rdoc_files.include('README*')
54
+ rdoc.rdoc_files.include('lib/**/*.rb')
55
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.0
@@ -0,0 +1,85 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{case_insensitive_arel}
8
+ s.version = "0.0.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Steve Lamotte"]
12
+ s.date = %q{2011-03-18}
13
+ s.description = %q{If you're using Oracle or another DBMS that has case-insensitive collation sequences, this gem is for you.
14
+ }
15
+ s.email = %q{steve@lexor.ca}
16
+ s.extra_rdoc_files = [
17
+ "LICENSE.txt",
18
+ "README.rdoc"
19
+ ]
20
+ s.files = [
21
+ ".document",
22
+ "Gemfile",
23
+ "Gemfile.lock",
24
+ "LICENSE.txt",
25
+ "README.rdoc",
26
+ "Rakefile",
27
+ "VERSION",
28
+ "case_insensitive_arel.gemspec",
29
+ "lib/case_insensitive_arel.rb",
30
+ "test/helper.rb",
31
+ "test/support/fake_record.rb",
32
+ "test/test_comparisons.rb",
33
+ "test/test_group_by.rb",
34
+ "test/test_joins.rb",
35
+ "test/test_projects.rb"
36
+ ]
37
+ s.homepage = %q{http://github.com/slamotte/case_insensitive_arel}
38
+ s.licenses = ["MIT"]
39
+ s.require_paths = ["lib"]
40
+ s.rubygems_version = %q{1.3.7}
41
+ s.summary = %q{Allows Arel queries to be case-insensitive}
42
+ s.test_files = [
43
+ "test/helper.rb",
44
+ "test/support/fake_record.rb",
45
+ "test/test_comparisons.rb",
46
+ "test/test_group_by.rb",
47
+ "test/test_joins.rb",
48
+ "test/test_projects.rb"
49
+ ]
50
+
51
+ if s.respond_to? :specification_version then
52
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
53
+ s.specification_version = 3
54
+
55
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
56
+ s.add_runtime_dependency(%q<arel>, [">= 2.0.9"])
57
+ s.add_runtime_dependency(%q<activesupport>, [">= 3.0.0"])
58
+ s.add_development_dependency(%q<shoulda>, [">= 0"])
59
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
60
+ s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
61
+ s.add_development_dependency(%q<rcov>, [">= 0"])
62
+ s.add_runtime_dependency(%q<arel>, [">= 2.0.9"])
63
+ s.add_runtime_dependency(%q<activesupport>, [">= 0"])
64
+ else
65
+ s.add_dependency(%q<arel>, [">= 2.0.9"])
66
+ s.add_dependency(%q<activesupport>, [">= 3.0.0"])
67
+ s.add_dependency(%q<shoulda>, [">= 0"])
68
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
69
+ s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
70
+ s.add_dependency(%q<rcov>, [">= 0"])
71
+ s.add_dependency(%q<arel>, [">= 2.0.9"])
72
+ s.add_dependency(%q<activesupport>, [">= 0"])
73
+ end
74
+ else
75
+ s.add_dependency(%q<arel>, [">= 2.0.9"])
76
+ s.add_dependency(%q<activesupport>, [">= 3.0.0"])
77
+ s.add_dependency(%q<shoulda>, [">= 0"])
78
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
79
+ s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
80
+ s.add_dependency(%q<rcov>, [">= 0"])
81
+ s.add_dependency(%q<arel>, [">= 2.0.9"])
82
+ s.add_dependency(%q<activesupport>, [">= 0"])
83
+ end
84
+ end
85
+
@@ -0,0 +1,51 @@
1
+ require 'active_support/core_ext/class/attribute_accessors'
2
+ require 'active_support/core_ext/module/aliasing'
3
+
4
+ module Arel
5
+ module Visitors
6
+ class ToSql
7
+ # List of Arel types that should be converted to upper or lower case
8
+ %w(Arel_Attributes_Attribute Arel_Attributes_String String).each do |arel_type_name|
9
+ convert_method = case arel_type_name
10
+ when /^Arel_Attributes_.+/
11
+ :convert_attribute
12
+ when 'String'
13
+ :convert_string
14
+ else
15
+ raise "Unexpected Arel type name: #{arel_type_name}"
16
+ end
17
+ define_method "visit_#{arel_type_name}_with_case_insensitive" do |o|
18
+ value = send("visit_#{arel_type_name}_without_case_insensitive", o)
19
+ o.respond_to?(:do_not_make_case_insensitive?) ? value : Arel::CaseInsensitive.convert_value(value, convert_method)
20
+ end
21
+ alias_method_chain "visit_#{arel_type_name}", :case_insensitive
22
+ end
23
+ end
24
+ end
25
+
26
+ class CaseInsensitive
27
+ cattr_accessor :case_insensitive, :convert_attribute, :convert_string
28
+
29
+ def self.convert_value(val, method)
30
+ case_insensitive ? send(method).call(val) : val
31
+ end
32
+ end
33
+
34
+ class Table
35
+ def project_with_case_insensitive(*things)
36
+ things = things.map do |thing|
37
+ new_thing = thing.clone # Need to clone these because we might want to use an attribute in the SELECT and WHERE clauses, but the former shouldn't be altered
38
+ def new_thing.do_not_make_case_insensitive?; true; end
39
+ new_thing
40
+ end
41
+ project_without_case_insensitive *things
42
+ end
43
+ alias_method_chain :project, :case_insensitive
44
+ end
45
+ end
46
+
47
+ # Set the default values (for Oracle)
48
+ Arel::CaseInsensitive.case_insensitive = true
49
+ Arel::CaseInsensitive.convert_attribute = Proc.new { |val| "UPPER(#{val})" }
50
+ Arel::CaseInsensitive.convert_string = Proc.new{ |val| val.upcase }
51
+
data/test/helper.rb ADDED
@@ -0,0 +1,32 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ begin
4
+ Bundler.setup(:default, :development)
5
+ rescue Bundler::BundlerError => e
6
+ $stderr.puts e.message
7
+ $stderr.puts "Run `bundle install` to install missing gems"
8
+ exit e.status_code
9
+ end
10
+ require 'test/unit'
11
+ require 'shoulda'
12
+
13
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
14
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
15
+ require 'arel'
16
+ require 'case_insensitive_arel'
17
+ require 'pp'
18
+
19
+ require 'support/fake_record'
20
+ Arel::Table.engine = Arel::Sql::Engine.new(FakeRecord::Base.new)
21
+
22
+ class Test::Unit::TestCase
23
+ def setup
24
+ @users = Arel::Table.new(:users)
25
+ @users2 = @users.alias('u2')
26
+ @photos = Arel::Table.new(:photos)
27
+ end
28
+
29
+ def should_be_like(a, b)
30
+ assert_equal b.gsub(/\s+/, ' ').strip, a.gsub(/\s+/, ' ').strip
31
+ end
32
+ end
@@ -0,0 +1,115 @@
1
+ module FakeRecord
2
+ class Column < Struct.new(:name, :type)
3
+ end
4
+
5
+ class Connection
6
+ attr_reader :tables, :columns_hash
7
+
8
+ def initialize
9
+ @tables = %w{ users photos developers products}
10
+ @columns = {
11
+ 'users' => [
12
+ Column.new('id', :integer),
13
+ Column.new('name', :string),
14
+ Column.new('bool', :boolean),
15
+ Column.new('created_at', :date)
16
+ ],
17
+ 'photos' => [
18
+ Column.new('id', :integer),
19
+ Column.new('user_name', :string),
20
+ Column.new('price', :decimal)
21
+ ],
22
+ 'products' => [
23
+ Column.new('id', :integer),
24
+ Column.new('price', :decimal)
25
+ ]
26
+ }
27
+ @columns_hash = {
28
+ 'users' => Hash[@columns['users'].map { |x| [x.name, x] }],
29
+ 'photos' => Hash[@columns['photos'].map { |x| [x.name, x] }],
30
+ 'products' => Hash[@columns['products'].map { |x| [x.name, x] }]
31
+ }
32
+ @primary_keys = {
33
+ 'users' => 'id',
34
+ 'photos' => 'id',
35
+ 'products' => 'id'
36
+ }
37
+ end
38
+
39
+ def primary_key name
40
+ @primary_keys[name.to_s]
41
+ end
42
+
43
+ def table_exists? name
44
+ @tables.include? name.to_s
45
+ end
46
+
47
+ def columns name, message = nil
48
+ @columns[name.to_s]
49
+ end
50
+
51
+ def quote_table_name name
52
+ "\"#{name.to_s}\""
53
+ end
54
+
55
+ def quote_column_name name
56
+ "\"#{name.to_s}\""
57
+ end
58
+
59
+ def quote thing, column = nil
60
+ if column && column.type == :integer
61
+ return 'NULL' if thing.nil?
62
+ return thing.to_i
63
+ end
64
+
65
+ case thing
66
+ when true
67
+ "'t'"
68
+ when false
69
+ "'f'"
70
+ when nil
71
+ 'NULL'
72
+ when Numeric
73
+ thing
74
+ else
75
+ "'#{thing}'"
76
+ end
77
+ end
78
+ end
79
+
80
+ class ConnectionPool
81
+ class Spec < Struct.new(:config)
82
+ end
83
+
84
+ attr_reader :spec, :connection
85
+
86
+ def initialize
87
+ @spec = Spec.new(:adapter => 'america')
88
+ @connection = Connection.new
89
+ end
90
+
91
+ def with_connection
92
+ yield connection
93
+ end
94
+
95
+ def table_exists? name
96
+ connection.tables.include? name.to_s
97
+ end
98
+
99
+ def columns_hash
100
+ connection.columns_hash
101
+ end
102
+ end
103
+
104
+ class Base
105
+ attr_accessor :connection_pool
106
+
107
+ def initialize
108
+ @connection_pool = ConnectionPool.new
109
+ end
110
+
111
+ def connection
112
+ connection_pool.connection
113
+ end
114
+ end
115
+ end
@@ -0,0 +1,29 @@
1
+ require 'helper'
2
+
3
+ class TestComparisons < Test::Unit::TestCase
4
+ should "work correctly in case-insensitive mode" do
5
+ Arel::CaseInsensitive.case_insensitive = true
6
+ should_be_like @users.where(@users[:name].eq('Steve')).to_sql, "SELECT FROM \"users\" WHERE UPPER(\"users\".\"name\") = 'STEVE'"
7
+ should_be_like @users.where(@users[:name].not_eq('Steve')).to_sql, "SELECT FROM \"users\" WHERE UPPER(\"users\".\"name\") != 'STEVE'"
8
+ should_be_like @users.where(@users[:name].matches('Ste%')).to_sql, "SELECT FROM \"users\" WHERE UPPER(\"users\".\"name\") LIKE 'STE%'"
9
+ should_be_like @users.where(@users[:name].does_not_match('Ste%')).to_sql, "SELECT FROM \"users\" WHERE UPPER(\"users\".\"name\") NOT LIKE 'STE%'"
10
+ should_be_like @users.where(@users[:name].eq(@users[:name])).to_sql, "SELECT FROM \"users\" WHERE UPPER(\"users\".\"name\") = UPPER(\"users\".\"name\")"
11
+ should_be_like @users.where(@users[:name].gteq('Steve')).to_sql, "SELECT FROM \"users\" WHERE UPPER(\"users\".\"name\") >= 'STEVE'"
12
+ should_be_like @users.where(@users[:name].in(['Steve', 'Barb'])).to_sql, "SELECT FROM \"users\" WHERE UPPER(\"users\".\"name\") IN ('STEVE', 'BARB')"
13
+ should_be_like @users.where(@users[:name].not_in(['Steve', 'Barb'])).to_sql, "SELECT FROM \"users\" WHERE UPPER(\"users\".\"name\") NOT IN ('STEVE', 'BARB')"
14
+ should_be_like @users.where(@users[:name].matches_any(['Steve', 'Barb'])).to_sql, "SELECT FROM \"users\" WHERE (UPPER(\"users\".\"name\") LIKE 'STEVE' OR UPPER(\"users\".\"name\") LIKE 'BARB')"
15
+ end
16
+
17
+ should "work correctly in case-sensitive mode" do
18
+ Arel::CaseInsensitive.case_insensitive = false
19
+ should_be_like @users.where(@users[:name].eq('Steve')).to_sql, "SELECT FROM \"users\" WHERE \"users\".\"name\" = 'Steve'"
20
+ should_be_like @users.where(@users[:name].not_eq('Steve')).to_sql, "SELECT FROM \"users\" WHERE \"users\".\"name\" != 'Steve'"
21
+ should_be_like @users.where(@users[:name].matches('Ste%')).to_sql, "SELECT FROM \"users\" WHERE \"users\".\"name\" LIKE 'Ste%'"
22
+ should_be_like @users.where(@users[:name].does_not_match('Ste%')).to_sql, "SELECT FROM \"users\" WHERE \"users\".\"name\" NOT LIKE 'Ste%'"
23
+ should_be_like @users.where(@users[:name].eq(@users[:name])).to_sql, "SELECT FROM \"users\" WHERE \"users\".\"name\" = \"users\".\"name\""
24
+ should_be_like @users.where(@users[:name].gteq('Steve')).to_sql, "SELECT FROM \"users\" WHERE \"users\".\"name\" >= 'Steve'"
25
+ should_be_like @users.where(@users[:name].in(['Steve', 'Barb'])).to_sql, "SELECT FROM \"users\" WHERE \"users\".\"name\" IN ('Steve', 'Barb')"
26
+ should_be_like @users.where(@users[:name].not_in(['Steve', 'Barb'])).to_sql, "SELECT FROM \"users\" WHERE \"users\".\"name\" NOT IN ('Steve', 'Barb')"
27
+ should_be_like @users.where(@users[:name].matches_any(['Steve', 'Barb'])).to_sql, "SELECT FROM \"users\" WHERE (\"users\".\"name\" LIKE 'Steve' OR \"users\".\"name\" LIKE 'Barb')"
28
+ end
29
+ end
@@ -0,0 +1,15 @@
1
+ require 'helper'
2
+
3
+ class TestGroupBy < Test::Unit::TestCase
4
+ should "work correctly in case-insensitive mode" do
5
+ Arel::CaseInsensitive.case_insensitive = true
6
+ should_be_like @users.group(@users[:name]).to_sql, "SELECT FROM \"users\" GROUP BY UPPER(\"users\".\"name\")"
7
+ should_be_like @users.group([@users[:id], @users[:name]]).to_sql, "SELECT FROM \"users\" GROUP BY \"users\".\"id\", UPPER(\"users\".\"name\")"
8
+ end
9
+
10
+ should "work correctly in case-sensitive mode" do
11
+ Arel::CaseInsensitive.case_insensitive = false
12
+ should_be_like @users.group(@users[:name]).to_sql, "SELECT FROM \"users\" GROUP BY \"users\".\"name\""
13
+ should_be_like @users.group([@users[:id], @users[:name]]).to_sql, "SELECT FROM \"users\" GROUP BY \"users\".\"id\", \"users\".\"name\""
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ require "helper"
2
+
3
+ class TestJoins < Test::Unit::TestCase
4
+ should "work correctly in case-insensitive mode" do
5
+ Arel::CaseInsensitive.case_insensitive = true
6
+ should_be_like @users.join(@photos).on(@users[:name].eq(@photos[:user_name])).to_sql, "SELECT FROM \"users\" INNER JOIN \"photos\" ON UPPER(\"users\".\"name\") = UPPER(\"photos\".\"user_name\")"
7
+ should_be_like @users.join(@users2).on(@users[:name].eq(@users2[:name])).to_sql, "SELECT FROM \"users\" INNER JOIN \"users\" \"u2\" ON UPPER(\"users\".\"name\") = UPPER(\"u2\".\"name\")"
8
+ end
9
+
10
+ should "work correctly in case-sensitive mode" do
11
+ Arel::CaseInsensitive.case_insensitive = false
12
+ should_be_like @users.join(@photos).on(@users[:name].eq(@photos[:user_name])).to_sql, "SELECT FROM \"users\" INNER JOIN \"photos\" ON \"users\".\"name\" = \"photos\".\"user_name\""
13
+ should_be_like @users.join(@users2).on(@users[:name].eq(@users2[:name])).to_sql, "SELECT FROM \"users\" INNER JOIN \"users\" \"u2\" ON \"users\".\"name\" = \"u2\".\"name\""
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ require 'helper'
2
+
3
+ class TestProjects < Test::Unit::TestCase
4
+ should "work correctly in case-insensitive mode" do
5
+ Arel::CaseInsensitive.case_insensitive = true
6
+ should_be_like @users.project(Arel.sql('*')).to_sql, "SELECT * FROM \"users\""
7
+ should_be_like @users.project('*').to_sql, "SELECT * FROM \"users\""
8
+ should_be_like @users.project(@users[:name]).to_sql, "SELECT \"users\".\"name\" FROM \"users\""
9
+ 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
+ end
11
+
12
+ should "work correctly in case-sensitive mode" do
13
+ Arel::CaseInsensitive.case_insensitive = false
14
+ end
15
+ end
metadata ADDED
@@ -0,0 +1,210 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: case_insensitive_arel
3
+ version: !ruby/object:Gem::Version
4
+ hash: 31
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 0
10
+ version: 0.0.0
11
+ platform: ruby
12
+ authors:
13
+ - Steve Lamotte
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-03-18 00:00:00 -05:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ prerelease: false
23
+ name: arel
24
+ version_requirements: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 29
30
+ segments:
31
+ - 2
32
+ - 0
33
+ - 9
34
+ version: 2.0.9
35
+ requirement: *id001
36
+ type: :runtime
37
+ - !ruby/object:Gem::Dependency
38
+ prerelease: false
39
+ name: activesupport
40
+ version_requirements: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ hash: 7
46
+ segments:
47
+ - 3
48
+ - 0
49
+ - 0
50
+ version: 3.0.0
51
+ requirement: *id002
52
+ type: :runtime
53
+ - !ruby/object:Gem::Dependency
54
+ prerelease: false
55
+ name: shoulda
56
+ version_requirements: &id003 !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ hash: 3
62
+ segments:
63
+ - 0
64
+ version: "0"
65
+ requirement: *id003
66
+ type: :development
67
+ - !ruby/object:Gem::Dependency
68
+ prerelease: false
69
+ name: bundler
70
+ version_requirements: &id004 !ruby/object:Gem::Requirement
71
+ none: false
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ hash: 23
76
+ segments:
77
+ - 1
78
+ - 0
79
+ - 0
80
+ version: 1.0.0
81
+ requirement: *id004
82
+ type: :development
83
+ - !ruby/object:Gem::Dependency
84
+ prerelease: false
85
+ name: jeweler
86
+ version_requirements: &id005 !ruby/object:Gem::Requirement
87
+ none: false
88
+ requirements:
89
+ - - ~>
90
+ - !ruby/object:Gem::Version
91
+ hash: 7
92
+ segments:
93
+ - 1
94
+ - 5
95
+ - 2
96
+ version: 1.5.2
97
+ requirement: *id005
98
+ type: :development
99
+ - !ruby/object:Gem::Dependency
100
+ prerelease: false
101
+ name: rcov
102
+ version_requirements: &id006 !ruby/object:Gem::Requirement
103
+ none: false
104
+ requirements:
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ hash: 3
108
+ segments:
109
+ - 0
110
+ version: "0"
111
+ requirement: *id006
112
+ type: :development
113
+ - !ruby/object:Gem::Dependency
114
+ prerelease: false
115
+ name: arel
116
+ version_requirements: &id007 !ruby/object:Gem::Requirement
117
+ none: false
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ hash: 29
122
+ segments:
123
+ - 2
124
+ - 0
125
+ - 9
126
+ version: 2.0.9
127
+ requirement: *id007
128
+ type: :runtime
129
+ - !ruby/object:Gem::Dependency
130
+ prerelease: false
131
+ name: activesupport
132
+ version_requirements: &id008 !ruby/object:Gem::Requirement
133
+ none: false
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ hash: 3
138
+ segments:
139
+ - 0
140
+ version: "0"
141
+ requirement: *id008
142
+ type: :runtime
143
+ description: |
144
+ If you're using Oracle or another DBMS that has case-insensitive collation sequences, this gem is for you.
145
+
146
+ email: steve@lexor.ca
147
+ executables: []
148
+
149
+ extensions: []
150
+
151
+ extra_rdoc_files:
152
+ - LICENSE.txt
153
+ - README.rdoc
154
+ files:
155
+ - .document
156
+ - Gemfile
157
+ - Gemfile.lock
158
+ - LICENSE.txt
159
+ - README.rdoc
160
+ - Rakefile
161
+ - VERSION
162
+ - case_insensitive_arel.gemspec
163
+ - lib/case_insensitive_arel.rb
164
+ - test/helper.rb
165
+ - test/support/fake_record.rb
166
+ - test/test_comparisons.rb
167
+ - test/test_group_by.rb
168
+ - test/test_joins.rb
169
+ - test/test_projects.rb
170
+ has_rdoc: true
171
+ homepage: http://github.com/slamotte/case_insensitive_arel
172
+ licenses:
173
+ - MIT
174
+ post_install_message:
175
+ rdoc_options: []
176
+
177
+ require_paths:
178
+ - lib
179
+ required_ruby_version: !ruby/object:Gem::Requirement
180
+ none: false
181
+ requirements:
182
+ - - ">="
183
+ - !ruby/object:Gem::Version
184
+ hash: 3
185
+ segments:
186
+ - 0
187
+ version: "0"
188
+ required_rubygems_version: !ruby/object:Gem::Requirement
189
+ none: false
190
+ requirements:
191
+ - - ">="
192
+ - !ruby/object:Gem::Version
193
+ hash: 3
194
+ segments:
195
+ - 0
196
+ version: "0"
197
+ requirements: []
198
+
199
+ rubyforge_project:
200
+ rubygems_version: 1.3.7
201
+ signing_key:
202
+ specification_version: 3
203
+ summary: Allows Arel queries to be case-insensitive
204
+ test_files:
205
+ - test/helper.rb
206
+ - test/support/fake_record.rb
207
+ - test/test_comparisons.rb
208
+ - test/test_group_by.rb
209
+ - test/test_joins.rb
210
+ - test/test_projects.rb