4

我有一个 Rails 3.2.1 项目,我正在尝试运行我的规范。

当我跑步时:耙子

耙中止!PG ::错误:错误:参数“search_path”的值无效:“示例”详细信息:模式“示例”不存在:SET search_path TO示例

据我所知,rake db:test:prepare 删除测试数据库,然后尝试从 schema.rb 重新创建它。问题是,database.yml 有这条线

schema_search_path:示例

所以当它尝试重新连接时,它会因上述错误而失败。

我想我的问题是,我怎样才能让 rake db:test:prepare 也设置 schema_path?

4

2 回答 2

0

一种解决方案是向创建模式的 db:create 任务添加一些代码。把它放在一个 rake 任务中,例如 'APP_ROOT/lib/tasks/db_create_schema.rake'

namespace :db do
  task :create do
    config = Rails.configuration.database_configuration[Rails.env].merge!({'schema_search_path' => 'public'})
    ActiveRecord::Base.establish_connection(config)
    ActiveRecord::Base.connection.execute("CREATE SCHEMA schema_name")
  end
end

https://gist.github.com/4280172

于 2012-12-13T22:03:16.640 回答
-1

您应该schema_search_path在 config/database.yml 中设置

例如

development:
  adapter: postgresql
  encoding: unicode
  database: test
  pool: 5
  username: user
  password: password
  #host: localhost
  #port: 5432
  # Schema search path. The server defaults to $user,public
  schema_search_path: example
于 2012-09-18T03:21:33.210 回答