composite_primary_keys 13.0.1 → 14.0.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.
Files changed (106) hide show
  1. checksums.yaml +4 -4
  2. data/History.rdoc +8 -2
  3. data/README.rdoc +1 -0
  4. data/Rakefile +37 -37
  5. data/lib/composite_primary_keys/arel/sqlserver.rb +37 -37
  6. data/lib/composite_primary_keys/arel/to_sql.rb +18 -18
  7. data/lib/composite_primary_keys/associations/association.rb +23 -23
  8. data/lib/composite_primary_keys/associations/collection_association.rb +31 -31
  9. data/lib/composite_primary_keys/associations/foreign_association.rb +15 -15
  10. data/lib/composite_primary_keys/associations/has_many_association.rb +35 -35
  11. data/lib/composite_primary_keys/associations/preloader/association.rb +68 -53
  12. data/lib/composite_primary_keys/associations/through_association.rb +25 -25
  13. data/lib/composite_primary_keys/autosave_association.rb +60 -60
  14. data/lib/composite_primary_keys/composite_arrays.rb +86 -86
  15. data/lib/composite_primary_keys/composite_predicates.rb +71 -70
  16. data/lib/composite_primary_keys/composite_relation.rb +29 -29
  17. data/lib/composite_primary_keys/connection_adapters/abstract_adapter.rb +10 -10
  18. data/lib/composite_primary_keys/connection_adapters/postgresql/database_statements.rb +26 -26
  19. data/lib/composite_primary_keys/counter_cache.rb +15 -15
  20. data/lib/composite_primary_keys/fixtures.rb +21 -21
  21. data/lib/composite_primary_keys/persistence.rb +21 -7
  22. data/lib/composite_primary_keys/relation/calculations.rb +7 -1
  23. data/lib/composite_primary_keys/sanitization.rb +42 -42
  24. data/lib/composite_primary_keys/transactions.rb +34 -34
  25. data/lib/composite_primary_keys/validations/uniqueness.rb +31 -31
  26. data/lib/composite_primary_keys/version.rb +1 -1
  27. data/lib/composite_primary_keys.rb +1 -1
  28. data/scripts/console.rb +48 -48
  29. data/scripts/txt2html +76 -76
  30. data/scripts/txt2js +65 -65
  31. data/tasks/databases/mysql.rake +40 -40
  32. data/tasks/databases/oracle.rake +41 -41
  33. data/tasks/databases/postgresql.rake +38 -38
  34. data/tasks/databases/sqlite.rake +25 -25
  35. data/tasks/databases/sqlserver.rake +43 -43
  36. data/tasks/website.rake +18 -18
  37. data/test/README_tests.rdoc +56 -56
  38. data/test/abstract_unit.rb +5 -1
  39. data/test/connections/connection_spec.rb +27 -27
  40. data/test/connections/databases.example.yml +40 -40
  41. data/test/connections/databases.yml +40 -39
  42. data/test/fixtures/article.rb +10 -10
  43. data/test/fixtures/articles.yml +7 -7
  44. data/test/fixtures/capitol.rb +3 -3
  45. data/test/fixtures/capitols.yml +16 -16
  46. data/test/fixtures/comment.rb +5 -5
  47. data/test/fixtures/comments.yml +17 -17
  48. data/test/fixtures/dorm.rb +2 -2
  49. data/test/fixtures/dorms.yml +4 -4
  50. data/test/fixtures/employee.rb +5 -5
  51. data/test/fixtures/group.rb +2 -2
  52. data/test/fixtures/groups.yml +6 -6
  53. data/test/fixtures/membership_status.rb +2 -2
  54. data/test/fixtures/membership_statuses.yml +16 -16
  55. data/test/fixtures/memberships.yml +10 -10
  56. data/test/fixtures/product.rb +9 -9
  57. data/test/fixtures/product_tariff.rb +5 -5
  58. data/test/fixtures/product_tariffs.yml +14 -14
  59. data/test/fixtures/products.yml +11 -11
  60. data/test/fixtures/reading.rb +4 -4
  61. data/test/fixtures/readings.yml +10 -10
  62. data/test/fixtures/reference_code.rb +7 -7
  63. data/test/fixtures/reference_codes.yml +28 -28
  64. data/test/fixtures/reference_type.rb +12 -12
  65. data/test/fixtures/reference_types.yml +9 -9
  66. data/test/fixtures/restaurant.rb +9 -9
  67. data/test/fixtures/restaurants.yml +14 -14
  68. data/test/fixtures/restaurants_suburb.rb +2 -2
  69. data/test/fixtures/room.rb +11 -11
  70. data/test/fixtures/room_assignment.rb +13 -13
  71. data/test/fixtures/room_assignments.yml +24 -24
  72. data/test/fixtures/room_attribute.rb +2 -2
  73. data/test/fixtures/room_attribute_assignment.rb +4 -4
  74. data/test/fixtures/room_attribute_assignments.yml +4 -4
  75. data/test/fixtures/room_attributes.yml +2 -2
  76. data/test/fixtures/rooms.yml +12 -12
  77. data/test/fixtures/street.rb +2 -2
  78. data/test/fixtures/student.rb +3 -3
  79. data/test/fixtures/students.yml +15 -15
  80. data/test/fixtures/suburb.rb +5 -5
  81. data/test/fixtures/tariff.rb +5 -5
  82. data/test/fixtures/tariffs.yml +14 -14
  83. data/test/fixtures/topic_sources.yml +3 -3
  84. data/test/fixtures/topics.yml +8 -8
  85. data/test/fixtures/users.yml +10 -10
  86. data/test/plugins/pagination.rb +405 -405
  87. data/test/plugins/pagination_helper.rb +135 -135
  88. data/test/test_attribute_methods.rb +63 -63
  89. data/test/test_callbacks.rb +99 -99
  90. data/test/test_composite_arrays.rb +38 -38
  91. data/test/test_counter_cache.rb +30 -30
  92. data/test/test_dumpable.rb +15 -15
  93. data/test/test_dup.rb +37 -37
  94. data/test/test_equal.rb +26 -26
  95. data/test/test_habtm.rb +141 -141
  96. data/test/test_miscellaneous.rb +32 -32
  97. data/test/test_optimistic.rb +18 -18
  98. data/test/test_pagination.rb +35 -35
  99. data/test/test_polymorphic.rb +43 -43
  100. data/test/test_predicates.rb +59 -59
  101. data/test/test_preload.rb +102 -102
  102. data/test/test_santiago.rb +23 -23
  103. data/test/test_touch.rb +23 -23
  104. data/test/test_tutorial_example.rb +25 -25
  105. data/test/test_validations.rb +13 -13
  106. metadata +6 -6
