Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ckeditor.js文件可以';rails\u管理员找不到_Ckeditor_Ruby On Rails 4_Rails Admin - Fatal编程技术网

ckeditor.js文件可以';rails\u管理员找不到

ckeditor.js文件可以';rails\u管理员找不到,ckeditor,ruby-on-rails-4,rails-admin,Ckeditor,Ruby On Rails 4,Rails Admin,我试图在DigitalOcean服务器上的rails 4.0中使用ckeditor(4.0.6)和rails_admin(0.5.0) 我已将其包含在rails_admin.rb初始值设定项中,如下所示,并且它在本地服务器上以生产模式工作 config.model Faq do field :display_order field :question field :answer, :ck_editor end 然而,在DigitalOcean上,当我进入Ra

我试图在DigitalOcean服务器上的rails 4.0中使用ckeditor(4.0.6)和rails_admin(0.5.0)

我已将其包含在rails_admin.rb初始值设定项中,如下所示,并且它在本地服务器上以生产模式工作

  config.model Faq do
    field :display_order
    field :question
    field :answer, :ck_editor  
  end
然而,在DigitalOcean上,当我进入Rails_Admin并尝试创建一个新的FAQ对象时,它不会加载ckeditor,因为它找不到js

 http://dummy.com/assets/ckeditor/ckeditor.js?_=1381313244552 404 (Not Found)
rails_admin-5daa9b7b76a226bdfa46a07fdaf2d77d.js:3

我如何解决这个问题?

我不知道,您是否已预编译您的资产

如果你从不同类型的主机切换,比如Heroku,你 可能会忘记您必须手动预编译资产。你是 幸运的是,这很容易

RAILS_ENV=生产rake资产:如果遇到问题,可以进行预编译, 请尝试运行以下命令:

RAILS\u ENV=生产rake资产:预编译:主


来看,问题是因为Rails assets compile实际上在每个CKeditor文件的资产文件上添加了指纹,而Rails管理员正在查找该文件的非指纹版本

此问题仅发生在带有ckeditor的rails 4中。事实上,gem的Readme.md确实提到了这个问题以及如何解决它,但它并不完整

要解决此问题,您可以编写一个rake文件来删除所有指纹,并在部署期间运行此操作

这是我解决这个问题的方法

使用以下代码在lib/tasks/ckeditor.rake中创建一个rake文件

namespace :ckeditor do
  desc 'Create nondigest versions of some ckeditor assets (e.g. moono skin png)'
  task :create_nondigest_assets do
    fingerprint = /\-[0-9a-f]{32}\./
    for file in Dir[File.join('public/assets/ckeditor', '**', '*.js'),
                    File.join('public/assets/ckeditor', '**', '*.js.gz'),
                    File.join('public/assets/ckeditor', '**', '*.css'),
                    File.join('public/assets/ckeditor', '**', '*.png'),
                    File.join('public/assets/ckeditor', '**', '*.gif')]
      next unless file =~ fingerprint
      nondigest = file.sub fingerprint, '.' # contents-0d8ffa186a00f5063461bc0ba0d96087.css => contents.css
      FileUtils.cp file, nondigest, verbose: true
    end
  end
end
对于Capistrano用户,请确保将其包含在deploy.rb中

desc 'copy ckeditor nondigest assets'
task :copy_nondigest_assets, roles: :app do
  run "cd #{latest_release} && #{rake} RAILS_ENV=#{rails_env} ckeditor:create_nondigest_assets"
end
after 'deploy:assets:precompile', 'copy_nondigest_assets'
对于Heroku用户,每次签入代码之前都需要手动运行rake文件。确保您执行了rake资产:在此之前进行预编译

rake ckeditor:create_nondigest_assets

希望它有助于

每次使用Capistrano部署时,我的资产都得到预编译。我可以在日志中看到这条线