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.
* +root+: a path to the root of the application.
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.
-
#root ⇒ Object
Returns the value of attribute root.
-
#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
58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/active_record/tasks/database_tasks.rb', line 58 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.
40 41 42 |
# File 'lib/active_record/tasks/database_tasks.rb', line 40 def database_configuration @database_configuration end |
#db_dir ⇒ Object
Returns the value of attribute db_dir.
40 41 42 |
# File 'lib/active_record/tasks/database_tasks.rb', line 40 def db_dir @db_dir end |
#env ⇒ Object
Returns the value of attribute env.
40 41 42 |
# File 'lib/active_record/tasks/database_tasks.rb', line 40 def env @env end |
#fixtures_path ⇒ Object
Returns the value of attribute fixtures_path.
40 41 42 |
# File 'lib/active_record/tasks/database_tasks.rb', line 40 def fixtures_path @fixtures_path end |
#migrations_paths ⇒ Object
Returns the value of attribute migrations_paths.
40 41 42 |
# File 'lib/active_record/tasks/database_tasks.rb', line 40 def migrations_paths @migrations_paths end |
#root ⇒ Object
Returns the value of attribute root.
40 41 42 |
# File 'lib/active_record/tasks/database_tasks.rb', line 40 def root @root end |
#seed_loader ⇒ Object
Returns the value of attribute seed_loader.
40 41 42 |
# File 'lib/active_record/tasks/database_tasks.rb', line 40 def seed_loader @seed_loader end |
Instance Method Details
#charset(*arguments) ⇒ Object
122 123 124 125 |
# File 'lib/active_record/tasks/database_tasks.rb', line 122 def charset(*arguments) configuration = arguments.first class_for_adapter(configuration['adapter']).new(*arguments).charset end |
#charset_current(environment = env) ⇒ Object
118 119 120 |
# File 'lib/active_record/tasks/database_tasks.rb', line 118 def charset_current(environment = env) charset ActiveRecord::Base.configurations[environment] end |
#collation(*arguments) ⇒ Object
131 132 133 134 |
# File 'lib/active_record/tasks/database_tasks.rb', line 131 def collation(*arguments) configuration = arguments.first class_for_adapter(configuration['adapter']).new(*arguments).collation end |
#collation_current(environment = env) ⇒ Object
127 128 129 |
# File 'lib/active_record/tasks/database_tasks.rb', line 127 def collation_current(environment = env) collation ActiveRecord::Base.configurations[environment] end |
#create(*arguments) ⇒ Object
71 72 73 74 75 76 77 78 79 |
# File 'lib/active_record/tasks/database_tasks.rb', line 71 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
81 82 83 |
# File 'lib/active_record/tasks/database_tasks.rb', line 81 def create_all each_local_configuration { |configuration| create configuration } end |
#create_current(environment = env) ⇒ Object
85 86 87 88 89 90 |
# File 'lib/active_record/tasks/database_tasks.rb', line 85 def create_current(environment = env) each_current_configuration(environment) { |configuration| create configuration } ActiveRecord::Base.establish_connection environment end |
#create_database_url ⇒ Object
92 93 94 |
# File 'lib/active_record/tasks/database_tasks.rb', line 92 def create_database_url create database_url_config end |
#drop(*arguments) ⇒ Object
96 97 98 99 100 101 102 |
# File 'lib/active_record/tasks/database_tasks.rb', line 96 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
104 105 106 |
# File 'lib/active_record/tasks/database_tasks.rb', line 104 def drop_all each_local_configuration { |configuration| drop configuration } end |
#drop_current(environment = env) ⇒ Object
108 109 110 111 112 |
# File 'lib/active_record/tasks/database_tasks.rb', line 108 def drop_current(environment = env) each_current_configuration(environment) { |configuration| drop configuration } end |
#drop_database_url ⇒ Object
114 115 116 |
# File 'lib/active_record/tasks/database_tasks.rb', line 114 def drop_database_url drop database_url_config end |
#load_seed ⇒ Object
152 153 154 155 156 157 158 159 160 |
# File 'lib/active_record/tasks/database_tasks.rb', line 152 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
136 137 138 |
# File 'lib/active_record/tasks/database_tasks.rb', line 136 def purge(configuration) class_for_adapter(configuration['adapter']).new(configuration).purge end |
#register_task(pattern, task) ⇒ Object
45 46 47 48 |
# File 'lib/active_record/tasks/database_tasks.rb', line 45 def register_task(pattern, task) @tasks ||= {} @tasks[pattern] = task end |
#structure_dump(*arguments) ⇒ Object
140 141 142 143 144 |
# File 'lib/active_record/tasks/database_tasks.rb', line 140 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
146 147 148 149 150 |
# File 'lib/active_record/tasks/database_tasks.rb', line 146 def structure_load(*arguments) configuration = arguments.first filename = arguments.delete_at 1 class_for_adapter(configuration['adapter']).new(*arguments).structure_load(filename) end |