data/scripts/txt2js CHANGED
@@ -1,65 +1,65 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'rubygems'
4
- require 'redcloth'
5
- require 'syntax/convertors/html'
6
- require 'erb'
7
- require 'active_support'
8
-
9
- version_path = File.join(File.dirname(__FILE__), '..', 'lib', 'composite_primary_keys', 'version.rb')
10
- require File.expand_path(version_path)
11
-
12
- version = CompositePrimaryKeys::VERSION::STRING
13
- download = 'http://rubygems.org/gems/composite_primary_keys'
14
-
15
- class Fixnum
16
- def ordinal
17
- # teens
18
- return 'th' if (10..19).include?(self % 100)
19
- # others
20
- case self % 10
21
- when 1
22
- return 'st'
23
- when 2
24
- return 'nd'
25
- when 3
26
- return 'rd'
27
- else
28
- return 'th'
29
- end
30
- end
31
- end
32
-
33
- class Time
34
- def pretty
35
- return "#{mday}#{mday.ordinal} #{strftime('%B')} #{year}"
36
- end
37
- end
38
-
39
- def convert_syntax(syntax, source)
40
- return Syntax::Convertors::HTML.for_syntax(syntax).convert(source).gsub(%r!^<pre>|</pre>$!,'')
41
- end
42
-
43
- if ARGV.length >= 1
44
- src, template = ARGV
45
- template ||= File.dirname(__FILE__) + '/../website/template.js'
46
- else
47
- puts("Usage: #{File.split($0).last} source.txt [template.js] > output.html")
48
- exit!
49
- end
50
-
51
- template = ERB.new(File.open(template).read)
52
-
53
- title = nil
54
- body = nil
55
- File.open(src) do |fsrc|
56
- title_text = fsrc.readline
57
- body_text = fsrc.read
58
- title = RedCloth.new(title_text).to_html.gsub(%r!<.*?>!,'').strip
59
- body = RedCloth.new(body_text)
60
- end
61
- stat = File.stat(src)
62
- created = stat.ctime
63
- modified = stat.mtime
64
-
65
- $stdout << template.result(binding)
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require 'redcloth'
5
+ require 'syntax/convertors/html'
6
+ require 'erb'
7
+ require 'active_support'
8
+
9
+ version_path = File.join(File.dirname(__FILE__), '..', 'lib', 'composite_primary_keys', 'version.rb')
10
+ require File.expand_path(version_path)
11
+
12
+ version = CompositePrimaryKeys::VERSION::STRING
13
+ download = 'http://rubygems.org/gems/composite_primary_keys'
14
+
15
+ class Fixnum
16
+ def ordinal
17
+ # teens
18
+ return 'th' if (10..19).include?(self % 100)
19
+ # others
20
+ case self % 10
21
+ when 1
22
+ return 'st'
23
+ when 2
24
+ return 'nd'
25
+ when 3
26
+ return 'rd'
27
+ else
28
+ return 'th'
29
+ end
30
+ end
31
+ end
32
+
33
+ class Time
34
+ def pretty
35
+ return "#{mday}#{mday.ordinal} #{strftime('%B')} #{year}"
36
+ end
37
+ end
38
+
39
+ def convert_syntax(syntax, source)
40
+ return Syntax::Convertors::HTML.for_syntax(syntax).convert(source).gsub(%r!^<pre>|</pre>$!,'')
41
+ end
42
+
43
+ if ARGV.length >= 1
44
+ src, template = ARGV
45
+ template ||= File.dirname(__FILE__) + '/../website/template.js'
46
+ else
47
+ puts("Usage: #{File.split($0).last} source.txt [template.js] > output.html")
48
+ exit!
49
+ end
50
+
51
+ template = ERB.new(File.open(template).read)
52
+
53
+ title = nil
54
+ body = nil
55
+ File.open(src) do |fsrc|
56
+ title_text = fsrc.readline
57
+ body_text = fsrc.read
58
+ title = RedCloth.new(title_text).to_html.gsub(%r!<.*?>!,'').strip
59
+ body = RedCloth.new(body_text)
60
+ end
61
+ stat = File.stat(src)
62
+ created = stat.ctime
63
+ modified = stat.mtime
64
+
65
+ $stdout << template.result(binding)
@@ -1,40 +1,40 @@
1
- namespace :mysql do
2
- task :setup do
3
- require 'bundler'
4
- Bundler.require(:default, :mysql)
5
- end
6
-
7
- task :create_database => :setup do
8
- spec = CompositePrimaryKeys::ConnectionSpec['mysql']
9
- ActiveRecord::Base.clear_all_connections!
10
- new_spec = spec.dup
11
- new_spec.delete('database')
12
- connection = ActiveRecord::Base.establish_connection(new_spec)
13
- ActiveRecord::Base.connection.create_database(spec['database'], charset: spec['charset'] || 'utf8mb4')
14
- ActiveRecord::Base.clear_all_connections!
15
- end
16
-
17
- desc 'Build the MySQL test database'
18
- task :build_database => [:create_database] do
19
- path = File.join(PROJECT_ROOT, 'test', 'fixtures', 'db_definitions', 'mysql.sql')
20
- sql = File.open(path, 'rb') do |file|
21
- file.read
22
- end
23
-
24
- spec = CompositePrimaryKeys::ConnectionSpec['mysql']
25
- connection = ActiveRecord::Base.establish_connection(spec)
26
- sql.split(";").each do |statement|
27
- ActiveRecord::Base.connection.execute(statement) unless statement.strip.length == 0
28
- end
29
- end
30
-
31
- desc 'Drop the MySQL test database'
32
- task :drop_database => :setup do
33
- spec = CompositePrimaryKeys::ConnectionSpec['mysql']
34
- connection = ActiveRecord::Base.establish_connection(spec)
35
- ActiveRecord::Base.connection.drop_database(spec['database'])
36
- end
37
-
38
- desc 'Rebuild the MySQL test database'
39
- task :rebuild_database => [:drop_database, :build_database]
40
- end
1
+ namespace :mysql do
2
+ task :setup do
3
+ require 'bundler'
4
+ Bundler.require(:default, :mysql)
5
+ end
6
+
7
+ task :create_database => :setup do
8
+ spec = CompositePrimaryKeys::ConnectionSpec['mysql']
9
+ ActiveRecord::Base.clear_all_connections!
10
+ new_spec = spec.dup
11
+ new_spec.delete('database')
12
+ connection = ActiveRecord::Base.establish_connection(new_spec)
13
+ ActiveRecord::Base.connection.create_database(spec['database'], charset: spec['charset'] || 'utf8mb4')
14
+ ActiveRecord::Base.clear_all_connections!
15
+ end
16
+
17
+ desc 'Build the MySQL test database'
18
+ task :build_database => [:create_database] do
19
+ path = File.join(PROJECT_ROOT, 'test', 'fixtures', 'db_definitions', 'mysql.sql')
20
+ sql = File.open(path, 'rb') do |file|
21
+ file.read
22
+ end
23
+
24
+ spec = CompositePrimaryKeys::ConnectionSpec['mysql']
25
+ connection = ActiveRecord::Base.establish_connection(spec)
26
+ sql.split(";").each do |statement|
27
+ ActiveRecord::Base.connection.execute(statement) unless statement.strip.length == 0
28
+ end
29
+ end
30
+
31
+ desc 'Drop the MySQL test database'
32
+ task :drop_database => :setup do
33
+ spec = CompositePrimaryKeys::ConnectionSpec['mysql']
34
+ connection = ActiveRecord::Base.establish_connection(spec)
35
+ ActiveRecord::Base.connection.drop_database(spec['database'])
36
+ end
37
+
38
+ desc 'Rebuild the MySQL test database'
39
+ task :rebuild_database => [:drop_database, :build_database]
40
+ end
@@ -1,41 +1,41 @@
1
- namespace :oracle do
2
- task :setup do
3
- require 'bundler'
4
- Bundler.require(:default, :oracle)
5
- end
6
-
7
- desc 'Build the Oracle test database'
8
- task :build_database => :setup do
9
- spec = CompositePrimaryKeys::ConnectionSpec['oracle']
10
- ActiveRecord::Base.clear_all_connections!
11
- ActiveRecord::Base.establish_connection(spec)
12
-
13
- schema = File.join(PROJECT_ROOT, 'test', 'fixtures', 'db_definitions', 'oracle.sql')
14
- sql = File.read(schema)
15
-
16
- sql.split(';').each do |command|
17
- ActiveRecord::Base.connection.execute(command) unless command.blank?
18
- end
19
-
20
- ActiveRecord::Base.clear_all_connections!
21
- end
22
-
23
- desc 'Drop the Oracle test database'
24
- task :drop_database => :setup do
25
- spec = CompositePrimaryKeys::ConnectionSpec['oracle']
26
- ActiveRecord::Base.clear_all_connections!
27
- ActiveRecord::Base.establish_connection(spec)
28
-
29
- schema = File.join(PROJECT_ROOT, 'test', 'fixtures', 'db_definitions', 'oracle.drop.sql')
30
- sql = File.read(schema)
31
-
32
- sql.split(';').each do |command|
33
- ActiveRecord::Base.connection.execute(command)
34
- end
35
-
36
- ActiveRecord::Base.clear_all_connections!
37
- end
38
-
39
- desc 'Rebuild the Oracle test database'
40
- task :rebuild_database => [:drop_database, :build_database]
41
- end
1
+ namespace :oracle do
2
+ task :setup do
3
+ require 'bundler'
4
+ Bundler.require(:default, :oracle)
5
+ end
6
+
7
+ desc 'Build the Oracle test database'
8
+ task :build_database => :setup do
9
+ spec = CompositePrimaryKeys::ConnectionSpec['oracle']
10
+ ActiveRecord::Base.clear_all_connections!
11
+ ActiveRecord::Base.establish_connection(spec)
12
+
13
+ schema = File.join(PROJECT_ROOT, 'test', 'fixtures', 'db_definitions', 'oracle.sql')
14
+ sql = File.read(schema)
15
+
16
+ sql.split(';').each do |command|
17
+ ActiveRecord::Base.connection.execute(command) unless command.blank?
18
+ end
19
+
20
+ ActiveRecord::Base.clear_all_connections!
21
+ end
22
+
23
+ desc 'Drop the Oracle test database'
24
+ task :drop_database => :setup do
25
+ spec = CompositePrimaryKeys::ConnectionSpec['oracle']
26
+ ActiveRecord::Base.clear_all_connections!
27
+ ActiveRecord::Base.establish_connection(spec)
28
+
29
+ schema = File.join(PROJECT_ROOT, 'test', 'fixtures', 'db_definitions', 'oracle.drop.sql')
30
+ sql = File.read(schema)
31
+
32
+ sql.split(';').each do |command|
33
+ ActiveRecord::Base.connection.execute(command)
34
+ end
35
+
36
+ ActiveRecord::Base.clear_all_connections!
37
+ end
38
+
39
+ desc 'Rebuild the Oracle test database'
40
+ task :rebuild_database => [:drop_database, :build_database]
41
+ end
@@ -1,39 +1,39 @@
1
- namespace :postgresql do
2
- task :setup do
3
- require 'bundler'
4
- Bundler.require(:default, :postgresql)
5
- end
6
-
7
- task :create_database => :setup do
8
- spec = CompositePrimaryKeys::ConnectionSpec['postgresql']
9
- ActiveRecord::Base.clear_all_connections!
10
- ActiveRecord::Base.establish_connection(spec.dup.merge('database' => 'postgres'))
11
- ActiveRecord::Base.connection.create_database(spec['database'])
12
- ActiveRecord::Base.clear_all_connections!
13
- end
14
-
15
- desc 'Build the Postgresql test database'
16
- task :build_database => :create_database do
17
- spec = CompositePrimaryKeys::ConnectionSpec['postgresql']
18
- ActiveRecord::Base.clear_all_connections!
19
- connection = ActiveRecord::Base.establish_connection(spec)
20
-
21
- schema = File.join(PROJECT_ROOT, 'test', 'fixtures', 'db_definitions', 'postgresql.sql')
22
- sql = File.read(schema)
23
-
24
- ActiveRecord::Base.connection.execute(sql)
25
- ActiveRecord::Base.clear_all_connections!
26
- end
27
-
28
- desc 'Drop the Postgresql test database'
29
- task :drop_database => :setup do
30
- spec = CompositePrimaryKeys::ConnectionSpec['postgresql']
31
- ActiveRecord::Base.clear_all_connections!
32
- connection = ActiveRecord::Base.establish_connection(spec.merge('database' => 'postgres'))
33
- ActiveRecord::Base.connection.drop_database(spec['database'])
34
- ActiveRecord::Base.clear_all_connections!
35
- end
36
-
37
- desc 'Rebuild the PostgreSQL test database'
38
- task :rebuild_database => [:drop_database, :build_database]
1
+ namespace :postgresql do
2
+ task :setup do
3
+ require 'bundler'
4
+ Bundler.require(:default, :postgresql)
5
+ end
6
+
7
+ task :create_database => :setup do
8
+ spec = CompositePrimaryKeys::ConnectionSpec['postgresql']
9
+ ActiveRecord::Base.clear_all_connections!
10
+ ActiveRecord::Base.establish_connection(spec.dup.merge('database' => 'postgres'))
11
+ ActiveRecord::Base.connection.create_database(spec['database'])
12
+ ActiveRecord::Base.clear_all_connections!
13
+ end
14
+
15
+ desc 'Build the Postgresql test database'
16
+ task :build_database => :create_database do
17
+ spec = CompositePrimaryKeys::ConnectionSpec['postgresql']
18
+ ActiveRecord::Base.clear_all_connections!
19
+ connection = ActiveRecord::Base.establish_connection(spec)
20
+
21
+ schema = File.join(PROJECT_ROOT, 'test', 'fixtures', 'db_definitions', 'postgresql.sql')
22
+ sql = File.read(schema)
23
+
24
+ ActiveRecord::Base.connection.execute(sql)
25
+ ActiveRecord::Base.clear_all_connections!
26
+ end
27
+
28
+ desc 'Drop the Postgresql test database'
29
+ task :drop_database => :setup do
30
+ spec = CompositePrimaryKeys::ConnectionSpec['postgresql']
31
+ ActiveRecord::Base.clear_all_connections!
32
+ connection = ActiveRecord::Base.establish_connection(spec.merge('database' => 'postgres'))
33
+ ActiveRecord::Base.connection.drop_database(spec['database'])
34
+ ActiveRecord::Base.clear_all_connections!
35
+ end
36
+
37
+ desc 'Rebuild the PostgreSQL test database'
38
+ task :rebuild_database => [:drop_database, :build_database]
39
39
  end
