我在Heroku的雪松堆栈上部署了一个Rails 3.1应用程序.有了Heroku Cedar and Rails 3.1,你可以自己在本地编译assets资源 ,让Heroku在你推送时编译它们(在"slug编译"期间),或者在应用程序运行时及时编译它们.我想做中间 Select ,让Heroku预编译assets资源 .

当Heroku运行Assets:预编译任务时,错误为"could not connect to server",因为应用程序正在try 连接到数据库,但在插件编译的那个阶段没有可用的数据库.在这一点上,缺乏数据库连接是意料之中的,也是不可避免的.我正在寻找一种方法来克服它,因为数据库连接对于assets资源 预编译不是至关重要的.

我的应用程序中试图连接到数据库的部分是Desive.有devise_for :users条线路.rb希望查看用户模型.

我可以只编写一个rake任务来清除devise_for,并使其成为assets资源 的先决条件:预编译.我认为这可以解决我的问题,但是我可以在Heroku上的any Rails 3.1应用程序上使用I'm looking for a more universal solution个这样的程序来解决这个问题.

有没有什么办法可以消除数据库连接错误,同时仍能运行足够多的应用程序来生成路由和资源路径,或者您能想出什么办法来消除数据库连接错误吗?

显然,如果应用程序在启动期间需要读/写数据,我们不能对其进行存根处理,但是我们可以自动伪造每个ActiveRecord模型吗?

推荐答案

编辑:此答案已过期且不再有效-请参阅Fringd的答案.

虽然不完全是通用的,但是Devise现在已经添加了一个判断来解决这个特定的问题.请参见Github上的issuefix.通过提供Rails_Assets_PRECOMPILE环境配置,Devise应该跳过构建路由

Database相关问答推荐

将数据拆分为月份(以Postgres为单位

Django Save 方法在try 向表中添加新记录时出错

Spring Data JPA 对 SQL 注入安全吗

数据库设计 - 类别(categories)和子类别(sub-categories)

Postgresql:优化数字字段的列大小

如何打印出 sequelize 实例的表名?

在 SQL Server 2008 R2 中,如何强制一列对于整个表是唯一的?

当使用多个 WHEN MATCHED 语句时,它们是全部执行,还是只执行一个?

用于 sql server 的免费国家、城市数据库

FOR UPDATE和JOIN的 SQL 语义

用 Python 永久存储字典的优雅方式?

Mysql用户创建脚本

在 SQLite 数据库中加入 3 个表

如何在文件系统中存储图像

复式记账的关系数据模型

从数据库中获取事件

复制没有 LOCK 权限的 postgres 数据库

NoSQL 数据库是否使用或需要索引?

以编程方式嵌入 Java h2 数据库

有任何使用协议缓冲区的经验吗?