0

我正在使用 rails 4.2 并尝试按照第二种数据库方法配置(在已经建立的应用程序中) Audited Gem 。

我的 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"] %>

注意试听数据库的新名称

4

3 回答 3

1

如果您想在 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
于 2020-04-24T07:05:32.003 回答
0

我想你想创建一个新的环境调用audition,对吧?!。

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

  • 现在你可以启动服务器了

rails server -e audition

于 2020-04-24T03:22:50.677 回答
0

我认为这可能会对您有所帮助:
创建另一个审计模型:

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

或者

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

详情: https ://guides.rubyonrails.org/active_record_multiple_databases.html https://edgeapi.rubyonrails.org/classes/ActiveRecord/ConnectionHandling.html

于 2020-04-26T12:45:47.377 回答