小编jas*_*ber的帖子

如何在Heroku上预编译资产时普遍跳过数据库触摸

我正在向Heroku的Cedar堆栈部署一个Rails 3.1应用程序.使用Heroku Cedar和Rails 3.1,您可以在本地自己编译资源,让Heroku在推送时(在"slug编译"期间)编译它们,或者在应用程序运行时及时编译它们.我想做中间选项,让Heroku预编译资产.

当Heroku运行资产:预编译任务时,它会因"无法连接到服务器"而出错,因为应用程序正在尝试连接到数据库但在slug编译阶段没有可用的数据库.此时缺乏数据库连接是预期的,也是不可避免的.我正在寻找一种方法来超越它,因为数据库连接对资产预编译并不重要.

我的应用程序试图连接到数据库的部分是Devise.devise_for :users在routes.rb中有一行想要查看用户模型.

我可以编写一个rake任务来存储devise_for并使其成为资产的先决条件:预编译.我认为这可以解决我的问题,但我正在寻找一个更通用的解决方案,我可以在任何 Rails 3.1应用程序上使用Heroku上的这个问题.

那里有什么东西,或者你能想到任何能够在运行应用程序足以产生路由和资产路径的同时消除数据库连接错误的东西吗?

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

database ruby-on-rails heroku asset-pipeline

33
推荐指数
4
解决办法
7388
查看次数

如何在Rails 3.1中渲染后执行某些任务

我正在使用Impressionist来记录页面展示次数.数据库写入只需要大约50ms,但我真的更喜欢在页面呈现并发送到客户端之后执行此操作.

我已经研究过通过Spawn分叉,但它建立了一个新的数据库连接,这对于这么小的工作来说似乎有些过分.延迟工作和其他后台处理库似乎是一个重大的过度杀伤.写入数据库只是为了推迟写入数据库......不是胜利.

我希望我可以:

def show
  render
  impressionist(@article)
end
Run Code Online (Sandbox Code Playgroud)

...并且让印象派使用相同的数据库连接和所有相同的请求数据来执行其操作,就在操作已经返回到客户端之后.但当然,这不是渲染方法的工作原理.

有解决方案吗 在Heroku Cedar上运行Rails 3.1和Ruby 1.9.2.

rendering fork ruby-on-rails ruby-on-rails-3.1

12
推荐指数
2
解决办法
3582
查看次数