在这个问题上碰壁了。让我解释一下我做了什么,并展示配置代码的片段,希望能找到解决方案
Ruby: 2.4.0
Rails: 5.x
Gems (specific to this):
- carrierwave 1.2.3
- carrierwave-aws下面是错误
NoMethodError - undefined method `match' for nil:NilClass:
app/controllers/api/v3/video_controller.rb:23:in `upload'下面是我的config/environment/carrierwave.rb文件
CarrierWave.configure do |config|
config.storage :aws
config.aws_credentials = {
provider: "AWS",
aws_access_key_id: Rails.application.secrets.aws_access_id,
aws_secret_access_key: Rails.application.secrets.aws_access_secret,
region: "us-east-1"
}
config.aws_bucket = "{{BUCKET_NAME_HERE}}"
end这是我的上传工具
class VideoUploader < CarrierWave::Uploader::Base
storage :aws
end最后,下面是我调用upload的方法,因为它是一个API,所以我没有使用表单构建器或模型赋值。
def upload
video = params[:video]
if video
# Send file to Amazon S3 bucket and grab URL
uploader = VideoUploader.new
uploader.store!(video.tempfile)
# uploader.retrieve_from_store!(tempfile_name)
# logger.info uploader.download_url(video.original_filename)
end
end我试过carrierwave + fog,fog-aws。当我删除S3等式时,该文件将存储在本地(开发机器)。我在尝试lib/ hacks,降级版本时束手无策。我希望这是一个简单的疏忽,但我没有想法。
任何帮助都是非常感谢的!
发布于 2018-07-13 08:33:32
修复了!这个问题非常愚蠢,我真希望我能早点发现它。初始化程序文件在环境目录中(我甚至在我的问题中列出了它!),而不是初始化程序目录……不要空腹编写代码。
如果代码能检测到丢失的文件那就太好了。但至少它已经解决了。
https://stackoverflow.com/questions/51314722
复制相似问题