我有一个Rails 4应用程序。我的一个javascript资产使用ruby来获取所有用户。
当我尝试上传到heroku时出现问题。它说它无法预编译该资产,因为数据库尚不存在。除了删除该资产,上传到heroku以迁移数据库,然后将其放回后,我该怎么办?
谢谢!
答案 0 :(得分:1)
在本地编译资产
要在部署中解决数据库中的鸡和蛋问题,请不要在生产中调用预编译,在推送之前在开发机器上预编译以进行生产。推送功能代码库后,您可以运行" $ heroku db:xxx" Heroku上的命令。
config.assets.compile = false
$bundle exec rake assets:precompile RAILS_ENV=production
$heroku push
在部署到Heroku时,您正在寻找这条线:
-----> Preparing Rails asset pipeline
Detected manifest.yml, assuming assets were compiled locally
$heroku db:migrate
我认为这些步骤可以解决您的问题。请告诉我。
<强>买者强>
禁用预编译后,您必须记住在部署到生产环境之前始终在dev系统上进行预编译。
Javascript汇编到资产管道
由于您具体谈到了js预编译,我还没试过这个,但是看起来这些类型的预编译js特定行也应该在production.rb中注释掉,如果你有的话。资产中有相同类型的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 docs
https://devcenter.heroku.com/articles/rails-asset-pipeline#compiling-assets-locally