【发布时间】:2011-11-05 11:42:36
【问题描述】:
我正在开发一个 Rails 应用程序,我将在其中使用 2 个不同的数据库。即一个用于存储用户凭据,另一个用于存储其他类型的数据。 我已经为每个环境设置了我的 database.yml 文件以接受 2 个不同的数据库。它看起来像这样:
<% %w(development test production).each do |env| %>
data_<%= env %>:
adapter: sqlite3
database: db/data/<%= env %>.sqlite3
pool: 5
timeout: 5000
users_<%= env %>:
adapter: sqlite3
database: db/users/<%= env %>.sqlite3
pool: 5
timeout: 5000
<% end %>
我还创建了 2 级模型,每个数据库连接一个,即:
class UsersBase < ActiveRecord::Base
establish_connection "users_#{RAILS_ENV}"
end
和
class DataBase < ActiveRecord::Base
establish_connection "data_#{RAILS_ENV}"
end
我在生成模型时遇到了一些问题,因为它找不到标准的“开发”数据库,但我通过运行生成模型并将 --parent 选项设置为适当的类解决了这个问题。
但是,现在我在尝试运行 rake db:migrate 时遇到了问题。 rake 任务没有找到默认的开发数据库(按照惯例,它应该在 database.yml 中命名为 development)。我的问题是是否有可能以某种方式将其作为参数提供给 rake 任务,或者甚至更好地在配置脚本中的某处向 Rails 发出信号,告知有 2 个数据库,或者开发数据库的默认名称已更改?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 activerecord rails-migrations