1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Railsで`ckeditor`の`Sprockets::FileNotFound`エラーを解決する方法

Posted at

問題の背景

Railsアプリケーションにおいて、ckeditorを利用する際にSprockets::FileNotFoundエラーが発生する場合があります。具体的には、次のようなエラーメッセージが表示されます。

Sprockets::FileNotFound at /admin/users/sign_in
couldn't find file 'ckeditor/init' with type 'application/javascript'
Checked in these paths: ...

このエラーは、アセットパイプラインでckeditor/initファイルが見つからないために発生します。ckeditorのバージョンとSprocketsの互換性の問題が原因であることが多く、公式リポジトリでも議論されています(Issue #881)。

解決方法

この問題を解決するには、いくつかのアプローチがありますが、互換性のあるバージョンへのダウングレードとアセットパイプラインの設定を変更する方法が推奨されています。

1. ckeditorのバージョンを指定してダウングレード

まず、Gemfileを編集してckeditorの安定したバージョンに固定します。Issueで推奨されているバージョンやRailsバージョンに応じて、以下のようにバージョン指定を行います。ここでは、互換性が確認されているバージョン4.2.4を例にしています。

gem 'ckeditor', '~> 4.2.4'

変更後にbundle installを実行します。

bundle install

2. アセットパイプラインにckeditor/initを追加

エラーの原因であるckeditor/initを正しく読み込むために、app/assets/javascripts/application.jsに次の行を追加します。

//= require ckeditor/init

3. プリコンパイル設定の変更

Sprocketsがアセットを見つけられるように、config/initializers/assets.rbに以下を追加してckeditor関連ファイルをプリコンパイル対象に含めます。

Rails.application.config.assets.precompile += %w[ckeditor/*]

4. アセットの再プリコンパイル

最後に、アセットを再プリコンパイルして、ckeditorのアセットをRailsアプリケーションで使用できるようにします。

rails assets:precompile

5. サーバーの再起動と動作確認

サーバーを再起動し、エラーが解消されていることを確認します。

rails s

まとめ

これらの手順により、ckeditorの読み込みエラーを解消し、Railsアプリケーションで正常に利用できるようになります。詳細はIssue #881にて議論されていますが、ここで紹介した手順で大半のケースで解決できます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?