Rails 3,rake db:test:prepare在使用postgres Schema时不起作用

时间:2012-07-04 04:49:22

标签: ruby-on-rails-3 rspec rake

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

当我跑步时: 耙

  耙子流产了! PG ::错误:错误:参数值无效   “search_path”:“example”DETAIL:架构“示例”不存在:   SET search_path TO example

从我可以解决的问题来看,rake db:test:prepare删除了测试数据库,然后尝试从schema.rb重新创建它。问题是,database.yml有一行

  

schema_search_path:example

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

我认为我的问题是,如何获得rake db:test:准备设置schema_path呢?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:-1)

您应该在config / database.yml

中设置schema_search_path

e.g。

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