padrino-gen/lib/padrino-gen/padrino-tasks/sequel.rb
if PadrinoTasks.load?(:sequel, defined?(Sequel))
namespace :sq do
namespace :migrate do
desc "Perform automigration (reset your db data)"
task :auto => :skeleton do
::Sequel.extension :migration
::Sequel::Migrator.run Sequel::Model.db, "db/migrate", :target => 0
::Sequel::Migrator.run Sequel::Model.db, "db/migrate"
puts "<= sq:migrate:auto executed"
end
desc "Perform migration up/down to MIGRATION_VERSION"
task :to, [:version] => :skeleton do |t, args|
version = (args[:version] || env_migration_version).to_s.strip
::Sequel.extension :migration
fail "No MIGRATION_VERSION was provided" if version.empty?
::Sequel::Migrator.apply(Sequel::Model.db, "db/migrate", version.to_i)
puts "<= sq:migrate:to[#{version}] executed"
end
desc "Perform migration up to latest migration available"
task :up => :skeleton do
::Sequel.extension :migration
::Sequel::Migrator.run Sequel::Model.db, "db/migrate"
puts "<= sq:migrate:up executed"
end
desc "Perform migration down (erase all data)"
task :down => :skeleton do
::Sequel.extension :migration
::Sequel::Migrator.run Sequel::Model.db, "db/migrate", :target => 0
puts "<= sq:migrate:down executed"
end
end
desc "Perform migration up to latest migration available"
task :migrate => 'sq:migrate:up'
desc "Create the database"
task :create => :skeleton do
config = Sequel::Model.db.opts
user, password, host = config[:user], config[:password], config[:host]
database = config[:database]
charset = config[:charset] || ENV['CHARSET'] || 'utf8'
collation = config[:collation] || ENV['COLLATION'] || 'utf8_unicode_ci'
puts "=> Creating database '#{database}'"
if config[:adapter] == 'sqlite3'
::Sequel.sqlite(database)
else
require 'padrino-gen/padrino-tasks/sql-helpers'
Padrino::Generators::SqlHelpers.create_db(config[:adapter], user, password, host, database, charset, collation)
end
puts "<= sq:create executed"
end
desc "Drop the database (postgres and mysql only)"
task :drop => :skeleton do
config = ::Sequel::Model.db.opts
user, password, host, database = config[:user], config[:password], config[:host], config[:database]
::Sequel::Model.db.disconnect
puts "=> Dropping database '#{database}'"
if config[:adapter] == 'sqlite3'
File.delete(database) if File.exist?(database)
else
Padrino::Generators::SqlHelpers.drop_db(config[:adapter], user, password, host, database)
end
puts "<= sq:drop executed"
end
desc 'Drop the database, migrate from scratch and initialize with the seed data'
task :reset => ['drop', 'create', 'migrate', 'seed']
task :seed => :environment do
missing_model_features = Padrino.send(:default_dependency_paths) - Padrino.send(:dependency_paths)
Padrino.require_dependencies(missing_model_features)
Rake::Task['db:seed'].invoke
end
end
task 'db:create' => 'sq:create'
task 'db:migrate' => 'sq:migrate'
task 'db:reset' => 'sq:reset'
end