18

我在我的Rails 4应用程序中使用ckeditor gem 。在本地和我的登台 heroku 环境中一切正常,但是在推动生产环境时出现此错误:

GET http://myapp.herokuapp.com/assets/ckeditor/contents.css 404 (Not Found)
GET http://myapp.herokuapp.com/assets/ckeditor/skins/moono/icons.png 404 (Not Found)

编辑器显示良好,但所有图标都丢失了。

我遵循了自述文件(https://github.com/galetahub/ckeditor),但我可能遗漏了一些东西。

这是我的步骤:

1)Gem安装,生成等......

2)config.autoload_paths += %W(#{config.root}/app/models/ckeditor)在 application.js 中

3)mount Ckeditor::Engine => "/ckeditor"在 routes.rb (我不明白为什么)

4)在application.js中

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

这到底在做什么,为什么需要覆盖?(这些文件在哪里,因为没有 in /app/assets,也/lib/assets没有 in /vendor/assets

Heroku 是面向只读的,因此我无法按照教程中的说明运行 rake 任务。我认为这就是为什么我在生产模式下遇到错误的原因。

有没有人遇到过同样的问题?我遍历了所有 stackoverflow 问题,但到目前为止没有解决我的问题。

更新 :

我发现使它起作用的唯一方法是实时编译:config.assets.compile = true 但我不想在生产中使用它,而且我不明白为什么它会起作用。

4

6 回答 6

15

目前,此问题的解决方案已更改。

无需包含“ckeditor/override.js”

1 更新您的宝石。

bundle update ckeditor

2 将此行添加到您的文件 config/application.rb

config.assets.precompile += Ckeditor.assets
config.assets.precompile += %w( ckeditor/* )
config.autoload_paths += %W(#{config.root}/app/models/ckeditor)

它对我有用,希望对你也有用。

于 2014-10-25T21:18:27.093 回答
5

我刚刚解决了这个问题:https ://github.com/galetahub/ckeditor/issues/307#issuecomment-22186377 。

基本上,您将 ckeditor 资产添加到预编译列表中application.rb,在部署期间使用 rake 任务将它们复制到正确的位置。

希望能帮助到你。

于 2013-12-14T06:34:18.657 回答
4

我按照GitHub 上的说明进行操作

您需要在文件config/enviroments/production.rb中将以下变量设置为 true

config.assets.compile = true

并添加以下代码

config.assets.precompile += Ckeditor.assets
config.assets.precompile += %w(ckeditor/* )
config.autoload_paths += %W(#{config.root}/app/models/ckeditor)

我对这个解决方案的环境是:

gem 'ckeditor', '~> 4.1'

红宝石“2.3.0”

轨道 5.0.0.1

于 2016-09-22T13:50:54.697 回答
1

添加config.assets.precompile += Ckeditor.assetsapplication.rb应该做的工作。

于 2013-11-05T09:23:53.520 回答
0

我遇到了同样的问题,这是我的文件以及我的修复方法:

应用程序.js

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

宝石文件

group :production do
  gem 'rails_12factor'
end

然后运行 ​​bundle 生成 Gemfile.lock 并将文件提交到您的 repo。

生产.rb

config.serve_static_assets = true
config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif)
config.assets.compile = false # we don't want compilation fallbacks

部署到 heroku 并验证它。

希望能有所帮助。

于 2013-11-13T13:53:55.447 回答
0

我一直在开发应用程序,并且在开发环境中运行良好,但是当我将它部署到 Heroku 时,资产根本没有加载,因此我无法加载 TinyMCE 或 CkEditor js 或 css。

我找到了解决方法并在本地编译资产并推送到 Heroku,然后我得到了 CkEditor JS 的编译资产 url 并将其包含在我的视图中

<script src="/assets/ckeditor/ckeditor.js"></script>

如果您想从云端加载 ckeditor 资产,您可以使用 CDN,例如

<script src="https://cdnjs.cloudflare.com/ajax/libs/ckeditor/4.6.2/ckeditor.js"</script>

您还需要更改您的 production.rb 文件中的一些设置

  config.assets.compile = true
  config.assets.precompile += Ckeditor.assets
  config.assets.precompile += %w(ckeditor/* )
  config.autoload_paths += %W(#{config.root}/app/models/ckeditor)

它也开始在 Heroku 上工作。

如有其他问题请回复。

于 2017-05-03T16:40:07.433 回答