使用pg_power gem运行db:schema:dump时未定义的方法

时间:2013-12-06 18:09:20

标签: postgresql ruby-on-rails-4

我正在尝试使用pg_power运行生成postgresql架构的迁移。

class CreateSchemas < ActiveRecord::Migration
  def change
    create_schema 'deprecated'
    create_schema 'leaf'
    create_schema 'mmp'
    create_schema 'mmp_static'
    create_schema 'nass'
    create_schema 'static'
  end
end

当我运行迁移时,我收到以下错误

** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute environment
** Invoke db:load_config (first_time)
** Execute db:load_config
** Execute db:migrate
** Invoke db:_dump (first_time)
** Execute db:_dump
** Invoke db:schema:dump (first_time)
** Invoke environment
** Invoke db:load_config
** Execute db:schema:dump
rake aborted!
undefined method `[]' for nil:NilClass
/Users/Pro777/.bundler/ruby/2.0.0/pg_power-36a643247425/lib/pg_power/schema_dumper/extension_methods.rb:17:in `block in dump_extensions'
/Users/Pro777/.bundler/ruby/2.0.0/pg_power-36a643247425/lib/pg_power/schema_dumper/extension_methods.rb:15:in `map'
/Users/Pro777/.bundler/ruby/2.0.0/pg_power-36a643247425/lib/pg_power/schema_dumper/extension_methods.rb:15:in `dump_extensions'
/Users/Pro777/.bundler/ruby/2.0.0/pg_power-36a643247425/lib/pg_power/schema_dumper/extension_methods.rb:6:in `header_with_extensions'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.0.0/lib/active_record/schema_dumper.rb:26:in `dump'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.0.0/lib/active_record/schema_dumper.rb:21:in `dump'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.0.0/lib/active_record/railties/databases.rake:244:in `block (4 levels) in <top (required)>'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.0.0/lib/active_record/railties/databases.rake:243:in `open'
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.0.0/lib/active_record/railties/databases.rake:243:in `block (3 levels) in <top (required)>'

我应该说我正在使用ruby 2.0,rails 4.0和pg_power的rails4分支。

2 个答案:

答案 0 :(得分:1)

使用Ruby&lt; = 1.9.3(您使用的是2.0)和ActiveRecord 3测试了该库。

  

使用Rails 3.1.x和3.2.x,Ruby 1.8.7 REE和1.9.3进行了测试。

此外,似乎与Rails 4存在一些不兼容性。

该库不使用公共ActiveRecord API,而是使用monkey patchingalias_method_chain)。如果异常是因为库当前不能与Rails 4一起使用,我不会感到惊讶。

为了解决这个问题,您应该看看ActiveRecord内部从Rails 3到Rails 4的变化,并更新Gem中相应的覆盖。这可能是一个小的或巨大的努力,取决于变化的数量。

我鼓励您找到替代方案并在official issue tracker中报告此问题。

答案 1 :(得分:0)

当你试图对rails4运行pg_power时,它确实不能正常工作。 现在,pg_power支持rails4,你必须使用2.X.X版本。