Heroku和预编译资产

时间:2015-06-12 05:21:34

标签: ruby-on-rails ruby heroku assets

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

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

谢谢!

1 个答案:

答案 0 :(得分:1)

在本地编译资产

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

  1. 关闭production.rb中的预编译资产:
  2. config.assets.compile = false
    
    1. 预编译资产以便在开发机器上进行生产:
    2. $bundle exec rake assets:precompile RAILS_ENV=production
      
      1. 现在你的代码glob将包含你的预编译资产,所以推送它。
      2. $heroku push
        

        在部署到Heroku时,您正在寻找这条线:

            -----> Preparing Rails asset pipeline
                   Detected manifest.yml, assuming assets were compiled locally
        
        1. 此时您可以在Heroku上创建生产数据库
        2. $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