2015-09-21 2 views
2

У меня есть сайт Ruby on rails, где я использую драгоценный камень Ckeditor. https://github.com/galetahub/ckeditorRuby on Rails Ckeditor теряет ресурсы для копий скрепки при развертывании

У меня есть настройка с помощью скрепки, поэтому я также могу загрузить изображения в редакторе. Это работает без проблем.

Проблема заключается в том, что я развертываю свой сервер cloud66 с CKeditor. Это делает так, что все загруженные изображения через ckeditor удаляются. (ссылки остаются прежними, только изображения отсутствуют)

Как это решить?

Код: Модель> CKEditor> assets.rb

module Ckeditor 
    class Asset < ActiveRecord::Base 
    include Ckeditor::Orm::ActiveRecord::AssetBase 
    include Ckeditor::Backend::Paperclip 
    end 
end 

модели> CKEditor> attachment_file.rb

module Ckeditor 
    class AttachmentFile < Ckeditor::Asset 
    has_attached_file :data, 
         url: "/ckeditor_assets/attachments/:id/:filename", 
         path: ":rails_root/public/ckeditor_assets/attachments/:id/:filename" 

    validates_attachment_presence :data 
    validates_attachment_size :data, less_than: 100.megabytes 
    do_not_validate_attachment_file_type :data 

    def url_thumb 
     @url_thumb ||= Ckeditor::Utils.filethumb(filename) 
    end 
    end 
end 

модели> CKEditor> picture.rb

module Ckeditor 
    class Picture < Ckeditor::Asset 
    has_attached_file :data, 
         url: "/ckeditor_assets/pictures/:id/:style_:basename.:extension", 
         path: ":rails_root/public/ckeditor_assets/pictures/:id/:style_:basename.:extension", 
         styles: { content: "800>", thumb: "118x100#" } 

    validates_attachment_presence :data 
    validates_attachment_size :data, less_than: 2.megabytes 
    validates_attachment_content_type :data, content_type: /\Aimage/ 

    def url_content 
     url(:content) 
    end 
    end 
end 

конфигурации > initialers> assets.rb

Rails.application.config.assets.version = "1.0" 

# Add additional assets to the asset load path 
# Rails.application.config.assets.paths << Emoji.images_path 

# Precompile additional assets. 
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added. 
# Rails.application.config.assets.precompile += %w(search.js) 
Rails.application.config.assets.precompile += %w(club.css admin.css) 
Rails.application.config.assets.precompile += %w(club.js admin.js) 

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

конфигурации> initialers> ckeditor.rb

Ckeditor.setup do |config| 

    require "ckeditor/orm/active_record" 

end 

конфигурации> deploy.rb

# if you want to clean up old releases on each deploy uncomment this: 
set :shared_children, shared_children + %w{public/ckeditor_assets} 
after "deploy:restart", "deploy:cleanup" 

namespace :deploy do 
    task :start, :roles => :app do 
    run "touch #{current_path}/tmp/restart.txt" 
    end 

    task :stop, :roles => :app do 
    # Do nothing. 
    end 

    desc "Restart Application" 
    task :restart, :roles => :app do 
    run "touch #{current_path}/tmp/restart.txt" 
    end 

    after 'deploy:update_code' do 
    #run "cd #{release_path}; RAILS_ENV=production rake db:create" 

    run "cd #{release_path}; RAILS_ENV=production rake db:migrate" 
    run "cd #{release_path}; RAILS_ENV=production rake db:seed" 
    run "cd #{release_path}; RAILS_ENV=production rake assets:precompile" 

    run "ln -s #{shared_path}/public/ckeditor_assets #{release_path}/public/ckeditor_assets" 

    end 

    desc "Update the crontab file" 
    task :update_crontab, :roles => :db do 
    run "cd #{release_path} && whenever --update-crontab #{application}" 
    run "cd #{release_path}; tail -f log/cron_log.log" 
    end 

и я получил в routes.rb горе CKEditor :: Двигатель => "/ CKEditor"

ответ

1

Решение:

удалить

url: "/ckeditor_assets/pictures/:id/:style_:basename.:extension", 
path: ":rails_root/public/ckeditor_assets/pictures/:id/:style_:basename.:extension", 

на модели изображения, это изменит файл для загрузки в системную папку внутри папки, и предотвратить его компиляции неправильно