使用 ckeditor 将 Rails4 部署到 Heroku ,失败并显示超时资产:预编译



我写了一个rails4应用程序并部署到heroku,一切都很好,直到我添加gem ckeditor并想要实现这个所见即所得的编辑器。 当我跑步时 git push heroku master

在这一步上花费了我大量的时间 Preparing app for Rails asset pipeline
Running: rake assets:precompile
甚至更多,最后我得到这个错误: ! Timed out compiling Ruby/Rails app (15 minutes) ! See https://devcenter.heroku.com/articles/slug-compiler#time-limit

似乎这个编辑器太重了,无法编译。

我已经搜索了解决方案,就像这两个提示页面一样

第一页

第二页

在我喜欢那些之后:

  #  config/initializers/ckeditor.rb:
  Ckeditor.setup do |config|
    config.assets = ["ckeditor/ckeditor.js"]
  end

仍然出现相同的超时错误。

叹息浪费这么多时间等待预编译错误。

只是想知道如何消除不必要的包,例如某些语言包,确切地说是插件。

顺便说一句,事情可以用资产完成:本地预编译。

所以我最终通过执行以下操作解决了它:

  1. application.rb添加config.assets.precompile += Ckeditor.assets
  2. gem 'turbo-sprockets-rails3'添加到:assets组下的宝石文件中。
  3. 从宝石文件中删除了未使用的宝石。
  4. Bundle Install
  5. 已从active_admin.js.coffee中删除以下行:

    //= require active_admin/base
    //= require ckeditor/override
    //= require ckeditor/init
    
  6. 推到希罗库。

  7. 将 3 行添加回来。
  8. 又推了。

现在一切正常,因为大多数资产在使用ckeditor推送之前都已重新编译。

在 application.rb 文件中添加config.assets.precompile += Ckeditor.assets

我遇到了同样的情况。就我而言,我暂时从application.js中删除了与 ckeditor-相关的 js。具体来说,这两行:

//= require ckeditor/override
//= require ckeditor/init

然后,我将我的应用程序部署到 Heroku。如果 ckeditor 是根本原因,则部署应该成功。

接下来,我还原了以前的提交并再次部署。此部署应该需要更短的时间,因为只会预编译更改的资产。

就我而言,我成功地完成了这次繁重的部署。我希望这个程序能帮助你。

真正有效的解决方案:

1)添加到根.js文件(如application.js):

//= require ckeditor/override`
//= require ckeditor/init`

2) 在此代码中创建新的 .rake 任务到您的"lib"文件夹:

namespace :ckeditor do
  desc 'Create nondigest versions of some ckeditor assets (e.g. moono skin png)'
  task :create_nondigest_assets do
    fingerprint = /-[0-9a-f]{32}./
    for file in Dir['public/assets/ckeditor/contents-*.css', 'public/assets/ckeditor/skins/moono/*.png']
      next unless file =~ fingerprint
      nondigest = file.sub fingerprint, '.' # contents-0d8ffa186a00f5063461bc0ba0d96087.css => contents.css
      FileUtils.cp file, nondigest, verbose: true
    end
  end
end
# auto run ckeditor:create_nondigest_assets after assets:precompile
Rake::Task['assets:precompile'].enhance do
  Rake::Task['ckeditor:create_nondigest_assets'].invoke
end

在资产之后复制 CKeditor 文件的非摘要副本:部署时预编译

那里的代码:https://github.com/galetahub/ckeditor

就是这样。

https://github.com/galetahub/ckeditor 的步骤对我有用;

来自 gem 供应商的加载编辑器在您的应用程序/资产/javascripts/应用程序中包含 ckeditor javascripts.js:

在你的应用程序/资产/javascripts/application中包含ckeditor javascript.js:

//= require ckeditor/init

确保你把它放在之前:

//= require_tree .

但是,如果您不想使用该 Gem,那么您也可以以简单的方式执行此操作。

rake assets:precompile      (at local)
commit your public/assets   (you do not need to push that public/assets at github).
git push heroku master

最新更新