web-dev-qa-db-ja.com

本番環境で実行されているckeditorの問題Rails Herokuを使用したアプリケーション

Rails 4アプリケーションでckeditorgemを使用しています。すべてがローカルおよびステージングの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)
_

エディターは正常に表示されますが、すべてのアイコンが表示されません。

README( https://github.com/galetahub/ckeditor ))に従いましたが、おそらく何かが足りません。

これが私のステップです:

1)宝石のインストール、生成など.。

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

3)routes.rbの_mount Ckeditor::Engine => "/ckeditor"_(理由はわかりません)

4)application.js内

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

これは正確に何をしているのですか、なぜオーバーライドが必要なのですか? (これらのファイルは、_/app/assets_にも、_/lib/assets_にも、_/vendor/assets_にもないため、どこにありますか?)

Herokuは読み取り専用であるため、チュートリアルで説明されているようにrakeタスクを実行できません。これが、本番モードでエラーが発生する理由だと思います。

誰かが同じ問題に直面しましたか?私はすべてのstackoverflowの質問に答えましたが、これまでのところ問題を解決するものは何もありませんでした。

更新:

それを機能させるために私が見つけた唯一の方法は、ライブコンパイルです:_config.assets.compile = true_しかし、これを本番環境で使用したくないので、なぜ機能するのかわかりません。

18
Jérôme Boé

現在、この問題の解決策は変更されています。

「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)

それは私のために働きますあなたにも働くことを願っています。

15
swilgosz

私はこれに従ってこの問題を解決しました: https://github.com/galetahub/ckeditor/issues/307#issuecomment-22186377

基本的に、ckeditorアセットをapplication.rbのプリコンパイルリストに追加し、rakeタスクを使用してデプロイ中に適切な場所にコピーします。

それが役に立てば幸い。

5
Felix Ding

GitHub の指示に従いました

ファイル内の次の変数をtrueで設定する必要がありますconfig/environment/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)

このソリューションに対する私の環境は次のとおりです。

gem'ckeditor '、'〜> 4.1 '

Ruby「2.3.0」

Rails 5.0.0.1

4
Henrique Jensen

config.assets.precompile += Ckeditor.assetsapplication.rbを追加すると、作業が完了します。

1

私は同じ問題を抱えていました、これが私のファイルと私がどのように修正したかです:

application.js

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

Gemfile

group :production do
  gem 'Rails_12factor'
end

次に、bundleを実行してGemfile.lockを生成し、ファイルをリポジトリにコミットします。

production.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にデプロイして確認します。

それが何とか役立つことを願っています。

0
bart

私はアプリケーションに取り組んでおり、それはdev envで正常に動作しますが、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にも取り組み始めます。

その他の問題については、plsが返信します。

0
Amit