- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在将我们的应用程序从 Rails 3.2.22 升级到 Rails 4.2.11 时,升级之前工作的几个 CarrierWave 方法现在返回 nil,例如 .url
和 .file
.我们将 Assets 托管在 AWS S3 上,我们的应用程序托管在 Heroku 上。奇怪的是,图像在我们的开发环境中按预期工作。CarrierWave 1.3.1 (upgraded from 0.11.2)
Rails 4.2.11, upgraded from 3.2.22
Ruby 2.2.5
fog-aws 3.3.0
到目前为止,我已经尝试改变了载波配置,并在 rails 控制台中尝试了不同的方法,并将开发和生产中的结果进行了比较。
Gemfile
source 'https://rubygems.org'
ruby '2.2.5'
gem 'rails', '4.2.11'
gem 'puma'
gem 'pg', '0.15.1'
gem 'jquery-rails'
gem 'jquery-ui-rails'
gem 'rack-cors'
gem 'sprockets_uglifier_with_source_maps'
gem 'carrierwave'
gem 'mini_magick', '3.6.0'
gem 'paper_trail', '>= 4.0'
gem 'fog-aws'
gem 'aws-sdk-s3', '~> 1'
gem 'identity_cache', '>= 0.2'
gem 'memcachier'
gem 'dalli'
gem 'connection_pool'
gem 'active_model_serializers', '>= 0.10'
gem 'formtastic', '~> 3.1.0'
gem 'sprockets-rails', require: 'sprockets/railtie'
gem 'sprockets-image_compressor'
gem 'actionpack-action_caching'
gem 'sass-rails', '5.0.6'
gem 'uglifier', '2.5.0'
gem 'compass-rails'
gem 'sprite-factory', '1.5.3'
gem 'responders', '~> 2.0'
group :development do
gem 'rack-mini-profiler'
gem 'rmagick', '2.13.2'
end
carrierwave.rb
CarrierWave.configure do |config|
config.fog_provider = 'fog/aws'
config.fog_credentials = {
provider: ENV['FOG_PROVIDER'],
aws_access_key_id: ENV['AWS_ACCESS_KEY_ID'],
aws_secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
region: ENV['FOG_REGION'],
endpoint: ENV['FOG_HOST']
}
if Rails.env.production?
config.storage = :fog
config.fog_directory = ENV['FOG_DIRECTORY']
config.fog_public = false
config.fog_authenticated_url_expiration = 1800
else
config.asset_host = "#{ENV['FOG_HOST']}"
config.storage = :file
config.enable_processing = false if Rails.env.test?
end
end
art_uploader.rb
# encoding: utf-8
class ArtUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
version :thumbnail do
process resize_to_fill: [100, 100]
end
# Override the directory where uploaded files will be stored.
# This is a sensible default for uploaders that are meant to be mounted:
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
# Add a white list of extensions which are allowed to be uploaded.
def extension_white_list
%w(jpg jpeg png)
end
# Provide a default URL as a default if there hasn't been a file uploaded:
def default_url
if model.has_fallback_art?
version_name == :thumbnail
model.song.artist.photo.small_thumb.url :
model.song.artist.photo.album_art.url
end
end
end
art.url
art.url => "https://qa-marmosetmusic-com.s3.amazonaws.com/uploads/artist/photo/173/af2ac015-1d44-4481-b5d6-5bf5cb8c0e23.jpg"
art.url => nil
.
art
在开发控制台中,它返回这个对象:
=> #<ArtUploader::Uploader70128841541160:0x007f904c7c88f8
@cache_id=nil,
@file=
#<CarrierWave::SanitizedFile:0x007f904c1ffd68
@content=nil,
@content_type=nil,
@file=
"/Users/ekingan/dev/marmoset/public/uploads/album/art/3540/thumbnail_Evan_Andree_Your_Heart_Album_Artwork_1_3000x3000.jpg",
@original_filename=nil>,
@filename=nil,
@format=nil,
@model=
#<Album:0x007f904a0417a8
id: 3540,
title: "Your Heart",
art: "Evan_Andree_Your_Heart_Album_Artwork_1_3000x3000.jpg",
state: "active",
description: "",
created_at: Tue, 27 Nov 2018 12:50:14 PST -08:00,
updated_at: Tue, 27 Nov 2018 12:50:14 PST -08:00>,
@mounted_as=:art,
@parent_version=
#<ArtUploader:0x007f904c7c9618
@cache_id=nil,
@file=
#<CarrierWave::SanitizedFile:0x007f904c7c8948
@content=nil,
@content_type=nil,
@file="/Users/ekingan/dev/marmoset/public/uploads/album/art/3540/Evan_Andree_Your_Heart_Album_Artwork_1_3000x3000.jpg",
@original_filename=nil>,
@filename=nil,
@format=nil,
@model=
#<Album:0x007f904a0417a8
id: 3540,
title: "Your Heart",
art: "Evan_Andree_Your_Heart_Album_Artwork_1_3000x3000.jpg",
state: "active",
description: "",
created_at: Tue, 27 Nov 2018 12:50:14 PST -08:00,
updated_at: Tue, 27 Nov 2018 12:50:14 PST -08:00>,
@mounted_as=:art,
@storage=#<CarrierWave::Storage::File:0x007f904c7c9118 @cache_called=nil, @uploader=#<ArtUploader:0x007f904c7c9618 ...>>,
@versions={:thumbnail=>#<ArtUploader::Uploader70128841541160:0x007f904c7c88f8 ...>}>,
@storage=
#<CarrierWave::Storage::File:0x007f904c7c86f0
@cache_called=nil,
@uploader=#<ArtUploader::Uploader70128841541160:0x007f904c7c88f8 ...>>,
@versions={}>
#<ArtUploader::Uploader6168740:0x000000072781c8 @model=#<Album id: 2008, title: "Vektlaus", art: "Daniel+Kvammen+-+Vektlaus.jpg", state: "active", description: nil, created_at: "2017-05-19 18:40:43", updated_at: "2017-07-26 16:51:17">, @mounted_as=:art, @file=nil, @filename=nil, @cache_id=nil, @versions={}, @format=nil, @parent_version=#<ArtUploader:0x00000007278d30 @model=#<Album id: 2008, title: "Vektlaus", art: "Daniel+Kvammen+-+Vektlaus.jpg", state: "active", description: nil, created_at: "2017-05-19 18:40:43", updated_at: "2017-07-26 16:51:17">, @mounted_as=:art, @file=nil, @filename=nil, @cache_id=nil, @versions={:thumbnail=>#<ArtUploader::Uploader6168740:0x000000072781c8 ...>}, @format=nil, @storage=#<CarrierWave::Storage::Fog:0x000000072786f0 @uploader=#<ArtUploader:0x00000007278d30 ...>>>, @storage=#<CarrierWave::Storage::Fog:0x00000007267300 @uploader=#<ArtUploader::Uploader6168740:0x000000072781c8 ...>>>
最佳答案
我们解决了这个问题!
我们在carrierwave/storage中有一个名为fog.rb的文件,它覆盖了gem行为并导致了这个问题。删除该文件允许一切按预期工作。
关于ruby-on-rails-4 - 从 Rails 3 升级到 Rails 4 后,CarrierWave url 为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54355872/
我正在通过 Carrierwave 上传的裁剪图像的能力。这里是 RailsCast video on Youtube我正在关注的。 但是在上传器中包含 RMagick 后,我收到了: undefin
我正在尝试下载这个 image使用 CarrierWave 但它一直给出此异常: CarrierWave::IntegrityError 我的下载适用于许多图像,但不适用于该特定域。 我看过这个doc
我正在寻找在 Heroku 上的 Rails 应用程序中上传文件的最佳方式。设置:Rails 3、Carrierwave、Heroku、Mongoid 问题:偶尔,当用户上传不同大小的文件时,图像会保
嗨我只是无法找出我的代码有什么问题。我有两个模型 Items 和 Images 以及它们之间的关系 class Item :destroy accepts_nested_attributes_
我实际上是在 Railscast 383 中编写项目- 第二部分,当照片直接上传到 AWS S3 时,然后由 Sidekiq 在后台处理照片以创建照片的缩略图版本。我在 Rails 4 上。 我的问题
我正在尝试使用 Carrierwave 通过 Rails 应用程序将 Logo 图像上传到 Amazon s3 存储桶。但我的文件上传没有将文件读取为 HTTP 文件,并将 NULL 添加到数据库中。
问题是在 mongoids save! 操作中抛出的以下错误。 Mongoid::Errors::Validations: Validation failed - Img failed to be p
我试图在我的 Rails 3.2 应用程序中显示默认图像。我已按照 Carrierwave github 页面上的说明进行操作,并浏览了几篇 Stackoverflow 帖子。但是,出于某种原因,它仍
模型带有图像的远程 url,这意味着它不是在 Rails 中创建的 db 条目。然后第一次从Rails中的DB中获取我想检测图像尚未上传,为图像url分配remote_seed_url并保存!触发 C
Carrierwave 运行良好,我将目录移出公众(出于安全原因),当我尝试上传图像时出现此错误: Errno::EACCES in PostsController#create Permission
我正在使用carrierwave,但遇到了这个问题: 假设一旦项目交付,您需要添加一个部分,其中系统中的图像需要以不同的尺寸显示。我不想为系统中已有的每个图像重新生成新维度。我希望能够在 View 需
是否可以让 CarrierWave 在数据库中存储上传文件的完整路径,而不仅仅是文件名,并在每次访问时重新生成它们? 我希望这样做的原因是能够更改我存储文件的结构,而不会在已上传的文件移动到新位置之前
我正在使用来自主分支和 PostgreSQL 的多个文件上传 我的产品模型有一个名为“images”的字符串字段,我可以很好地附加多个图像。 但是我不知道的是,如何从产品中删除一张图片? 我可以删除文
我有一个允许的文件扩展名列表 def extension_white_list %w(pdf doc docx xls xlsx html tif gif jpg jpeg png bmp rtf
所以,我有一个购物车类,我一直保存在 session 中,直到购买完成,我需要能够在购买完成后将文件上传到购物车(不要问为什么,说来话长),我将所有这些信息转储到一个保存在数据库中的类中。 我经常使用
我正在使用carrierwave 和rmagick 来处理我的图片上传。我现在向 image_uploader.eb 添加了一个新版本(smallthumb): class ImageUploader
我知道我在这里错过了一些非常简单的东西...... CarrierWave::Storage::Fog::File有一个方法 exists ? 我如何使用它?我只是想检查远程存储上是否存在以前上传的文
我正在使用乘客和 capistrano 部署我的第一个 rails 应用程序。 一切都很好,直到我尝试在浏览器中启动应用程序时遇到此错误。 Error message: uninitialize
我有一个使用 CarrierWave gem 的 rails 3 应用程序。到目前为止,我已经上传了 48*48 和 100*100 的图片,但现在我想将它们存储在 200*200 中。 有没有办法调
我有两个模型,每个模型都有自己的 Carrierwave 上传器: class User < ActiveRecord::Base mount_uploader :avatar, AvatarUp
我是一名优秀的程序员,十分优秀!