【问题标题】:Heroku and Precompiled AssetsHeroku 和预编译资产
【发布时间】:2015-08-28 00:48:16
【问题描述】:

我有一个 Rails 4 应用程序。我的 javascript 资产之一使用 ruby​​ 来获取所有用户。

当我尝试上传到 heroku 时出现问题。它说它无法预编译该资产,因为数据库尚不存在。除了删除该资产、上传到 heroku 以迁移数据库,然后将其放回原处,我还能做什么?

谢谢!

【问题讨论】:

标签: ruby-on-rails ruby heroku assets


【解决方案1】:

在本地编译资产

为了解决部署中数据库的鸡和蛋问题,不要在生产中调用预编译,在推送之前在开发机器上进行预编译以进行生产。通过推送功能代码库,您可以在 Heroku 上运行“$heroku db:xxx”命令。

  1. 在 production.rb 中关闭预编译资产:
config.assets.compile = false
  1. 在开发机器上为生产预编译资产:
$bundle exec rake assets:precompile RAILS_ENV=production
  1. 现在您的代码 glob 将包含您的预编译资产,因此请推送它。
$heroku push

在部署到 Heroku 时,您正在寻找这一行:

    -----> Preparing Rails asset pipeline
           Detected manifest.yml, assuming assets were compiled locally
  1. 此时您可以在 Heroku 上创建生产数据库
$heroku db:migrate

我认为这些步骤将解决您的问题。请告诉我。

警告

一旦您禁用预编译,您必须记住在部署到生产之前始终在您的开发系统上为生产进行预编译。

Javascript 编译到资产管道中

既然你专门说的是 js 预编译,我还没有尝试过,但如果你有这些类型的预编译 js 特定行,似乎也应该在 production.rb 中注释掉。 assets中有相同类型的js指令。 rb,我也不知道这些是否需要清除。 (重点是在推送到 Heroku 之前进行本地资产预编译。

  # Precompile additional assets.
  # application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
  # config.assets.precompile += %w( xxxx.js )

Heroku 文档

https://devcenter.heroku.com/articles/rails-asset-pipeline#compiling-assets-locally

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-26
    • 2012-11-29
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    • 1970-01-01
    • 1970-01-01
    • 2013-01-20
    相关资源
    最近更新 更多