【问题标题】:Rails + Carrierwave + Ckeditor + Fog + S3 - files are not pointing to amazonRails + Carrierwave + Ckeditor + Fog + S3 - 文件未指向亚马逊
【发布时间】:2016-06-20 21:07:28
【问题描述】:

我正在尝试在 S3 上运行我的静态文件,并且一切正常。文件可用,渲染和上传没有任何问题。但是通过 ckeditor 推送到博客的所有内容都不是指向亚马逊主机,而是指向应用程序 url。

这是配置

config/initializers/fog.rb

CarrierWave.configure do |config|
  config.cache_dir = "#{Rails.root}/tmp/uploads" 

  config.storage = :fog

  config.fog_credentials = {
    provider:              'AWS',
    aws_access_key_id:     Rails.application.secrets.app_s3_username,
    aws_secret_access_key: Rails.application.secrets.app_s3_password,
    region:                Rails.application.secrets.app_s3_region
  }
  config.fog_directory  = Rails.application.secrets.app_s3_bucket
  config.fog_public     = false
  config.fog_attributes = { 'Cache-Control' => "max-age=#{365.day.to_i}" }
end

models/ckeditor/picture.rb

class Ckeditor::Picture < Ckeditor::Asset
  mount_uploader :data, CkeditorPictureUploader, :mount_on => :data_file_name

  def url_content
    url(:content)
  end

end

uploaders/ckeditor_picture_uploader.rb

# encoding: utf-8
class CkeditorPictureUploader < CarrierWave::Uploader::Base
  include Ckeditor::Backend::CarrierWave

  # Include RMagick or ImageScience support:
  # include CarrierWave::RMagick
  include CarrierWave::MiniMagick
  # include CarrierWave::ImageScience

  # Choose what kind of storage to use for this uploader:
  storage :fog
.
.
.

已安装的宝石

  * carrierwave (0.11.2)
  * ckeditor (4.1.6)
  * fog (1.37.0)

无论如何,其他上传者图片的网址是 https://bucket.s3-eu-west-1.amazonaws.com/uploads/... ckeditor 图片的 url http://example.com/uploads/...

任何建议和帮助都将不胜感激,因为我尝试并搜索了互联网并且无法找到任何有类似问题的人。有些人提到了公共/私人图像的问题,但这不是我的问题,因为 URL 不正确

【问题讨论】:

    标签: ruby-on-rails amazon-s3 ckeditor carrierwave fog


    【解决方案1】:

    您是否尝试重新启动 Rails 服务器?

    尝试创建config/initializers/carrierwave.rb 而不是lib/carrierwave/storage/fog.rb https://github.com/carrierwaveuploader/carrierwave/tree/0.11-stable#configuring-carrierwave

    【讨论】:

    • 最初我的文件在 config/initializers 中,但它被称为fog.rb。无论如何,我重命名了它,也重新启动了(之前很多次)并且结果相同。图片的 URL 仍然指向应用程序主机而不是 amazon s3
    【解决方案2】:

    只需几个简单的步骤即可解决问题:

    首先你必须知道,ckeditor 将图像的 src 硬编码到数据库中,所以当 ckeditorcarrierwave 被修改为从旧源指向 s3 时,旧链接被破坏并且必须通过转储表来修复

    mysqldump -hhost -uuser -ppassword database table > table.dump
    

    然后通过 sed 或一些可以查找和替换的文本编辑器对其进行编辑

    nano table.dump + ctrl + w + r
    

    然后搜索 "/uploads/ 并替换为 "https://bucket.amazonaws.com/uploads/

    当然只有在你保存我所做的文件夹结构的情况下。

    上传的第二个问题根本不是问题。我只是没有测试它,因为我首先查看现有图片。

    P.S.:只是为了确保即使在将来也能正常工作。我公开了配置,因此 src 链接没有存储所有可能过期的详细信息,并将存储桶策略编辑为

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "AddPerm",
                "Effect": "Allow",
                "Principal": "*",
                "Action": "s3:GetObject",
                "Resource": "arn:aws:s3:::bucket/*"
            }
        ]
    }
    

    【讨论】:

      【解决方案3】:

      尝试重置您的数据库。或者在将它们指向雾/aws 之前删除存储 ckeditor 照片 url 的表。为我工作。

      【讨论】:

        猜你喜欢
        • 2013-10-19
        • 2012-04-03
        • 2012-08-23
        • 2018-01-22
        • 2015-02-03
        • 2014-08-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多