Freezing composite primary key so that we can apply TomH's patch to it, and that way Potlatch will work in Rails mode without a problem. Please test.

This commit is contained in:
Shaun McDonald 2008-11-15 01:11:27 +00:00
parent 0a57413d3e
commit d74e2196a0
122 changed files with 6081 additions and 1 deletions

View file

@ -0,0 +1,43 @@
namespace :ar do
desc 'Pre-load edge rails ActiveRecord'
task :edge do
unless path = ENV['EDGE_RAILS_DIR'] || ENV['EDGE_RAILS']
puts <<-EOS
Need to define env var EDGE_RAILS_DIR or EDGE_RAILS- root of edge rails on your machine.
i) Get copy of Edge Rails - http://dev.rubyonrails.org
ii) Set EDGE_RAILS_DIR to this folder in local/paths.rb - see local/paths.rb.sample for example
or
a) Set folder from environment or command line (rake ar:edge EDGE_RAILS_DIR=/path/to/rails)
EOS
exit
end
ENV['AR_LOAD_PATH'] = File.join(path, "activerecord/lib")
end
desc 'Pre-load ActiveRecord using VERSION=X.Y.Z, instead of latest'
task :set do
unless version = ENV['VERSION']
puts <<-EOS
Usage: rake ar:get_version VERSION=1.15.3
Specify the version number with VERSION=X.Y.Z; and make sure you have that activerecord gem version installed.
EOS
end
version = nil if version == "" || version == []
begin
version ? gem('activerecord', version) : gem('activerecord')
require 'active_record'
ENV['AR_LOAD_PATH'] = $:.reverse.find { |path| /activerecord/ =~ path }
rescue LoadError
puts <<-EOS
Missing: Cannot find activerecord #{version} installed.
Install: gem install activerecord -v #{version}
EOS
exit
end
end
end

View file

@ -0,0 +1,12 @@
require 'active_record'
# UNTESTED - firebird sqlserver sqlserver_odbc db2 sybase openbase
for adapter in %w( mysql sqlite oracle oracle_enhanced postgresql ibm_db )
Rake::TestTask.new("test_#{adapter}") { |t|
t.libs << "test" << "test/connections/native_#{adapter}"
t.pattern = "test/test_*.rb"
t.verbose = true
}
end
SCHEMA_PATH = File.join(PROJECT_ROOT, *%w(test fixtures db_definitions))

View file

