Module: TokyoMetro::Rake::Rails::Deploy::Heroku

Defined in:
lib/tokyo_metro/rake/rails/deploy/heroku.rb

Defined Under Namespace

Modules: Csv Classes: FileInfo, MigrationFile, SchemaFile

Class Method Summary collapse

Class Method Details

.make_migration_fileObject



13
14
15
16
17
18
19
20
21
22
23
# File 'lib/tokyo_metro/rake/rails/deploy/heroku.rb', line 13

def self.make_migration_file
  system( "rails g migration HerokuInitializer" )

  raise "Error" unless ::File.exist?( schema_file )
  raise "Error" unless migrate_files.length == 1

  schema_file_active_record_definition_body = SchemaFile.new( schema_file ).active_record_definition_body
  # puts schema_file_active_record_definition_body

  MigrationFile.new( migrate_files.first ).set_body( schema_file_active_record_definition_body )
end

.migrate_filesObject



31
32
33
# File 'lib/tokyo_metro/rake/rails/deploy/heroku.rb', line 31

def migrate_files
  ::Dir.glob( "#{ ::Rails.root }/db/migrate/**.rb" )
end

.migrate_files_except_for_heroku_initializerObject



35
36
37
# File 'lib/tokyo_metro/rake/rails/deploy/heroku.rb', line 35

def migrate_files_except_for_heroku_initializer
  migrate_files.delete_if { | filename | /heroku_initializer\.rb\Z/ === filename }
end

.migrate_old_filesObject



39
40
41
# File 'lib/tokyo_metro/rake/rails/deploy/heroku.rb', line 39

def migrate_old_files
  ::Dir.glob( "#{ ::Rails.root }/db/migrate_old/**.rb" )
end

.move_heroku_migration_files_to_old_dirObject



25
26
27
# File 'lib/tokyo_metro/rake/rails/deploy/heroku.rb', line 25

def self.move_heroku_migration_files_to_old_dir
  move_migration_files( to_heroku_old_dir: true )
end

.move_migration_files(to_old_dir: false, to_heroku_old_dir: false) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
# File 'lib/tokyo_metro/rake/rails/deploy/heroku.rb', line 47

def move_migration_files( to_old_dir: false , to_heroku_old_dir: false )
  migrate_files.each do | filename |
    if to_heroku_old_dir and /heroku_initializer\.rb\Z/ === filename
      new_filename = filename.gsub( /migrate(?=\/.+\.rb\Z)/ , "migrate_heroku_old" )
    elsif to_old_dir
      new_filename = filename.gsub( /migrate(?=\/.+\.rb\Z)/ , "migrate_old" )
    end
    ::FileUtils.mkdir_p( ::File.dirname( new_filename ) )
    ::File.rename( filename , new_filename )
  end
end

.move_migration_files_to_old_dirObject



9
10
11
# File 'lib/tokyo_metro/rake/rails/deploy/heroku.rb', line 9

def self.move_migration_files_to_old_dir
  move_migration_files( to_old_dir: true , to_heroku_old_dir: true )
end

.process_migration_filesObject



3
4
5
6
7
# File 'lib/tokyo_metro/rake/rails/deploy/heroku.rb', line 3

def self.process_migration_files
  if migrate_files_except_for_heroku_initializer.present?
    ::Rake::Task[ "db:migrate" ].invoke
  end
end

.schema_fileObject



43
44
45
# File 'lib/tokyo_metro/rake/rails/deploy/heroku.rb', line 43

def schema_file
  "#{ ::Rails.root }/db/schema.rb"
end