make rake db:create设置除开发,测试或生产之外的另一个数据库

问题描述 投票:0回答:3

我正在使用rails 4.2,并尝试(在已经建立的应用程序中)配置this second database approach之后的经过审核的宝石。

我的config / database.yml文件如下:

default: &default
  adapter: mysql2
  pool: 5
  timeout: 5000

development:
  <<: *default
  host:  <%= ENV["MYSQL_HOST"] %>
  username: <%= ENV["MYSQL_USER"] %>
  password: <%= ENV["MYSQL_PASSWORD"] %>
  database: <%= ENV["MYSQL_DATABASE"] %>

test:
  <<: *default
  host:  <%= ENV["MYSQL_HOST"] %>
  username: <%= ENV["MYSQL_USER"] %>
  password: <%= ENV["MYSQL_PASSWORD"] %>
  database: <%= ENV['TEST_ENV_DB'] %>

而且我打算使它除开发,测试或生产之外还可以用于另一个数据库。但是,任务rake db:create仅创建我的开发和测试数据库。这可以在我的rails版本中完成吗?

audition:
  <<: *default
  host:  <%= ENV["MYSQL_HOST"] %>
  username: <%= ENV["MYSQL_USER"] %>
  password: <%= ENV["MYSQL_PASSWORD"] %>
  database: <%= ENV["AUDITION_DATABASE"] %>

注意试听数据库的新名称

ruby-on-rails ruby-on-rails-4 acts-as-audited
3个回答
0
投票

我认为您想创建一个新的环境调用audition,对吗?!。

  • 例如克隆现有的环境文件config/environments/test.rb并将其重命名为config/environments/audition.rb
  • 为您的环境在config / database.yml中添加一个新的配置块。
  • 使用新环境更新config文件夹下可能具有的任何其他配置文件,有些gem需要对其进行配置。

  • 现在您可以启动服务器

rails server -e audition


0
投票

如果要在rails <6中读取/写入秒数数据库,则>

创建模块

module AuditionConn
  def self.included(base)
    base.class_eval do
     if Rails.env == 'development'
       establish_connection "audition-development" # database.yml
      else
       establish_connection "audition-production" # database.yml
      end
    end
  end
end

然后将其包含在要从/向试听数据库读取/写入的任何模型中>

class AuditionDBModel < ActiveRecord::Base
  include AuditionConn
end

第二数据库的迁移

def up
  AuditionDBModel.connection.create_table ... do |t|
    ...

  AuditionDBModel.connection.change_column ...
end

我认为这可能对您有帮助:

class AuditModel < ActiveRecord::Base
  connects_to database: { writing: :audit_db, reading: :your_db}
end

ActiveRecord::Base.establish_connection(
  adapter:  "mysql2",
  host:     "localhost",
  username: "myuser",
  password: "mypass",
  database: "somedatabase"
)

有关详细信息:https://guides.rubyonrails.org/active_record_multiple_databases.htmlhttps://edgeapi.rubyonrails.org/classes/ActiveRecord/ConnectionHandling.html


0
投票

我认为这可能对您有帮助:

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.