@ -0,0 +1,30 @@
namespace :mysql do
desc 'Build the MySQL test databases'
task :build_databases => :load_connection do
puts File.join(SCHEMA_PATH, 'mysql.sql')
options_str = ENV['cpk_adapter_options_str']
# creates something like "-u#{username} -p#{password} -S#{socket}"
sh %{ mysqladmin #{options_str} create "#{GEM_NAME}_unittest" }
sh %{ mysql #{options_str} "#{GEM_NAME}_unittest" < #{File.join(SCHEMA_PATH, 'mysql.sql')} }
end
desc 'Drop the MySQL test databases'
task :drop_databases => :load_connection do
options_str = ENV['cpk_adapter_options_str']
sh %{ mysqladmin #{options_str} -f drop "#{GEM_NAME}_unittest" }
end
desc 'Rebuild the MySQL test databases'
task :rebuild_databases => [:drop_databases, :build_databases]
task :load_connection do
require File.join(PROJECT_ROOT, %w[lib adapter_helper mysql])
spec = AdapterHelper::MySQL.load_connection_from_env
options = {}
options['u'] = spec[:username] if spec[:username]
options['p'] = spec[:password] if spec[:password]
options['S'] = spec[:sock] if spec[:sock]
options_str = options.map { |key, value| "-#{key}#{value}" }.join(" ")
ENV['cpk_adapter_options_str'] = options_str
end
end

View file

@ -0,0 +1,25 @@
namespace :oracle do
desc 'Build the Oracle test databases'
task :build_databases => :load_connection do
puts File.join(SCHEMA_PATH, 'oracle.sql')
options_str = ENV['cpk_adapter_options_str']
sh %( sqlplus #{options_str} < #{File.join(SCHEMA_PATH, 'oracle.sql')} )
end
desc 'Drop the Oracle test databases'
task :drop_databases => :load_connection do
puts File.join(SCHEMA_PATH, 'oracle.drop.sql')
options_str = ENV['cpk_adapter_options_str']
sh %( sqlplus #{options_str} < #{File.join(SCHEMA_PATH, 'oracle.drop.sql')} )
end
desc 'Rebuild the Oracle test databases'
task :rebuild_databases => [:drop_databases, :build_databases]
task :load_connection do
require File.join(PROJECT_ROOT, %w[lib adapter_helper oracle])
spec = AdapterHelper::Oracle.load_connection_from_env
ENV['cpk_adapter_options_str'] = "#{spec[:username]}/#{spec[:password]}@#{spec[:host]}"
end
end

View file

@ -0,0 +1,26 @@
namespace :postgresql do
desc 'Build the PostgreSQL test databases'
task :build_databases => :load_connection do
sh %{ createdb "#{GEM_NAME}_unittest" }
sh %{ psql "#{GEM_NAME}_unittest" -f #{File.join(SCHEMA_PATH, 'postgresql.sql')} }
end
desc 'Drop the PostgreSQL test databases'
task :drop_databases => :load_connection do
sh %{ dropdb "#{GEM_NAME}_unittest" }
end
desc 'Rebuild the PostgreSQL test databases'
task :rebuild_databases => [:drop_databases, :build_databases]
task :load_connection do
require File.join(PROJECT_ROOT, %w[lib adapter_helper postgresql])
spec = AdapterHelper::Postgresql.load_connection_from_env
options = {}
options['u'] = spec[:username] if spec[:username]
options['p'] = spec[:password] if spec[:password]
options_str = options.map { |key, value| "-#{key}#{value}" }.join(" ")
ENV['cpk_adapter_options_str'] = options_str
end
end

View file

@ -0,0 +1,28 @@
namespace :sqlite3 do
desc 'Build the sqlite test databases'
task :build_databases => :load_connection do
file = File.join(SCHEMA_PATH, 'sqlite.sql')
dbfile = File.join(PROJECT_ROOT, ENV['cpk_adapter_options_str'])
cmd = "mkdir -p #{File.dirname(dbfile)}"
puts cmd
sh %{ #{cmd} }
cmd = "sqlite3 #{dbfile} < #{file}"
puts cmd
sh %{ #{cmd} }
end
desc 'Drop the sqlite test databases'
task :drop_databases => :load_connection do
dbfile = ENV['cpk_adapter_options_str']
sh %{ rm -f #{dbfile} }
end
desc 'Rebuild the sqlite test databases'
task :rebuild_databases => [:drop_databases, :build_databases]
task :load_connection do
require File.join(PROJECT_ROOT, %w[lib adapter_helper sqlite3])
spec = AdapterHelper::Sqlite3.load_connection_from_env
ENV['cpk_adapter_options_str'] = spec[:dbfile]
end
end

View file

@ -0,0 +1,22 @@
desc 'Release the website and new gem version'
task :deploy => [:check_version, :website, :release] do
puts "Remember to create SVN tag:"
puts "svn copy svn+ssh://#{RUBYFORGE_USERNAME}@rubyforge.org/var/svn/#{PATH}/trunk " +
"svn+ssh://#{RUBYFORGE_USERNAME}@rubyforge.org/var/svn/#{PATH}/tags/REL-#{VERS} "
puts "Suggested comment:"
puts "Tagging release #{CHANGES}"
end
desc 'Runs tasks website_generate and install_gem as a local deployment of the gem'
task :local_deploy => [:website_generate, :install_gem]
task :check_version do
unless ENV['VERSION']
puts 'Must pass a VERSION=x.y.z release version'
exit
end
unless ENV['VERSION'] == VERS
puts "Please update your version.rb to match the release version, currently #{VERS}"
exit
end
end

View file

@ -0,0 +1,13 @@
namespace :local do
desc 'Copies over the same local files ready for editing'
task :setup do
sample_files = Dir[File.join(PROJECT_ROOT, "local/*.rb.sample")]
sample_files.each do |sample_file|
file = sample_file.sub(".sample","")
unless File.exists?(file)
puts "Copying #{sample_file} -> #{file}"
sh %{ cp #{sample_file} #{file} }
end
end
end
end

View file

@ -0,0 +1,18 @@
desc 'Generate website files'
task :website_generate do
sh %{ ruby scripts/txt2html website/index.txt > website/index.html }
sh %{ ruby scripts/txt2js website/version.txt > website/version.js }
sh %{ ruby scripts/txt2js website/version-raw.txt > website/version-raw.js }
end
desc 'Upload website files to rubyforge'
task :website_upload do
config = YAML.load(File.read(File.expand_path("~/.rubyforge/user-config.yml")))
host = "#{config["username"]}@rubyforge.org"
remote_dir = "/var/www/gforge-projects/#{RUBYFORGE_PROJECT}/"
local_dir = 'website'
sh %{rsync -aCv #{local_dir}/ #{host}:#{remote_dir}}
end
desc 'Generate and upload website files'
task :website => [:website_generate, :website_upload, :publish_docs]