2017-02-11 95 views
2

我使用的是ckeditor紅寶石寶石(v4.2.2)在我的Rails應用程序工作,它工作在發展不錯,但不是我的production環境。它看起來不像我的資產管道問題,因爲所有其他資產的加載沒有任何問題。CKEditor的不生產

在頁面上,谷歌瀏覽器給了我這個錯誤:

Uncaught TypeError: Cannot set property 'dir' of undefined 

enter image description here

而Firefox剛拋出這個控制檯:

TypeError: c[a] is undefined[Learn More] 

我」什麼已經嘗試到目前爲止:

  • 使用Uglifier.new(mangle: false)爲JS壓縮機鏈輪
  • 手動設置CKEDITOR_BASEPATH

public/assets/ckeditor所有rake asset:precompile生成的資源文件有一個哈希在結尾是這樣的:

ckeditor-e0b9bfe15298d2b2dd388960b27d35e6a18c89b2390f8986d398c30da5496e4b.js 
config-1fb318e1cc0eea7b8c181941c3c1f09d2b96107b2f7ff4891755fbb2201ba53d.js 
contents-4540cf2cb7116b32bac2995494c4fc0c55804444f37c02cfa11256bd695e4194.css 
# etc 

但JS似乎沒有加載它們並試圖修復現在。

希望能得到任何幫助。


代碼

我的JavaScript文件:

//= require pages-javascript 
//= require ckeditor/init 
//= require_tree ./ckeditor 
//= require_self 

資產初始化程序:

# config/initializers/assets.rb 
Rails.application.config.assets.version = '1.0' 

Rails.application.config.assets.precompile << Proc.new do |filename, full_path| 
    if filename =~ /\.(css|js|svg|eot|woff|ttf)\z/ 
    app_assets_path = Rails.root.join('app', 'assets').to_s 
    if full_path.starts_with? app_assets_path 
     Rails.logger.info "including asset: " + full_path 
     true 
    else 
     Rails.logger.info "excluding asset: " + full_path 
     false 
    end 
    else 
    false 
    end 
end 

Rails.application.config.assets.precompile += %w(ckeditor/*) 
+0

我看到你準備明確的ckeditor文件,具體是吧? –

回答

2

通過Github上的庫Issues and Pull Requests,發現這不是我的代碼問題,而是Ruby Gem本身的4.x.x版本中的一個錯誤(導致與Rails 5不兼容)。

已有人opened an issuePR fixing this was also merged要在2個月前掌握,但在包含該補丁後沒有發佈。所以我的臨時解決方案是直接從主裝載寶石:

gem 'ckeditor', github: 'galetahub/ckeditor', ref: '11d3a5b' 
+1

浪費了10多個小時試圖「修復」這一點。 – Sheharyar

+0

我在4.2.2有這個問題。更新到4.2.4解決了問題。 – hlcs

1

你試過單獨加載CKEditor的?嘗試加載它沒有捆綁,看看是否正確加載庫。從控制檯輸出中我看到一些文件沒有加載,可能捆綁/縮小不能像這些文件那樣工作。加載<head>中的ckeditor文件,看看是否一切正常。

+0

是的,在這個問題指出,它正常工作。這是資產是如何在生產壓縮和前端客戶端無法加載它們的問題。 – Sheharyar

+0

所以只是從你的捆綁分離CKEditor的。我幾乎每次都將外部庫從捆綁中分離出來,因爲它們給我帶來了一些錯誤和麻煩。你永遠不知道這些庫是如何實現的。 –