ruby-on-rails database_tasks:false在rails 7.1中不工作

hs1ihplo  于 12个月前  发布在  Ruby
关注(0)|答案(1)|浏览(158)

我在database.yml中配置了2个读副本,我想避免Ruby on Rails应用程序中的任何写操作。
当设置database_tasks: false时,引发了以下异常:

/.rvm/gems/ruby-3.2.2/gems/activerecord-7.1.1/lib/active_record/railtie.rb:151:in `block (3 levels) in <class:Railtie>': 
undefined method `name' for nil:NilClass (NoMethodError)
in db_config.name

字符串
database_task是不推荐使用还是版本升级后有一些bug?

数据库.yml

service_read_replica_defaults: &service_read_replica_defaults
  adapter: postgresql
  username: root
  password: <%= nil %>
  host: localhost
  port: <%= 5432 %>
  database: <%= "service_#{Rails.env}") %>
  database_tasks: false

patient_read_replica_defaults: &patient_read_replica_defaults
  adapter: mysql2
  username: root
  password: <%= nil %>
  host: <%= localhost %>
  port: 3306
  database: <%= "patient_#{Rails.env}") %>
  database_tasks: false

production:
  service_read_replica:
    <<: *service_read_replica_defaults
  patient_read_replica:
    <<: *patient_read_replica_defaults

development:
  service_read_replica:
    <<: *service_read_replica_defaults
  patient_read_replica:
    <<: *patient_read_replica_defaults

test:
  service_read_replica:
    <<: *service_read_replica_defaults
  patient_read_replica:
    <<: *patient_read_replica_defaults


有两个外部数据库(postgresql和mysql)希望以只读访问方式连接。我想使用database_task: false来限制外部数据库上的写操作。

ykejflvf

ykejflvf1#

这一行导致它返回false,因此db_config被返回为nil。由于database.yml文件只包含副本,并且每个配置中都有database:false,因此最终没有加载配置并返回为nil。因此,错误。我们正在寻找的解决方案是,如果我们在项目中缺少任何配置,或者这个场景被rails本身遗漏了?
仅供参考,错误发生在运行命令 bundle exec rails s

相关问题