typo
上传用户:netsea168
上传日期:2022-07-22
资源大小:4652k
文件大小:3k
源码类别:

Ajax

开发平台:

Others

  1. #!/usr/bin/env ruby
  2. require 'rubygems'
  3. require 'rails-installer'
  4.     class Sqlite < RailsInstaller::Database
  5.       # The name of the sqlite database file
  6.       def self.db_file(installer)
  7.         File.join(installer.install_directory,'db','database.sqlite')
  8.       end
  9.       
  10.       def self.yml(installer)
  11.         %q{
  12.         login: &login
  13.           adapter: sqlite3
  14.           database: db/database.sqlite
  15.         development:
  16.           <<: *login
  17.         production:
  18.           <<: *login
  19.         test:
  20.           database: ":memory"
  21.           <<: *login
  22.         }        
  23.       end
  24.     end
  25.     
  26.     class Sqlite3 < RailsInstaller::Database
  27.       # The name of the sqlite database file
  28.       def self.db_file(installer)
  29.         File.join(installer.install_directory,'db','database.sqlite')
  30.       end
  31.       
  32.       def self.yml(installer)
  33.         %q{
  34.         login: &login
  35.           adapter: sqlite3
  36.           database: db/database.sqlite
  37.         development:
  38.           <<: *login
  39.         production:
  40.           <<: *login
  41.         test:
  42.           database: ":memory"
  43.           <<: *login
  44.         }        
  45.       end
  46.     end
  47. class TypoInstaller < RailsInstaller
  48.   application_name 'typo'
  49.   support_location 'the Typo mailing list'
  50.   
  51.   def pre_migrate_database
  52.     old_schema_version = get_schema_version
  53.     new_schema_version = File.read(File.join(source_directory,'db','schema_version')).to_i
  54.     
  55.     return unless old_schema_version > 0
  56.      
  57.     # Are we downgrading?
  58.     if old_schema_version > new_schema_version
  59.       message "Downgrading schema from #{old_schema_version} to #{new_schema_version}"
  60.       
  61.       in_directory install_directory do
  62.         unless system("rake -s db:migrate VERSION=#{new_schema_version}")
  63.           raise InstallFailed, "Downgrade migrating from #{old_schema_version} to #{new_schema_version} failed."
  64.         end
  65.       end
  66.     end
  67.   end
  68.   # Migrate the database
  69.   def migrate
  70.     message "Migrating #{@@app_name.capitalize}'s database to newest release"
  71.     
  72.     in_directory install_directory do
  73.       unless system("rake -s gems:install")
  74.         raise InstallFailed, "Missing dependencies"
  75.       end
  76.       
  77.       unless system("rake -s db:migrate")
  78.         raise InstallFailed, "Migration failed"
  79.       end
  80.     end
  81.   end
  82.   
  83.   
  84.   def install_post_hook
  85.     sweep_cache
  86.   end
  87.   # Sweep the cache
  88.   def sweep_cache
  89.     in_directory install_directory do
  90.       message "Cleaning out #{@@app_name.capitalize}'s cache"
  91.       status = system_silently("rake -s sweep_cache")
  92.     end
  93.   end
  94. end
  95. class SweepCache < RailsInstaller::Command
  96.   help "Sweep Typo's cache"
  97.   
  98.   def self.command(installer, *args)
  99.     installer.sweep_cache
  100.   end
  101. end
  102. # Installer program
  103. directory = ARGV[1]
  104. typo = TypoInstaller.new(directory)
  105. typo.message_proc = Proc.new do |msg|
  106.   STDERR.puts " #{msg}"
  107. end
  108. typo.execute_command(*ARGV)