我写了一个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
仍然出现相同的超时错误。
叹息浪费这么多时间等待预编译错误。
只是想知道如何消除不必要的包,例如某些语言包,确切地说是插件。
顺便说一句,事情可以用资产完成:本地预编译。
所以我最终通过执行以下操作解决了它:
- 向
application.rb
添加config.assets.precompile += Ckeditor.assets
- 将
gem 'turbo-sprockets-rails3'
添加到:assets
组下的宝石文件中。 - 从宝石文件中删除了未使用的宝石。
-
Bundle Install
-
已从
active_admin.js.coffee
中删除以下行://= require active_admin/base //= require ckeditor/override //= require ckeditor/init
-
推到希罗库。
- 将 3 行添加回来。
- 又推了。
现在一切正常,因为大多数资产在使用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