Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Ticket #8850: namespaced_db_build_tasks.patch

File namespaced_db_build_tasks.patch, 6.5 kB (added by nicwilliams, 2 years ago)
  • Rakefile

    old new  
    3434    t.pattern = "test/**/*_test{,_#{adapter_short}}.rb" 
    3535    t.verbose = true 
    3636  } 
     37  namespace adapter do 
     38    task :test => "test_#{adapter}" 
     39  end 
    3740end 
    3841 
    3942SCHEMA_PATH = File.join(File.dirname(__FILE__), *%w(test fixtures db_definitions)) 
    4043 
    41 desc 'Build the MySQL test databases' 
    42 task :build_mysql_databases do  
    43   %x( mysqladmin  create activerecord_unittest ) 
    44   %x( mysqladmin  create activerecord_unittest2 ) 
    45   %x( mysql -e "grant all on activerecord_unittest.* to rails@localhost" ) 
    46   %x( mysql -e "grant all on activerecord_unittest2.* to rails@localhost" ) 
    47   %x( mysql  activerecord_unittest < #{File.join(SCHEMA_PATH, 'mysql.sql')} ) 
    48   %x( mysql  activerecord_unittest < #{File.join(SCHEMA_PATH, 'mysql2.sql')} ) 
    49 end 
     44namespace :mysql do 
     45  desc 'Build the MySQL test databases' 
     46  task :build_databases do  
     47    %x( mysqladmin  create activerecord_unittest ) 
     48    %x( mysqladmin  create activerecord_unittest2 ) 
     49    %x( mysql -e "grant all on activerecord_unittest.* to rails@localhost" ) 
     50    %x( mysql -e "grant all on activerecord_unittest2.* to rails@localhost" ) 
     51    %x( mysql  activerecord_unittest < #{File.join(SCHEMA_PATH, 'mysql.sql')} ) 
     52    %x( mysql  activerecord_unittest < #{File.join(SCHEMA_PATH, 'mysql2.sql')} ) 
     53  end 
    5054 
    51 desc 'Drop the MySQL test databases' 
    52 task :drop_mysql_databases do  
    53   %x( mysqladmin -f drop activerecord_unittest ) 
    54   %x( mysqladmin -f drop activerecord_unittest2 ) 
     55  desc 'Drop the MySQL test databases' 
     56  task :drop_databases do  
     57    %x( mysqladmin -f drop activerecord_unittest ) 
     58    %x( mysqladmin -f drop activerecord_unittest2 ) 
     59  end 
     60   
     61  desc 'Rebuild the MySQL test databases' 
     62  task :rebuild_databases => [:drop_databases, :build_databases] 
    5563end 
    5664 
    57 desc 'Rebuild the MySQL test databases' 
     65task :build_mysql_databases => 'mysql:build_databases' 
     66task :drop_mysql_databases  => 'mysql:drop_databases' 
    5867task :rebuild_mysql_databases => [:drop_mysql_databases, :build_mysql_databases] 
    5968 
    60 desc 'Build the PostgreSQL test databases' 
    61 task :build_postgresql_databases do  
    62   %x( createdb -U postgres activerecord_unittest ) 
    63   %x( createdb -U postgres activerecord_unittest2 ) 
    64   %x( psql activerecord_unittest -f #{File.join(SCHEMA_PATH, 'postgresql.sql')} postgres ) 
    65   %x( psql activerecord_unittest2 -f #{File.join(SCHEMA_PATH, 'postgresql2.sql')}  postgres ) 
    66 end 
     69namespace :postgresql do 
     70  desc 'Build the PostgreSQL test databases' 
     71  task :build_databases do  
     72    %x( createdb -U postgres activerecord_unittest ) 
     73    %x( createdb -U postgres activerecord_unittest2 ) 
     74    %x( psql activerecord_unittest -f #{File.join(SCHEMA_PATH, 'postgresql.sql')} postgres ) 
     75    %x( psql activerecord_unittest2 -f #{File.join(SCHEMA_PATH, 'postgresql2.sql')}  postgres ) 
     76  end 
    6777 
    68 desc 'Drop the PostgreSQL test databases' 
    69 task :drop_postgresql_databases do  
    70   %x( dropdb -U postgres activerecord_unittest ) 
    71   %x( dropdb -U postgres activerecord_unittest2 ) 
     78  desc 'Drop the PostgreSQL test databases' 
     79  task :drop_databases do  
     80    %x( dropdb -U postgres activerecord_unittest ) 
     81    %x( dropdb -U postgres activerecord_unittest2 ) 
     82  end 
     83 
     84  desc 'Rebuild the PostgreSQL test databases' 
     85  task :rebuild_databases => [:drop_databases, :build_databases] 
    7286end 
    7387 
    74 desc 'Rebuild the PostgreSQL test databases' 
     88task :build_postgresql_databases => 'postgresql:build_databases' 
     89task :drop_postgresql_databases  => 'postgresql:drop_databases' 
    7590task :rebuild_postgresql_databases => [:drop_postgresql_databases, :build_postgresql_databases] 
    7691 
    77 desc 'Build the FrontBase test databases' 
    78 task :build_frontbase_databases => :rebuild_frontbase_databases  
     92namespace :frontbase do 
     93  desc 'Build the FrontBase test databases' 
     94  task :build_databases => :rebuild_databases  
    7995 
    80 desc 'Rebuild the FrontBase test databases' 
    81 task :rebuild_frontbase_databases do 
    82   build_frontbase_database = Proc.new do |db_name, sql_definition_file| 
    83     %( 
    84       STOP DATABASE #{db_name}; 
    85       DELETE DATABASE #{db_name}; 
    86       CREATE DATABASE #{db_name}; 
     96  desc 'Rebuild the FrontBase test databases' 
     97  task :rebuild_databases do 
     98    build_frontbase_database = Proc.new do |db_name, sql_definition_file| 
     99      %( 
     100        STOP DATABASE #{db_name}; 
     101        DELETE DATABASE #{db_name}; 
     102        CREATE DATABASE #{db_name}; 
    87103 
    88       CONNECT TO #{db_name} AS SESSION_NAME USER _SYSTEM; 
    89       SET COMMIT FALSE; 
     104        CONNECT TO #{db_name} AS SESSION_NAME USER _SYSTEM; 
     105        SET COMMIT FALSE; 
    90106 
    91       CREATE USER RAILS; 
    92       CREATE SCHEMA RAILS AUTHORIZATION RAILS; 
    93       COMMIT; 
     107        CREATE USER RAILS; 
     108        CREATE SCHEMA RAILS AUTHORIZATION RAILS; 
     109        COMMIT; 
    94110 
    95       SET SESSION AUTHORIZATION RAILS; 
    96       SCRIPT '#{sql_definition_file}'; 
     111        SET SESSION AUTHORIZATION RAILS; 
     112        SCRIPT '#{sql_definition_file}'; 
    97113 
    98       COMMIT; 
     114        COMMIT; 
    99115 
    100       DISCONNECT ALL;  
    101     ) 
     116        DISCONNECT ALL;  
     117      ) 
     118    end 
     119    create_activerecord_unittest  = build_frontbase_database['activerecord_unittest',  File.join(SCHEMA_PATH, 'frontbase.sql')] 
     120    create_activerecord_unittest2 = build_frontbase_database['activerecord_unittest2', File.join(SCHEMA_PATH, 'frontbase2.sql')] 
     121    execute_frontbase_sql = Proc.new do |sql|  
     122      system(<<-SHELL) 
     123      /Library/FrontBase/bin/sql92 <<-SQL 
     124      #{sql} 
     125      SQL 
     126      SHELL 
     127    end 
     128    execute_frontbase_sql[create_activerecord_unittest] 
     129    execute_frontbase_sql[create_activerecord_unittest2] 
    102130  end 
    103   create_activerecord_unittest  = build_frontbase_database['activerecord_unittest',  File.join(SCHEMA_PATH, 'frontbase.sql')] 
    104   create_activerecord_unittest2 = build_frontbase_database['activerecord_unittest2', File.join(SCHEMA_PATH, 'frontbase2.sql')] 
    105   execute_frontbase_sql = Proc.new do |sql|  
    106     system(<<-SHELL) 
    107     /Library/FrontBase/bin/sql92 <<-SQL 
    108     #{sql} 
    109     SQL 
    110     SHELL 
    111   end 
    112   execute_frontbase_sql[create_activerecord_unittest] 
    113   execute_frontbase_sql[create_activerecord_unittest2] 
    114131end 
    115132 
     133task :build_frontbase_databases => 'mysql:build_databases' 
     134task :drop_frontbase_databases  => 'mysql:drop_databases' 
     135task :rebuild_frontbase_databases => [:drop_frontbase_databases, :build_frontbase_databases] 
     136 
    116137# Generate the RDoc documentation 
    117138 
    118139Rake::RDocTask.new { |rdoc| 
  • lib/activerecord.rb

    old new