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

时间:2013-12-28 06:35:12

标签: ruby-on-rails 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

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

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

Page I

Page II

我喜欢那些之后:

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

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

为了浪费这么多时间等待预编译错误而叹气。

只是想知道如何像某些语言包,插件那样彻底解除不必要的包。

BTW,事情可以用资产完成:在本地预编译。

6 个答案:

答案 0 :(得分:2)

所以我最终通过以下方式解决了这个问题:

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

    //= require active_admin/base
    //= require ckeditor/override
    //= require ckeditor/init
    
  6. 推到Heroku。

  7. 添加了3行。
  8. 再次推。
  9. 现在一切正常,因为在推送ckeditor之前已经重新编译了大部分资产。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

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

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

接下来,我恢复了之前的提交并再次部署。此部署应该花费更短的时间,因为只会更改已更改的资产。

就我而言,我成功完成了这次重大部署。我希望这个程序可以帮到你。

答案 3 :(得分:0)

真正有效的解决方案:

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

就是这样。

答案 4 :(得分:0)

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

gem供应商的加载编辑器 在您的app / assets / javascripts / application.js中包含ckeditor javascript:

在您的app / assets / javascripts / application.js中包含ckeditor javascript:

//= require ckeditor/init

确保将其放在前面:

//= require_tree .

答案 5 :(得分:-1)

但如果你不想使用那个宝石,那么你也可以轻松地做到这一点。

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