Ruby on rails 从Rails 4在Amazon RDS中启用hstore扩展

Ruby on rails 从Rails 4在Amazon RDS中启用hstore扩展,ruby-on-rails,postgresql,activerecord,ruby-on-rails-4,amazon-rds,Ruby On Rails,Postgresql,Activerecord,Ruby On Rails 4,Amazon Rds,我有一个Rails 4应用程序,它使用ActiveRecord与PostgreSQL 9.3数据库交互。该应用程序利用PostgreSQL中的hstore扩展在单个数据库字段中存储键值对。因此,Rails会自动检测我对迁移所做的操作,并在schema.rb文件中创建以下行 enable_extension "hstore" 在开发和测试环境中,这非常有效,因为我正在部署独立的PostgreSQL实例。但是在生产环境中,我将部署到Amazon RDS中的PostgreSQL实例,在该实例中,扩展

我有一个Rails 4应用程序,它使用ActiveRecord与PostgreSQL 9.3数据库交互。该应用程序利用PostgreSQL中的
hstore
扩展在单个数据库字段中存储键值对。因此,Rails会自动检测我对迁移所做的操作,并在schema.rb文件中创建以下行

enable_extension "hstore"
在开发和测试环境中,这非常有效,因为我正在部署独立的PostgreSQL实例。但是在生产环境中,我将部署到Amazon RDS中的PostgreSQL实例,在该实例中,扩展必须由
RDS\u超级用户组的成员安装。我不想让我的应用程序用户扮演那个角色

有没有办法使代码的执行依赖于环境?例如,在测试中运行开发中的代码,但不在部署到生产中运行?

我尝试过创建一个有条件的迁移,但在生成模式时,它并没有消除上面的行。例如:

class ModifyHstoreSetup < ActiveRecord::Migration
  def self.up
    if %w(staging, production).include?(ENV["RAILS_ENV"] || "development")
      enable_extension "plpgsql"
      enable_extension "hstore"
    end
  end
  def self.down
    if %w(staging, production).include?(ENV["RAILS_ENV"] || "development")
      disable_extension "plpgsql"
      disable_extension "hstore"
    end
  end
end
类修改存储设置
只要让您的用户成为rds\U超级用户组的成员即可。然后您的迁移就会成功。

这不是对您的问题的回答,而是对上面一些代码的调整。我可以推荐
Rails.env.production吗?
而不是基于字符串的检查吗?是的,在生产中。。。有了微服务。。。并且您的产品具有用户私有信息