如何获取ckeditor资源来编译和加载Rails 3.1资产管道
我正在尝试在Rails 3.1应用程序中使用CKEditor。 我在app / assets / javascripts / ckeditor /中有ckeditor目录,删除了未压缩和模块化的源等无关的东西。
它在开发中工作正常。 在生产或登台环境中,ckeditor找不到它自己的文件:config.js,lang / en.js skins / kama / editor.css。 我可以看到这些文件没有被预编译,这是有道理的,因为默认情况下资产管道不会包含或预编译与/.css/或/.js/匹配的任何内容。
根据rails文档和之前的答案,如下所示 ,添加config.assets.precompile所需的文件应该是解决方案。 然而,尽管付出了大量的努力,我无法弄清楚我应该使用config.assets.precompile的格式。 它没有记录,也没有给出任何例子。
我试过按名称显式添加文件:
config.assets.precompile << ['config.js', 'en.js', 'editor.css']
我已经尝试添加与文件匹配的正则表达式:
config.assets.precompile << [ /.*config\.js/, /.*en.js/, /.*editor.css/ ]
我试过明确添加完整路径:
config.assets.precompile << File.join(Rails.root, 'app', 'assets', 'javascripts', 'ckeditor', 'config.js') (etc...)
在所有这些情况下(以及我尝试过的所有其他情况),运行rake资产:预编译仍然无法将我需要的文件移动到公共/资产中。 所有的图像都是如此,但不是CKEditor需要运行的三个javascript和/或css文件。
有什么想法吗?
我遇到过类似的问题。 我最终使用没有资产管道的CKEditor 🙂
在尝试了几个gem后,没有一个在生产环境中正常工作。 我最终将ckeditor放入应用程序的public
文件夹中。 这完全省略了资产管道流程,ckeditor也在生产中运行良好。 没有资产预编译虽然……
使用rails 3.1,CKEditor 4.1。 虽然这是一个老线程,也许这可以帮助某人……
更新:此外,如果您正在测试本地生产环境,请不要忘记在config/environments/production.rb
中将serve_static_assets
设置为true
对我来说,它通过覆盖默认的预编译任务来修复(我使用了Rails 4和CkEditor 4)。
- 添加到application.rb
config.assets.precompile += ['ckeditor/*']
- 在application.js
//= require ckeditor/init
- 创建文件
lib/tasks/precompile_hook.rake
并粘贴此答案预编译钩子中的文本
您的代码中存在语法错误。 预编译属性是一个数组。
您可以将单个项目附加到数组,如下所示:
config.assets.precompile << 'name_of_file.ext'
如果您的值在数组中,则必须添加数组。
config.assets.precompile += [ /.*config\.js/, /.*en.js/, /.*editor.css/ ]
如果你附加然后你有一个嵌套在预编译数组中的数组,它被忽略。