我是资产管道的新手,刚刚从Rails 3.0迁移过来。我正在努力让CKEditor进入管道,但是它的所有宝石都不清楚它们是如何工作的,并且几乎没有使用说明。
我更愿意在不使用gem的情况下执行此操作,因为我似乎只需将源文件放入vendor/assets
目录,然后将其包含在application.js
中。我尝试过,但是,当我预编译并推送到生产时,似乎找不到某些文件(例如editor.css
),并且编辑器根本没有显示(只是空白区域。)
的application.js
//= require jquery
//= require jquery_ujs
//= require ckeditor/ckeditor
//= require_self
这是vendor/assets/javascript/ckeditor/
中的源文件,指向ckeditor.js
。我只是不确定从哪里开始。此代码在开发中工作正常,但在生产中不起作用。我在添加并提交git之前运行rake assets:precompile
,然后推送到heroku。
答案 0 :(得分:28)
我得到了这个(在Heroku上部署),通过:
config.assets.precompile += ['ckeditor/*']
添加到我的production.rb var CKEDITOR_BASEPATH = '/assets/ckeditor/';
中设置您的ckeditor基本路径
//= require ckeditor/ckeditor
答案 1 :(得分:10)
咬紧牙关并使用宝石。这里有两个选择:
https://github.com/galetahub/ckeditor。
它作为引擎运行,并在资产中包含自己的可安装CKEditor。它还公开了可以添加到资产路径的Ckeditor.assets。这引用了CKEditor所需的所有图像,插件,语言文件和各种垃圾。
它可以处理图像上传,并且还可以与 ActiveAdmin 很好地集成。
https://github.com/tsechingho/ckeditor-rails
这样做更少,您将其包含在资产管道中,并为您完成剩下的工作。所有基本用例都很好,简单,充足。
我在实际项目中使用了这两个并且都做了这个工作。如果您打算使用ActiveAdmin并且想要平稳骑行,请使用前者。如果您愿意,请使用后者。
CKEditor非常难看。保持它的长度,然后当你需要升级时,你可以换掉另一个。
答案 2 :(得分:7)
如果您使用的是Rails 3.1.0,则应升级到3.1.1。在此版本中,预编译rake任务将资产编译为原始文件名和消化文件名。这是非管道感知的第三方代码仍然有效。
您需要将ckeditor目录及其所有子目录添加到预编译数组中,以便预编译任务知道编译它们。
config.assets.precompile += your_files
your_files可以是文件,正则表达式或过程的数组 - 无论是什么都需要捕获ckeditor文件的名称。我没有方便的解决预编译需要的东西,所以如果你发布你想出的东西,其他人可能会很感激!
要注意的一件事是,如果您为Web服务器上的/ assets目录设置了远期标头,则需要排除CKeditor目录。由于这些文件不会被指纹识别,因此当您更新CKeditor时某些客户端没有获得更新的代码可能会出现问题,因为它们有一个标记为仅在将来某个时间过期的缓存副本。
答案 3 :(得分:1)
有类似的问题。对我来说,它是通过覆盖默认的预编译任务来修复的(我使用了Rails 4和CkEditor 4)。
config.assets.precompile += ['ckeditor/*']
//= require ckeditor/init
lib/tasks/precompile_hook
并粘贴此回复Precompile hook 答案 4 :(得分:1)
如果出现同样的问题,我已经调整了生产中的后备资产,这些资产在修复之前还没有消化:
配置/环境/ production.rb
config.assets.compile = true
答案 5 :(得分:0)
/ public中的ckeditor_assets目录怎么样?上传的照片和附件会转到这些目录,默认情况下在app / models / ckeditor / [attachment.rb,photo.rb]中定义
ckeditor_assets不在资源范围内,图片/文件无法访问(类似http://yourdomain.com/ckeditor_assets/pictures/1/file.jpg的网址不起作用,但文件在那里)
答案 6 :(得分:0)
我花了一些时间让ckeditor_rails宝石工作;也许我可以节省一些其他人试图做同样的事情。
gem在开发过程中工作得很好,但是当使用Phusion Passenger下的预编译资产部署到生产时它没有。我很清楚,问题在于它正在寻找资产:
http://myhost.com/assets/ckeditor
实际上它需要在下面寻找:
http://myhost.com/my_app_name/assets/ckeditor
我也很清楚我需要以某种方式设置:
var CKEDITOR_BASEPATH = '/my_app_name/assets/ckeditor'
但无论我在何处或如何尝试这样做,都不会。
最后,我在gem wiki上找到关键句子:
您可以创建app / assets / javascripts / ckeditor / basepath.js.erb 拥有自己的CKEDITOR_BASEPATH。
我按照指定创建了文件(与我的config.js文件一起用于配置编辑器),将我的CKEDITOR_BASEPATH设置添加到文件中,重新编译了我的资产,一切都很好。
答案 7 :(得分:0)
在config / development.rb中,请务必设置
config.assets.precompile + = ['ckeditor / *']
以及设置
config.assets.debug = true