Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails db:create在Rails中的定义在哪里?_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails db:create在Rails中的定义在哪里?

Ruby on rails db:create在Rails中的定义在哪里?,ruby-on-rails,ruby,Ruby On Rails,Ruby,下面的命令用于创建新数据库 rails数据库:创建 这个函数是在哪里定义的?或者这是rails中的预打包函数?它位于框架的文件中: namespace :create do task all: :load_config do ActiveRecord::Tasks::DatabaseTasks.create_all end ActiveRecord::Tasks::DatabaseTasks.for_each do |spec_name| desc "Create

下面的命令用于创建新数据库

rails数据库:创建

这个函数是在哪里定义的?或者这是rails中的预打包函数?

它位于框架的文件中:

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)>'
$rails-wdb:create
rails db:create/path/databases.rake:26:in'block-in'
railsdb:create:all/path/databases.rake:20:in'block(2层)in'
注意,它是在Rake的0.9版本中引入的。这可能有效,也可能无效,具体取决于您使用的版本。

它位于框架的文件中:

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)>'
$rails-wdb:create
rails db:create/path/databases.rake:26:in'block-in'
railsdb:create:all/path/databases.rake:20:in'block(2层)in'

注意,它是在Rake的0.9版本中引入的。这可能有效,也可能无效,这取决于您使用的版本。

我使用的是现有的代码库。它是由用户定义的吗?它是在
databases.rake
中定义的,但我不明白它是如何知道要创建哪个数据库的。用户必须提供一些东西,不是吗?@asndonsadoasndo231213
config/database.yml
通常会指定它。有趣的是,我在那里没有看到
create
块。它创建了
数据库.yml
中存在的数据库,正如D-side所述。注意
ActiveRecord::Tasks::DatabaseTasks.create(db\u config.config)
。我正在使用现有的代码库。它是由用户定义的吗?它是在
databases.rake
中定义的,但我不明白它是如何知道要创建哪个数据库的。用户必须提供一些东西,不是吗?@asndonsadoasndo231213
config/database.yml
通常会指定它。有趣的是,我在那里没有看到
create
块。它创建了
数据库.yml
中存在的数据库,正如D-side所述。注意
ActiveRecord::Tasks::DatabaseTasks.create(db\u config.config)