globe-composite_primary_keys 3.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 (150) hide show
  1. data/History.txt +203 -0
  2. data/Manifest.txt +121 -0
  3. data/README.txt +41 -0
  4. data/README_DB2.txt +33 -0
  5. data/Rakefile +30 -0
  6. data/composite_primary_keys.gemspec +17 -0
  7. data/lib/adapter_helper/base.rb +63 -0
  8. data/lib/adapter_helper/mysql.rb +13 -0
  9. data/lib/adapter_helper/oracle.rb +12 -0
  10. data/lib/adapter_helper/oracle_enhanced.rb +12 -0
  11. data/lib/adapter_helper/postgresql.rb +13 -0
  12. data/lib/adapter_helper/sqlite3.rb +13 -0
  13. data/lib/composite_primary_keys.rb +63 -0
  14. data/lib/composite_primary_keys/association_preload.rb +162 -0
  15. data/lib/composite_primary_keys/associations.rb +159 -0
  16. data/lib/composite_primary_keys/attribute_methods.rb +84 -0
  17. data/lib/composite_primary_keys/base.rb +200 -0
  18. data/lib/composite_primary_keys/composite_arrays.rb +29 -0
  19. data/lib/composite_primary_keys/connection_adapters/abstract_adapter.rb +9 -0
  20. data/lib/composite_primary_keys/connection_adapters/ibm_db_adapter.rb +21 -0
  21. data/lib/composite_primary_keys/connection_adapters/oracle_adapter.rb +15 -0
  22. data/lib/composite_primary_keys/connection_adapters/oracle_enhanced_adapter.rb +17 -0
  23. data/lib/composite_primary_keys/connection_adapters/postgresql_adapter.rb +53 -0
  24. data/lib/composite_primary_keys/connection_adapters/sqlite3_adapter.rb +15 -0
  25. data/lib/composite_primary_keys/finder_methods.rb +68 -0
  26. data/lib/composite_primary_keys/fixtures.rb +8 -0
  27. data/lib/composite_primary_keys/read.rb +25 -0
  28. data/lib/composite_primary_keys/reflection.rb +39 -0
  29. data/lib/composite_primary_keys/relation.rb +31 -0
  30. data/lib/composite_primary_keys/through_association_scope.rb +212 -0
  31. data/lib/composite_primary_keys/validations/uniqueness.rb +118 -0
  32. data/lib/composite_primary_keys/version.rb +9 -0
  33. data/loader.rb +24 -0
  34. data/local/database_connections.rb.sample +12 -0
  35. data/local/paths.rb.sample +2 -0
  36. data/local/tasks.rb.sample +2 -0
  37. data/scripts/console.rb +48 -0
  38. data/scripts/txt2html +67 -0
  39. data/scripts/txt2js +59 -0
  40. data/tasks/activerecord_selection.rake +43 -0
  41. data/tasks/databases.rake +12 -0
  42. data/tasks/databases/mysql.rake +30 -0
  43. data/tasks/databases/oracle.rake +25 -0
  44. data/tasks/databases/postgresql.rake +25 -0
  45. data/tasks/databases/sqlite3.rake +28 -0
  46. data/tasks/deployment.rake +22 -0
  47. data/tasks/local_setup.rake +13 -0
  48. data/tasks/website.rake +18 -0
  49. data/test/README_tests.txt +67 -0
  50. data/test/abstract_unit.rb +103 -0
  51. data/test/connections/native_ibm_db/connection.rb +23 -0
  52. data/test/connections/native_mysql/connection.rb +13 -0
  53. data/test/connections/native_oracle/connection.rb +14 -0
  54. data/test/connections/native_oracle_enhanced/connection.rb +20 -0
  55. data/test/connections/native_postgresql/connection.rb +8 -0
  56. data/test/connections/native_sqlite/connection.rb +9 -0
  57. data/test/fixtures/article.rb +5 -0
  58. data/test/fixtures/article_group.rb +4 -0
  59. data/test/fixtures/article_groups.yml +7 -0
  60. data/test/fixtures/articles.yml +6 -0
  61. data/test/fixtures/comment.rb +6 -0
  62. data/test/fixtures/comments.yml +16 -0
  63. data/test/fixtures/db_definitions/db2-create-tables.sql +113 -0
  64. data/test/fixtures/db_definitions/db2-drop-tables.sql +16 -0
  65. data/test/fixtures/db_definitions/mysql.sql +181 -0
  66. data/test/fixtures/db_definitions/oracle.drop.sql +39 -0
  67. data/test/fixtures/db_definitions/oracle.sql +188 -0
  68. data/test/fixtures/db_definitions/postgresql.sql +206 -0
  69. data/test/fixtures/db_definitions/sqlite.sql +166 -0
  70. data/test/fixtures/department.rb +5 -0
  71. data/test/fixtures/departments.yml +3 -0
  72. data/test/fixtures/dorm.rb +3 -0
  73. data/test/fixtures/dorms.yml +2 -0
  74. data/test/fixtures/employee.rb +4 -0
  75. data/test/fixtures/employees.yml +9 -0
  76. data/test/fixtures/group.rb +3 -0
  77. data/test/fixtures/groups.yml +3 -0
  78. data/test/fixtures/hack.rb +6 -0
  79. data/test/fixtures/hacks.yml +2 -0
  80. data/test/fixtures/kitchen_sink.rb +3 -0
  81. data/test/fixtures/kitchen_sinks.yml +5 -0
  82. data/test/fixtures/membership.rb +10 -0
  83. data/test/fixtures/membership_status.rb +3 -0
  84. data/test/fixtures/membership_statuses.yml +10 -0
  85. data/test/fixtures/memberships.yml +6 -0
  86. data/test/fixtures/product.rb +7 -0
  87. data/test/fixtures/product_tariff.rb +5 -0
  88. data/test/fixtures/product_tariffs.yml +12 -0
  89. data/test/fixtures/products.yml +6 -0
  90. data/test/fixtures/reading.rb +4 -0
  91. data/test/fixtures/readings.yml +10 -0
  92. data/test/fixtures/reference_code.rb +7 -0
  93. data/test/fixtures/reference_codes.yml +28 -0
  94. data/test/fixtures/reference_type.rb +7 -0
  95. data/test/fixtures/reference_types.yml +9 -0
  96. data/test/fixtures/restaurant.rb +6 -0
  97. data/test/fixtures/restaurants.yml +5 -0
  98. data/test/fixtures/restaurants_suburbs.yml +11 -0
  99. data/test/fixtures/room.rb +10 -0
  100. data/test/fixtures/room_assignment.rb +4 -0
  101. data/test/fixtures/room_assignments.yml +4 -0
  102. data/test/fixtures/room_attribute.rb +3 -0
  103. data/test/fixtures/room_attribute_assignment.rb +5 -0
  104. data/test/fixtures/room_attribute_assignments.yml +4 -0
  105. data/test/fixtures/room_attributes.yml +3 -0
  106. data/test/fixtures/rooms.yml +3 -0
  107. data/test/fixtures/seat.rb +5 -0
  108. data/test/fixtures/seats.yml +4 -0
  109. data/test/fixtures/street.rb +3 -0
  110. data/test/fixtures/streets.yml +15 -0
  111. data/test/fixtures/student.rb +4 -0
  112. data/test/fixtures/students.yml +2 -0
  113. data/test/fixtures/suburb.rb +6 -0
  114. data/test/fixtures/suburbs.yml +9 -0
  115. data/test/fixtures/tariff.rb +6 -0
  116. data/test/fixtures/tariffs.yml +13 -0
  117. data/test/fixtures/user.rb +10 -0
  118. data/test/fixtures/users.yml +6 -0
  119. data/test/hash_tricks.rb +34 -0
  120. data/test/plugins/pagination.rb +405 -0
  121. data/test/plugins/pagination_helper.rb +135 -0
  122. data/test/test_associations.rb +178 -0
  123. data/test/test_attribute_methods.rb +22 -0
  124. data/test/test_attributes.rb +80 -0
  125. data/test/test_clone.rb +34 -0
  126. data/test/test_composite_arrays.rb +32 -0
  127. data/test/test_create.rb +68 -0
  128. data/test/test_delete.rb +83 -0
  129. data/test/test_exists.rb +25 -0
  130. data/test/test_find.rb +73 -0
  131. data/test/test_ids.rb +90 -0
  132. data/test/test_miscellaneous.rb +39 -0
  133. data/test/test_pagination.rb +38 -0
  134. data/test/test_polymorphic.rb +32 -0
  135. data/test/test_santiago.rb +27 -0
  136. data/test/test_suite.rb +19 -0
  137. data/test/test_tutorial_example.rb +26 -0
  138. data/test/test_update.rb +40 -0
  139. data/test/test_validations.rb +11 -0
  140. data/website/index.html +195 -0
  141. data/website/index.txt +159 -0
  142. data/website/javascripts/rounded_corners_lite.inc.js +285 -0
  143. data/website/stylesheets/screen.css +126 -0
  144. data/website/template.js +3 -0
  145. data/website/template.rhtml +53 -0
  146. data/website/version-raw.js +3 -0
  147. data/website/version-raw.txt +2 -0
  148. data/website/version.js +4 -0
  149. data/website/version.txt +3 -0
  150. metadata +339 -0