@@ -1,25 +1,25 @@
1
- namespace :sqlite do
2
- task :setup do
3
- require 'bundler'
4
- Bundler.require(:default, :sqlite)
5
- end
6
-
7
- desc 'Build the sqlite test database'
8
- task :build_database => :setup do
9
- spec = CompositePrimaryKeys::ConnectionSpec['sqlite']
10
- schema = File.join(PROJECT_ROOT, 'test', 'fixtures', 'db_definitions', 'sqlite.sql')
11
- FileUtils.mkdir_p(File.dirname(spec['database']))
12
- cmd = "sqlite3 #{spec['database']} < #{schema}"
13
- puts cmd
14
- sh %{ #{cmd} }
15
- end
16
-
17
- desc 'Drop the sqlite test database'
18
- task :drop_database => :setup do
19
- spec = CompositePrimaryKeys::ConnectionSpec['sqlite']
20
- sh %{ rm -f #{spec['database']} }
21
- end
22
-
23
- desc 'Rebuild the sqlite test database'
24
- task :rebuild_database => [:drop_database, :build_database]
25
- end
1
+ namespace :sqlite do
2
+ task :setup do
3
+ require 'bundler'
4
+ Bundler.require(:default, :sqlite)
5
+ end
6
+
7
+ desc 'Build the sqlite test database'
8
+ task :build_database => :setup do
9
+ spec = CompositePrimaryKeys::ConnectionSpec['sqlite']
10
+ schema = File.join(PROJECT_ROOT, 'test', 'fixtures', 'db_definitions', 'sqlite.sql')
11
+ FileUtils.mkdir_p(File.dirname(spec['database']))
12
+ cmd = "sqlite3 #{spec['database']} < #{schema}"
13
+ puts cmd
14
+ sh %{ #{cmd} }
15
+ end
16
+
17
+ desc 'Drop the sqlite test database'
18
+ task :drop_database => :setup do
19
+ spec = CompositePrimaryKeys::ConnectionSpec['sqlite']
20
+ sh %{ rm -f #{spec['database']} }
21
+ end
22
+
23
+ desc 'Rebuild the sqlite test database'
24
+ task :rebuild_database => [:drop_database, :build_database]
25
+ end
@@ -1,43 +1,43 @@
1
- namespace :sqlserver do
2
- task :setup do
3
- require 'bundler'
4
- Bundler.require(:default, :sqlserver)
5
- end
6
-
7
- task :create_database => :setup do
8
- spec = CompositePrimaryKeys::ConnectionSpec['sqlserver']
9
- database = spec.delete('database')
10
- ActiveRecord::Base.clear_all_connections!
11
-
12
- ActiveRecord::Base.establish_connection(spec)
13
- ActiveRecord::Base.connection.execute("CREATE DATABASE [#{database}]")
14
- ActiveRecord::Base.clear_all_connections!
15
- end
16
-
17
- task :build_database => :create_database do
18
- spec = CompositePrimaryKeys::ConnectionSpec['sqlserver']
19
- ActiveRecord::Base.establish_connection(spec)
20
-
21
- schema = File.join(PROJECT_ROOT, 'test', 'fixtures', 'db_definitions', 'sqlserver.sql')
22
- sql = File.read(schema)
23
- ActiveRecord::Base.connection.execute(sql)
24
- ActiveRecord::Base.clear_all_connections!
25
- end
26
-
27
- desc 'Drop the SQL Server test database'
28
- task :drop_database => :setup do
29
- spec = CompositePrimaryKeys::ConnectionSpec['sqlserver']
30
- ActiveRecord::Base.clear_all_connections!
31
- ActiveRecord::Base.establish_connection(spec)
32
- database = spec.delete('database')
33
- ActiveRecord::Base.connection.execute(<<-SQL)
34
- USE master;
35
- ALTER DATABASE [#{database}] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
36
- DROP DATABASE [#{database}];
37
- SQL
38
- ActiveRecord::Base.clear_all_connections!
39
- end
40
-
41
- desc 'Rebuild the SQL Server test database'
42
- task :rebuild_database => [:drop_database, :build_database]
43
- end
1
+ namespace :sqlserver do
2
+ task :setup do
3
+ require 'bundler'
4
+ Bundler.require(:default, :sqlserver)
5
+ end
6
+
7
+ task :create_database => :setup do
8
+ spec = CompositePrimaryKeys::ConnectionSpec['sqlserver']
9
+ database = spec.delete('database')
10
+ ActiveRecord::Base.clear_all_connections!
11
+
12
+ ActiveRecord::Base.establish_connection(spec)
13
+ ActiveRecord::Base.connection.execute("CREATE DATABASE [#{database}]")
14
+ ActiveRecord::Base.clear_all_connections!
15
+ end
16
+
17
+ task :build_database => :create_database do
18
+ spec = CompositePrimaryKeys::ConnectionSpec['sqlserver']
19
+ ActiveRecord::Base.establish_connection(spec)
20
+
21
+ schema = File.join(PROJECT_ROOT, 'test', 'fixtures', 'db_definitions', 'sqlserver.sql')
22
+ sql = File.read(schema)
23
+ ActiveRecord::Base.connection.execute(sql)
24
+ ActiveRecord::Base.clear_all_connections!
25
+ end
26
+
27
+ desc 'Drop the SQL Server test database'
28
+ task :drop_database => :setup do
29
+ spec = CompositePrimaryKeys::ConnectionSpec['sqlserver']
30
+ ActiveRecord::Base.clear_all_connections!
31
+ ActiveRecord::Base.establish_connection(spec)
32
+ database = spec.delete('database')
33
+ ActiveRecord::Base.connection.execute(<<-SQL)
34
+ USE master;
35
+ ALTER DATABASE [#{database}] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
36
+ DROP DATABASE [#{database}];
37
+ SQL
38
+ ActiveRecord::Base.clear_all_connections!
39
+ end
40
+
41
+ desc 'Rebuild the SQL Server test database'
42
+ task :rebuild_database => [:drop_database, :build_database]
43
+ end
data/tasks/website.rake CHANGED
@@ -1,18 +1,18 @@
1
- desc 'Generate website files'
2
- task :website_generate do
3
- sh %{ ruby scripts/txt2html website/index.txt > website/index.html }
4
- sh %{ ruby scripts/txt2js website/version.txt > website/version.js }
5
- sh %{ ruby scripts/txt2js website/version-raw.txt > website/version-raw.js }
6
- end
7
-
8
- desc 'Upload website files to rubyforge'
9
- task :website_upload do
10
- config = YAML.load(File.read(File.expand_path("~/.rubyforge/user-config.yml")))
11
- host = "#{config["username"]}@rubyforge.org"
12
- remote_dir = "/var/www/gforge-projects/compositekeys/"
13
- local_dir = 'website'
14
- sh %{scp -r #{local_dir}/* #{host}:#{remote_dir}}
15
- end
16
-
17
- desc 'Generate and upload website files'
18
- task :website => [:website_generate, :website_upload]
1
+ desc 'Generate website files'
2
+ task :website_generate do
3
+ sh %{ ruby scripts/txt2html website/index.txt > website/index.html }
4
+ sh %{ ruby scripts/txt2js website/version.txt > website/version.js }
5
+ sh %{ ruby scripts/txt2js website/version-raw.txt > website/version-raw.js }
6
+ end
7
+
8
+ desc 'Upload website files to rubyforge'
9
+ task :website_upload do
10
+ config = YAML.load(File.read(File.expand_path("~/.rubyforge/user-config.yml")))
11
+ host = "#{config["username"]}@rubyforge.org"
12
+ remote_dir = "/var/www/gforge-projects/compositekeys/"
13
+ local_dir = 'website'
14
+ sh %{scp -r #{local_dir}/* #{host}:#{remote_dir}}
15
+ end
16
+
17
+ desc 'Generate and upload website files'
18
+ task :website => [:website_generate, :website_upload]
@@ -1,56 +1,56 @@
1
- = Composite Primary Keys - Testing Readme
2
-
3
- == Testing an adapter
4
-
5
- There are tests available for the following adapters:
6
-
7
- * ibmdb
8
- * mysql
9
- * oracle
10
- * oracle_enhanced
11
- * postgresql
12
- * sqlite3
13
-
14
- To run the tests for one of the adapters follow these steps (using mysql in the example):
15
-
16
- * You will need the following gems:
17
- - rake
18
- - activerecord (3.1.0.rc5 or later)
19
- - mysql (or the adapter of your choice)
20
-
21
- * Put your database connection settings in test/connections/databases.yml.
22
- Look at databases.example.yml for examples.
23
-
24
- mysql:
25
- adapter: mysql
26
- username: root
27
- database: composite_primary_keys_unittest
28
-
29
- * rake -T mysql
30
-
31
- rake mysql:build_database # Build the MySQL test databases
32
- rake mysql:drop_database # Drop the MySQL test databases
33
- rake mysql:rebuild_database # Rebuild the MySQL test databases
34
- rake mysql:test # Run tests using the mysql adapter
35
-
36
- * rake mysql:build_database
37
- * rake mysql:test
38
-
39
- == Running tests individually
40
-
41
- You can specify which test you'd like to run on the command line:
42
-
43
- * rake mysql:test TEST=test/test_equal.rb
44
-
45
- If you want to run closer to the metal you can cd into the test/
46
- directory and run the tests like so:
47
-
48
- * ADAPTER=mysql ruby test_equal.rb
49
-
50
- == Logging
51
-
52
- By default, ActiveRecord's log messages are sent to standard out when
53
- running the tests. If you would prefer to send them to a file, specify
54
- it as the environment variable CPK_LOGFILE:
55
-
56
- * CPK_LOGFILE=cpk_test.log rake mysql:test
1
+ = Composite Primary Keys - Testing Readme
2
+
3
+ == Testing an adapter
4
+
5
+ There are tests available for the following adapters:
6
+
7
+ * ibmdb
8
+ * mysql
9
+ * oracle
10
+ * oracle_enhanced
11
+ * postgresql
12
+ * sqlite3
13
+
14
+ To run the tests for one of the adapters follow these steps (using mysql in the example):
15
+
16
+ * You will need the following gems:
17
+ - rake
18
+ - activerecord (3.1.0.rc5 or later)
19
+ - mysql (or the adapter of your choice)
20
+
21
+ * Put your database connection settings in test/connections/databases.yml.
22
+ Look at databases.example.yml for examples.
23
+
24
+ mysql:
25
+ adapter: mysql
26
+ username: root
27
+ database: composite_primary_keys_unittest
28
+
29
+ * rake -T mysql
30
+
31
+ rake mysql:build_database # Build the MySQL test databases
32
+ rake mysql:drop_database # Drop the MySQL test databases
33
+ rake mysql:rebuild_database # Rebuild the MySQL test databases
34
+ rake mysql:test # Run tests using the mysql adapter
35
+
36
+ * rake mysql:build_database
37
+ * rake mysql:test
38
+
39
+ == Running tests individually
40
+
41
+ You can specify which test you'd like to run on the command line:
42
+
43
+ * rake mysql:test TEST=test/test_equal.rb
44
+
45
+ If you want to run closer to the metal you can cd into the test/
46
+ directory and run the tests like so:
47
+
48
+ * ADAPTER=mysql ruby test_equal.rb
49
+
50
+ == Logging
51
+
52
+ By default, ActiveRecord's log messages are sent to standard out when
53
+ running the tests. If you would prefer to send them to a file, specify
54
+ it as the environment variable CPK_LOGFILE:
55
+
56
+ * CPK_LOGFILE=cpk_test.log rake mysql:test