Следующая команда предназначена для создания новой базы данных.
rails db:create
Где определена эта функция? Или это заранее упакованная функция в рельсах?
Он находится в файле database.rake фреймворка:
namespace :create do
task all: :load_config do
ActiveRecord::Tasks::DatabaseTasks.create_all
end
ActiveRecord::Tasks::DatabaseTasks.for_each do |spec_name|
desc "Create #{spec_name} database for current environment"
task spec_name => :load_config do
db_config = ActiveRecord::DatabaseConfigurations.config_for_env_and_spec(Rails.env, spec_name)
ActiveRecord::Tasks::DatabaseTasks.create(db_config.config)
end
end
end
Если вы сомневаетесь или хотите узнать, где была определена задача, вы можете использовать команду rails -W
(или rake
), передав задачу:
$ rails -W db:create
rails db:create /path/databases.rake:26:in `block in <top (required)>'
rails db:create:all /path/databases.rake:20:in `block (2 levels) in <top (required)>'
Обратите внимание, что это было введено в версии 0.9 Rake. Это может работать или не работать в зависимости от версий, с которыми вы работаете.
Он определен в databases.rake
, но я не понимаю, как он знает, какую базу данных создать. Пользователь должен что-то предоставить, не так ли?
@ asndonsadoasndo231213 config/database.yml
обычно указывает это.
Интересно, что я не вижу там блока create
.
Он создает базы данных, присутствующие в вашем database.yml
, как указано на стороне D. Обратите внимание на ActiveRecord::Tasks::DatabaseTasks.create(db_config.config)
.
Я работаю с существующей кодовой базой. Это определяется пользователем?