@@ -0,0 +1,9 @@
1
+ module CompositePrimaryKeys
2
+ module VERSION #:nodoc:
3
+ MAJOR = 3
4
+ MINOR = 0
5
+ TINY = 0
6
+ PATCH = 0
7
+ STRING = [MAJOR, MINOR, TINY, PATCH].join('.')
8
+ end
9
+ end
data/loader.rb ADDED
@@ -0,0 +1,24 @@
1
+ # Load local config files in /local
2
+ begin
3
+ local_file_supported = Dir[File.join(PROJECT_ROOT, 'local/*.sample')].map { |path| File.basename(path).sub(".sample","") }
4
+ local_file_supported.each do |file|
5
+ require "local/#{file}"
6
+ end
7
+ rescue LoadError
8
+ puts <<-EOS
9
+ This Gem supports local developer extensions in local/ folder.
10
+ Supported files:
11
+ #{local_file_supported.map { |f| "local/#{f}"}.join(', ')}
12
+
13
+ Setup default sample files:
14
+ rake local:setup
15
+
16
+ Current warning: #{$!}
17
+
18
+ EOS
19
+ end
20
+
21
+
22
+ # Now load Rake tasks from /tasks
23
+ rakefiles = Dir[File.join(File.dirname(__FILE__), "tasks/**/*.rake")]
24
+ rakefiles.each { |rakefile| load File.expand_path(rakefile) }
@@ -0,0 +1,12 @@
1
+ require 'yaml'
2
+
3
+ ENV['cpk_adapters'] = {
4
+ "mysql" => {
5
+ :adapter => "mysql",
6
+ :username => "root",
7
+ },
8
+
9
+ "sqlite3" => {
10
+ :adapter => "sqlite3"
11
+ }
12
+ }.to_yaml
@@ -0,0 +1,2 @@
1
+ # location of folder containing activerecord, railties, etc folders for each Rails gem
2
+ ENV['EDGE_RAILS_DIR'] ||= "/path/to/copy/of/edge/rails"
@@ -0,0 +1,2 @@
1
+ # This file loaded into Rakefile
2
+ # Place any extra development tasks you want here
@@ -0,0 +1,48 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ #
4
+ # if run as script, load the file as library while starting irb
5
+ #
6
+ if __FILE__ == $0
7
+ irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
8
+ ENV['ADAPTER'] = ARGV[0]
9
+ exec "#{irb} -f -r #{$0} --simple-prompt"
10
+ end
11
+
12
+ #
13
+ # check if the given adapter is supported (default: mysql)
14
+ #
15
+ adapters = %w[mysql sqlite oracle oracle_enhanced postgresql ibm_db]
16
+ adapter = ENV['ADAPTER'] || 'mysql'
17
+ unless adapters.include? adapter
18
+ puts "Usage: #{__FILE__} <adapter>"
19
+ puts ''
20
+ puts 'Adapters: '
21
+ puts adapters.map{ |adapter| " #{adapter}" }.join("\n")
22
+ exit 1
23
+ end
24
+
25
+ #
26
+ # load all necessary libraries
27
+ #
28
+ require 'rubygems'
29
+ require 'local/database_connections'
30
+
31
+ $LOAD_PATH.unshift 'lib'
32
+
33
+ begin
34
+ require 'local/paths'
35
+ $LOAD_PATH.unshift "#{ENV['EDGE_RAILS_DIR']}/activerecord/lib" if ENV['EDGE_RAILS_DIR']
36
+ $LOAD_PATH.unshift "#{ENV['EDGE_RAILS_DIR']}/activesupport/lib" if ENV['EDGE_RAILS_DIR']
37
+ rescue
38
+ end
39
+
40
+ require 'active_support'
41
+ require 'active_record'
42
+
43
+ require "test/connections/native_#{adapter}/connection"
44
+ require 'composite_primary_keys'
45
+
46
+ PROJECT_ROOT = File.join(File.dirname(__FILE__), '..')
47
+ Dir[File.join(PROJECT_ROOT,'test/fixtures/*.rb')].each { |model| require model }
48
+
data/scripts/txt2html ADDED
@@ -0,0 +1,67 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require 'redcloth'
5
+ require 'syntax/convertors/html'
6
+ require 'erb'
7
+ require File.dirname(__FILE__) + '/../lib/composite_primary_keys/version.rb'
8
+
9
+ version = CompositePrimaryKeys::VERSION::STRING
10
+ download = 'http://rubyforge.org/projects/compositekeys'
11
+
12
+ class Fixnum
13
+ def ordinal
14
+ # teens
15
+ return 'th' if (10..19).include?(self % 100)
16
+ # others
17
+ case self % 10
18
+ when 1: return 'st'
19
+ when 2: return 'nd'
20
+ when 3: return 'rd'
21
+ else return 'th'
22
+ end
23
+ end
24
+ end
25
+
26
+ class Time
27
+ def pretty
28
+ return "#{mday}#{mday.ordinal} #{strftime('%B')} #{year}"
29
+ end
30
+ end
31
+
32
+ def convert_syntax(syntax, source)
33
+ return Syntax::Convertors::HTML.for_syntax(syntax).convert(source).gsub(%r!^<pre>|</pre>$!,'')
34
+ end
35
+
36
+ if ARGV.length >= 1
37
+ src, template = ARGV
38
+ template ||= File.dirname(__FILE__) + '/../website/template.rhtml'
39
+
40
+ else
41
+ puts("Usage: #{File.split($0).last} source.txt [template.rhtml] > output.html")
42
+ exit!
43
+ end
44
+
45
+ template = ERB.new(File.open(template).read)
46
+
47
+ title = nil
48
+ body = nil
49
+ File.open(src) do |fsrc|
50
+ title_text = fsrc.readline
51
+ body_text = fsrc.read
52
+ syntax_items = []
53
+ body_text.gsub!(%r!<(pre|code)[^>]*?syntax=['"]([^'"]+)[^>]*>(.*?)</\1>!m){
54
+ ident = syntax_items.length
55
+ element, syntax, source = $1, $2, $3
56
+ syntax_items << "<#{element} class=\"syntax\">#{convert_syntax(syntax, source)}</#{element}>"
57
+ "syntax-temp-#{ident}"
58
+ }
59
+ title = RedCloth.new(title_text).to_html.gsub(%r!<.*?>!,'').strip
60
+ body = RedCloth.new(body_text).to_html
61
+ body.gsub!(%r!(?:<pre><code>)?syntax-temp-(\d+)(?:</code></pre>)?!){ syntax_items[$1.to_i] }
62
+ end
63
+ stat = File.stat(src)
64
+ created = stat.ctime
65
+ modified = stat.mtime
66
+
67
+ $stdout << template.result(binding)
data/scripts/txt2js ADDED
@@ -0,0 +1,59 @@
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
+ require File.dirname(__FILE__) + '/../lib/composite_primary_keys/version.rb'
9
+
10
+ version = CompositePrimaryKeys::VERSION::STRING
11
+ download = 'http://rubyforge.org/projects/compositekeys'
12
+
13
+ class Fixnum
14
+ def ordinal
15
+ # teens
16
+ return 'th' if (10..19).include?(self % 100)
17
+ # others
18
+ case self % 10
19
+ when 1: return 'st'
20
+ when 2: return 'nd'
21
+ when 3: return 'rd'
22
+ else return 'th'
23
+ end
24
+ end
25
+ end
26
+
27
+ class Time
28
+ def pretty
29
+ return "#{mday}#{mday.ordinal} #{strftime('%B')} #{year}"
30
+ end
31
+ end
32
+
33
+ def convert_syntax(syntax, source)
34
+ return Syntax::Convertors::HTML.for_syntax(syntax).convert(source).gsub(%r!^<pre>|</pre>$!,'')
35
+ end
36
+
37
+ if ARGV.length >= 1
38
+ src, template = ARGV
39
+ template ||= File.dirname(__FILE__) + '/../website/template.js'
40
+ else
41
+ puts("Usage: #{File.split($0).last} source.txt [template.js] > output.html")
42
+ exit!
43
+ end
44
+
45
+ template = ERB.new(File.open(template).read)
46
+
47
+ title = nil
48
+ body = nil
49
+ File.open(src) do |fsrc|
50
+ title_text = fsrc.readline
51
+ body_text = fsrc.read
52
+ title = RedCloth.new(title_text).to_html.gsub(%r!<.*?>!,'').strip
53
+ body = RedCloth.new(body_text)
54
+ end
55
+ stat = File.stat(src)
56
+ created = stat.ctime
57
+ modified = stat.mtime
58
+
59
+ $stdout << template.result(binding)
@@ -0,0 +1,43 @@
1
+ namespace :ar do
2
+ desc 'Pre-load edge rails ActiveRecord'
3
+ task :edge do
4
+ unless path = ENV['EDGE_RAILS_DIR'] || ENV['EDGE_RAILS']
5
+ puts <<-EOS
6
+
7
+ Need to define env var EDGE_RAILS_DIR or EDGE_RAILS- root of edge rails on your machine.
8
+ i) Get copy of Edge Rails - http://dev.rubyonrails.org
9
+ ii) Set EDGE_RAILS_DIR to this folder in local/paths.rb - see local/paths.rb.sample for example
10
+ or
11
+ a) Set folder from environment or command line (rake ar:edge EDGE_RAILS_DIR=/path/to/rails)
12
+
13
+ EOS
14
+ exit
15
+ end
16
+
17
+ ENV['AR_LOAD_PATH'] = File.join(path, "activerecord/lib")
18
+ end
19
+
20
+ desc 'Pre-load ActiveRecord using VERSION=X.Y.Z, instead of latest'
21
+ task :set do
22
+ unless version = ENV['VERSION']
23
+ puts <<-EOS
24
+ Usage: rake ar:get_version VERSION=1.15.3
25
+ Specify the version number with VERSION=X.Y.Z; and make sure you have that activerecord gem version installed.
26
+
27
+ EOS
28
+ end
29
+ version = nil if version == "" || version == []
30
+ begin
31
+ version ? gem('activerecord', version) : gem('activerecord')
32
+ require 'active_record'
33
+ ENV['AR_LOAD_PATH'] = $:.reverse.find { |path| /activerecord/ =~ path }
34
+ rescue LoadError
35
+ puts <<-EOS
36
+ Missing: Cannot find activerecord #{version} installed.
37
+ Install: gem install activerecord -v #{version}
38
+
39
+ EOS
40
+ exit
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,12 @@
1
+ require 'active_record'
2
+
3
+ # UNTESTED - firebird sqlserver sqlserver_odbc db2 sybase openbase
4
+ for adapter in %w( mysql sqlite oracle oracle_enhanced postgresql ibm_db )
5
+ Rake::TestTask.new("test_#{adapter}") { |t|
6
+ t.libs << "test" << "test/connections/native_#{adapter}"
7
+ t.pattern = "test/test_*.rb"
8
+ t.verbose = true
9
+ }
10
+ end
11
+
12
+ SCHEMA_PATH = File.join(PROJECT_ROOT, *%w(test fixtures db_definitions))
@@ -0,0 +1,30 @@
1
+ namespace :mysql do
2
+ desc 'Build the MySQL test databases'
3
+ task :build_databases => :load_connection do
4
+ puts File.join(SCHEMA_PATH, 'mysql.sql')
5
+ options_str = ENV['cpk_adapter_options_str']
6
+ # creates something like "-u#{username} -p#{password} -S#{socket}"
7
+ sh %{ mysqladmin #{options_str} create "#{GEM_NAME}_unittest" }
8
+ sh %{ mysql #{options_str} "#{GEM_NAME}_unittest" < #{File.join(SCHEMA_PATH, 'mysql.sql')} }
9
+ end
10
+
11
+ desc 'Drop the MySQL test databases'
12
+ task :drop_databases => :load_connection do
13
+ options_str = ENV['cpk_adapter_options_str']
14
+ sh %{ mysqladmin #{options_str} -f drop "#{GEM_NAME}_unittest" }
15
+ end
16
+
17
+ desc 'Rebuild the MySQL test databases'
18
+ task :rebuild_databases => [:drop_databases, :build_databases]
19
+
20
+ task :load_connection do
21
+ require File.join(PROJECT_ROOT, %w[lib adapter_helper mysql])
22
+ spec = AdapterHelper::MySQL.load_connection_from_env
23
+ options = {}
24
+ options['u'] = spec[:username] if spec[:username]
25
+ options['p'] = spec[:password] if spec[:password]
26
+ options['S'] = spec[:sock] if spec[:sock]
27
+ options_str = options.map { |key, value| "-#{key}#{value}" }.join(" ")
28
+ ENV['cpk_adapter_options_str'] = options_str
29
+ end
30
+ end
@@ -0,0 +1,25 @@
1
+ namespace :oracle do
2
+ desc 'Build the Oracle test databases'
3
+ task :build_databases => :load_connection do
4
+ puts File.join(SCHEMA_PATH, 'oracle.sql')
5
+ options_str = ENV['cpk_adapter_options_str']
6
+ sh %( sqlplus #{options_str} < #{File.join(SCHEMA_PATH, 'oracle.sql')} )
7
+ end
8
+
9
+ desc 'Drop the Oracle test databases'
10
+ task :drop_databases => :load_connection do
11
+ puts File.join(SCHEMA_PATH, 'oracle.drop.sql')
12
+ options_str = ENV['cpk_adapter_options_str']
13
+ sh %( sqlplus #{options_str} < #{File.join(SCHEMA_PATH, 'oracle.drop.sql')} )
14
+ end
15
+
16
+ desc 'Rebuild the Oracle test databases'
17
+ task :rebuild_databases => [:drop_databases, :build_databases]
18
+
19
+ task :load_connection do
20
+ require File.join(PROJECT_ROOT, %w[lib adapter_helper oracle])
21
+ spec = AdapterHelper::Oracle.load_connection_from_env
22
+ ENV['cpk_adapter_options_str'] = "#{spec[:username]}/#{spec[:password]}@#{spec[:host]}"
23
+ end
24
+
25
+ end
@@ -0,0 +1,25 @@
1
+ namespace :postgresql do
2
+ desc 'Build the PostgreSQL test databases'
3
+ task :build_databases => :load_connection do
4
+ sh %{ createdb #{ENV['cpk_adapter_options_str']} "#{GEM_NAME}_unittest" }
5
+ sh %{ psql #{ENV['cpk_adapter_options_str']} "#{GEM_NAME}_unittest" -f #{File.join(SCHEMA_PATH, 'postgresql.sql')} }
6
+ end
7
+
8
+ desc 'Drop the PostgreSQL test databases'
9
+ task :drop_databases => :load_connection do
10
+ sh %{ dropdb "#{GEM_NAME}_unittest" }
11
+ end
12
+
13
+ desc 'Rebuild the PostgreSQL test databases'
14
+ task :rebuild_databases => [:drop_databases, :build_databases]
15
+
16
+ task :load_connection do
17
+ require File.join(PROJECT_ROOT, %w[lib adapter_helper postgresql])
18
+ spec = AdapterHelper::Postgresql.load_connection_from_env
19
+ options = {}
20
+ options['U'] = spec[:username] if spec[:username]
21
+ options['p'] = spec[:password] if spec[:password]
22
+ options_str = options.map { |key, value| "-#{key} #{value}" }.join(" ")
23
+ ENV['cpk_adapter_options_str'] = options_str
24
+ end
25
+ end
@@ -0,0 +1,28 @@
1
+ namespace :sqlite3 do
2
+ desc 'Build the sqlite test databases'
3
+ task :build_databases => :load_connection do
4
+ file = File.join(SCHEMA_PATH, 'sqlite.sql')
5
+ dbfile = File.join(PROJECT_ROOT, ENV['cpk_adapter_options_str'])
6
+ cmd = "mkdir -p #{File.dirname(dbfile)}"
7
+ puts cmd
8
+ sh %{ #{cmd} }
9
+ cmd = "sqlite3 #{dbfile} < #{file}"
10
+ puts cmd
11
+ sh %{ #{cmd} }
12
+ end
13
+
14
+ desc 'Drop the sqlite test databases'
15
+ task :drop_databases => :load_connection do
16
+ dbfile = ENV['cpk_adapter_options_str']
17
+ sh %{ rm -f #{dbfile} }
18
+ end
19
+
20
+ desc 'Rebuild the sqlite test databases'
21
+ task :rebuild_databases => [:drop_databases, :build_databases]
22
+
23
+ task :load_connection do
24
+ require File.join(PROJECT_ROOT, %w[lib adapter_helper sqlite3])
25
+ spec = AdapterHelper::Sqlite3.load_connection_from_env
26
+ ENV['cpk_adapter_options_str'] = spec[:dbfile]
27
+ end
28
+ end
@@ -0,0 +1,22 @@
1
+ desc 'Release the website and new gem version'
2
+ task :deploy => [:check_version, :website, :release] do
3
+ puts "Remember to create SVN tag:"
4
+ puts "svn copy svn+ssh://#{RUBYFORGE_USERNAME}@rubyforge.org/var/svn/#{PATH}/trunk " +
5
+ "svn+ssh://#{RUBYFORGE_USERNAME}@rubyforge.org/var/svn/#{PATH}/tags/REL-#{VERS} "
6
+ puts "Suggested comment:"
7
+ puts "Tagging release #{CHANGES}"
8
+ end
9
+
10
+ desc 'Runs tasks website_generate and install_gem as a local deployment of the gem'
11
+ task :local_deploy => [:website_generate, :install_gem]
12
+
13
+ task :check_version do
14
+ unless ENV['VERSION']
15
+ puts 'Must pass a VERSION=x.y.z release version'
16
+ exit
17
+ end
18
+ unless ENV['VERSION'] == VERS
19
+ puts "Please update your version.rb to match the release version, currently #{VERS}"
20
+ exit
21
+ end
22
+ end
@@ -0,0 +1,13 @@
1
+ namespace :local do
2
+ desc 'Copies over the same local files ready for editing'
3
+ task :setup do
4
+ sample_files = Dir[File.join(PROJECT_ROOT, "local/*.rb.sample")]
5
+ sample_files.each do |sample_file|
6
+ file = sample_file.sub(".sample","")
7
+ unless File.exists?(file)
8
+ puts "Copying #{sample_file} -> #{file}"
9
+ sh %{ cp #{sample_file} #{file} }
10
+ end
11
+ end
12
+ end
13
+ end