【问题标题】:Assets precompilation requires database connection资产预编译需要数据库连接
【发布时间】:2013-08-12 10:40:19
【问题描述】:

使用虚拟属性验证时出现问题:

validates :agreement, acceptance: true  

删除它后,资产预编译不再需要数据库连接。
任何想法如何保存验证并且不在本地预编译资产?

【问题讨论】:

标签: ruby-on-rails validation heroku virtual assets


【解决方案1】:

你有两个选择:

防止在 config/application.rb 中初始化应用程序时预编译资产

config.assets.initialize_on_precompile = false

或者允许它们被初始化并添加heroku labs user-env-compile:

heroku labs:enable user-env-compile -a myapp

阅读更多:

https://devcenter.heroku.com/articles/rails-asset-pipeline

https://devcenter.heroku.com/articles/labs-user-env-compile

【讨论】:

  • config.assets.initialize_on_precompile = false 在 rails 4 heroku labs:enable user-env-compile -a myapp 工作中被删除,但我想弄清楚问题的原因。
  • 您的原始问题没有指定 Rails 版本。你在使用 rails_12factor gem 吗?
  • Rails 4,无资产组,生产组中的 rails_12factor gem。一切都很好,所有验证都有效(不是虚拟属性),在添加虚拟属性验证资产后,预编译需要数据库连接。
  • Rails 正在查看该类是否具有与接受属性 (github.com/rails/rails/blob/master/activemodel/lib/active_model/…) 匹配的属性,这就是它尝试查找架构的原因。这可能是 Rails 中的一个错误,它没有针对 schema.rb 执行此操作,而不是它看起来正在执行的操作正在访问数据库。
  • @x3qt 你可以在验证前添加一个 attr_accessor 来添加虚拟属性来避免这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-06
  • 1970-01-01
  • 2012-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多