Module: ActiveRecord::Tasks::DatabaseTasks
- Extended by:
- DatabaseTasks
- Included in:
- DatabaseTasks
- Defined in:
- lib/active_record/tasks/database_tasks.rb
Overview
ActiveRecord::Tasks::DatabaseTasks is a utility class, which encapsulates logic behind common tasks used to manage database and migrations.
The tasks defined here are used in rake tasks provided by Active Record.
In order to use DatabaseTasks, a few config values need to be set. All the needed config values are set by Rails already, so it’s necessary to do it only if you want to change the defaults or when you want to use Active Record outside of Rails (in such case after configuring the database tasks, you can also use the rake tasks defined in Active Record).
The possible config values are:
* +env+: current environment (like Rails.env).
* +database_configuration+: configuration of your databases (as in +config/database.yml+).
* +db_dir+: your +db+ directory.
* +fixtures_path+: a path to fixtures directory.
* +migrations_paths+: a list of paths to directories with migrations.
* +seed_loader+: an object which will load seeds, it needs to respond to the +load_seed+ method.
Example usage of DatabaseTasks outside Rails could look as such:
include ActiveRecord::Tasks
DatabaseTasks.database_configuration = YAML.load(File.read('my_database_config.yml'))
DatabaseTasks.db_dir = 'db'
# other settings...
DatabaseTasks.create_current('production')
Constant Summary collapse
- LOCAL_HOSTS =
['127.0.0.1', 'localhost']
Instance Attribute Summary collapse
- #current_config(options = {}) ⇒ Object
-
#database_configuration ⇒ Object
Returns the value of attribute database_configuration.
-
#db_dir ⇒ Object
Returns the value of attribute db_dir.
-
#env ⇒ Object
Returns the value of attribute env.
-
#fixtures_path ⇒ Object
Returns the value of attribute fixtures_path.
-
#migrations_paths ⇒ Object
Returns the value of attribute migrations_paths.
-
#seed_loader ⇒ Object
Returns the value of attribute seed_loader.
Instance Method Summary collapse
- #charset(*arguments) ⇒ Object
- #charset_current(environment = env) ⇒ Object
- #collation(*arguments) ⇒ Object
- #collation_current(environment = env) ⇒ Object
- #create(*arguments) ⇒ Object
- #create_all ⇒ Object
- #create_current(environment = env) ⇒ Object
- #create_database_url ⇒ Object
- #drop(*arguments) ⇒ Object
- #drop_all ⇒ Object
- #drop_current(environment = env) ⇒ Object
- #drop_database_url ⇒ Object
- #load_seed ⇒ Object
- #purge(configuration) ⇒ Object
- #register_task(pattern, task) ⇒ Object
- #structure_dump(*arguments) ⇒ Object
- #structure_load(*arguments) ⇒ Object
Instance Attribute Details
#current_config(options = {}) ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/active_record/tasks/database_tasks.rb', line 57 def current_config( = {}) .reverse_merge! :env => env if .has_key?(:config) @current_config = [:config] else @current_config ||= if ENV['DATABASE_URL'] database_url_config else ActiveRecord::Base.configurations[[:env]] end end end |
#database_configuration ⇒ Object
Returns the value of attribute database_configuration.
39 40 41 |
# File 'lib/active_record/tasks/database_tasks.rb', line 39 def database_configuration @database_configuration end |
#db_dir ⇒ Object
Returns the value of attribute db_dir.
39 40 41 |
# File 'lib/active_record/tasks/database_tasks.rb', line 39 def db_dir @db_dir end |
#env ⇒ Object
Returns the value of attribute env.
39 40 41 |
# File 'lib/active_record/tasks/database_tasks.rb', line 39 def env @env end |
#fixtures_path ⇒ Object
Returns the value of attribute fixtures_path.
39 40 41 |
# File 'lib/active_record/tasks/database_tasks.rb', line 39 def fixtures_path @fixtures_path end |
#migrations_paths ⇒ Object
Returns the value of attribute migrations_paths.
39 40 41 |
# File 'lib/active_record/tasks/database_tasks.rb', line 39 def migrations_paths @migrations_paths end |
#seed_loader ⇒ Object
Returns the value of attribute seed_loader.
39 40 41 |
# File 'lib/active_record/tasks/database_tasks.rb', line 39 def seed_loader @seed_loader end |
Instance Method Details
#charset(*arguments) ⇒ Object
121 122 123 124 |
# File 'lib/active_record/tasks/database_tasks.rb', line 121 def charset(*arguments) configuration = arguments.first class_for_adapter(configuration['adapter']).new(*arguments).charset end |
#charset_current(environment = env) ⇒ Object
117 118 119 |
# File 'lib/active_record/tasks/database_tasks.rb', line 117 def charset_current(environment = env) charset ActiveRecord::Base.configurations[environment] end |
#collation(*arguments) ⇒ Object
130 131 132 133 |
# File 'lib/active_record/tasks/database_tasks.rb', line 130 def collation(*arguments) configuration = arguments.first class_for_adapter(configuration['adapter']).new(*arguments).collation end |
#collation_current(environment = env) ⇒ Object
126 127 128 |
# File 'lib/active_record/tasks/database_tasks.rb', line 126 def collation_current(environment = env) collation ActiveRecord::Base.configurations[environment] end |
#create(*arguments) ⇒ Object
70 71 72 73 74 75 76 77 78 |
# File 'lib/active_record/tasks/database_tasks.rb', line 70 def create(*arguments) configuration = arguments.first class_for_adapter(configuration['adapter']).new(*arguments).create rescue DatabaseAlreadyExists $stderr.puts "#{configuration['database']} already exists" rescue Exception => error $stderr.puts error, *(error.backtrace) $stderr.puts "Couldn't create database for #{configuration.inspect}" end |
#create_all ⇒ Object
80 81 82 |
# File 'lib/active_record/tasks/database_tasks.rb', line 80 def create_all each_local_configuration { |configuration| create configuration } end |
#create_current(environment = env) ⇒ Object
84 85 86 87 88 89 |
# File 'lib/active_record/tasks/database_tasks.rb', line 84 def create_current(environment = env) each_current_configuration(environment) { |configuration| create configuration } ActiveRecord::Base.establish_connection environment end |
#create_database_url ⇒ Object
91 92 93 |
# File 'lib/active_record/tasks/database_tasks.rb', line 91 def create_database_url create database_url_config end |
#drop(*arguments) ⇒ Object
95 96 97 98 99 100 101 |
# File 'lib/active_record/tasks/database_tasks.rb', line 95 def drop(*arguments) configuration = arguments.first class_for_adapter(configuration['adapter']).new(*arguments).drop rescue Exception => error $stderr.puts error, *(error.backtrace) $stderr.puts "Couldn't drop #{configuration['database']}" end |
#drop_all ⇒ Object
103 104 105 |
# File 'lib/active_record/tasks/database_tasks.rb', line 103 def drop_all each_local_configuration { |configuration| drop configuration } end |
#drop_current(environment = env) ⇒ Object
107 108 109 110 111 |
# File 'lib/active_record/tasks/database_tasks.rb', line 107 def drop_current(environment = env) each_current_configuration(environment) { |configuration| drop configuration } end |
#drop_database_url ⇒ Object
113 114 115 |
# File 'lib/active_record/tasks/database_tasks.rb', line 113 def drop_database_url drop database_url_config end |
#load_seed ⇒ Object
151 152 153 154 155 156 157 158 159 |
# File 'lib/active_record/tasks/database_tasks.rb', line 151 def load_seed if seed_loader seed_loader.load_seed else raise "You tried to load seed data, but no seed loader is specified. Please specify seed " + "loader with ActiveRecord::Tasks::DatabaseTasks.seed_loader = your_seed_loader\n" + "Seed loader should respond to load_seed method" end end |
#purge(configuration) ⇒ Object
135 136 137 |
# File 'lib/active_record/tasks/database_tasks.rb', line 135 def purge(configuration) class_for_adapter(configuration['adapter']).new(configuration).purge end |
#register_task(pattern, task) ⇒ Object
44 45 46 47 |
# File 'lib/active_record/tasks/database_tasks.rb', line 44 def register_task(pattern, task) @tasks ||= {} @tasks[pattern] = task end |
#structure_dump(*arguments) ⇒ Object
139 140 141 142 143 |
# File 'lib/active_record/tasks/database_tasks.rb', line 139 def structure_dump(*arguments) configuration = arguments.first filename = arguments.delete_at 1 class_for_adapter(configuration['adapter']).new(*arguments).structure_dump(filename) end |
#structure_load(*arguments) ⇒ Object
145 146 147 148 149 |
# File 'lib/active_record/tasks/database_tasks.rb', line 145 def structure_load(*arguments) configuration = arguments.first filename = arguments.delete_at 1 class_for_adapter(configuration['adapter']).new(*arguments).structure_load(filename) end |