【问题标题】:How to get ckeditor resources to compile and load in Rails 3.1 asset pipeline如何获取 ckeditor 资源以在 Rails 3.1 资产管道中编译和加载
【发布时间】:2013-10-02 04:31:28
【问题描述】:

我正在尝试在 Rails 3.1 应用程序中使用 CKEditor。我在 app/assets/javascripts/ckeditor/ 中有 ckeditor 目录,移除了诸如未压缩和模块化源等无关内容。

它在开发中运行良好。在生产或登台环境中,ckeditor 找不到它自己的文件:config.js、lang/en.js skins/kama/editor.css。我可以看到这些文件没有被预编译,这是有道理的,因为默认情况下资产管道不会包含或预编译任何匹配 /.css/ 或 /.js/ 的内容。

根据 rails docs 和 previous answers like this one,将我需要的文件添加到 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 assets:precompile 仍然无法将我需要的文件移动到 public/assets 中。所有的图像等等,但不是 CKEditor 需要运行的三个 javascript 和/或 css 文件。

有什么想法吗?

【问题讨论】:

  • 你在哪里追加到 config.assets.precompile?

标签: ruby-on-rails ruby-on-rails-3 ckeditor asset-pipeline


【解决方案1】:

我遇到过类似的问题。我最终使用了没有资产管道的 CKEditor :)

在尝试了几个 gem 之后,在生产环境中没有一个可以正常工作。我最终将 ckeditor 放入应用程序的public 文件夹中。这完全跳过了资产管道过程,并且 ckeditor 在生产中也可以正常工作。虽然没有资产预编译...

使用 rails 3.1、CKEditor 4.1。虽然这是一个旧线程,但也许这可以帮助某人......

更新:另外,如果您在本地生产环境中进行测试,请不要忘记在 config/environments/production.rb 中将 serve_static_assets 设置为 true

【讨论】:

    【解决方案2】:

    对我来说,它是通过覆盖默认预编译任务来修复的(我使用了 Rails 4 和 CkEditor 4)。

    1. 添加到 application.rb config.assets.precompile += ['ckeditor/*']
    2. 在 application.js //= require ckeditor/init
    3. 创建文件lib/tasks/precompile_hook.rake 并粘贴此答案Precompile hook 中的文本

    【讨论】:

    • rake 文件名应该是“lib/tasks/precompile_hook.rake”。
    • 这行得通。但是,我在工具栏上没有看到任何图像。看起来icons.png 和其他一些图标图像文件丢失了。有什么想法吗?谢谢。
    • 你能提供一些额外的信息吗? rails 和 ckeditor 的版本。这些图像是预编译的吗?
    • @YosepKim,我遇到了同样的问题。我知道这已经很老了,但你有没有弄清楚工具栏图标的问题是什么?
    • @AlecSanger 我认为让它工作的唯一方法是在推送之前预编译资产。实际上,我什至没有使用答案中描述的 rake 任务。要预编译(您可能已经知道这一点,但以防万一),运行以下命令:RAILS_ENV=production bundle exec rake assets:precompile。我希望这会有所帮助。
    【解决方案3】:

    您的代码中有语法错误。 precompile 属性是一个数组。

    您可以像这样将单个项目附加到数组中:

    config.assets.precompile << 'name_of_file.ext'
    

    如果您的值在一个数组中,那么您必须添加该数组。

    config.assets.precompile += [ /.*config\.js/, /.*en.js/, /.*editor.css/ ]
    

    如果您追加,那么您将在预编译数组中嵌套一个数组,该数组将被忽略。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 2012-05-20
      • 1970-01-01
      • 2011-10-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多