首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fog::存储::Rackspace::NotFound使用载波上传到Rackspace

Fog::存储::Rackspace::NotFound使用载波上传到Rackspace
EN

Stack Overflow用户
提问于 2012-10-16 20:35:34
回答 4查看 2K关注 0票数 2

每个人:我已经搜索了这个错误,然后我把它发布到Stackoverflow,所以没有必要向我指出这个问题: groups.google.com/forum/?fromgroups=#!topic/carrierwave/ --这不是同一个问题。

我使用的是载波,这样用户就可以将文件上传到我的Rackspace容器中。但是当我从我的站点(在我的本地机器上,仍然处于测试模式)提交时,我得到了一个Fog::Storage::Rackspace::NotFound应用程序/控制器/authors_控制员.on:8: in‘`update’error。我的Rackspace容器名为kontainer.ofstuff。这是我的密码:

pic_uploader.rb:

代码语言:javascript
复制
class PicUploader < CarrierWave::Uploader::Base

  include Rails.application.routes.url_helpers
  storage :fog

  def store_dir
    "#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end
end

author.rb模型

代码语言:javascript
复制
class Author < ActiveRecord::Base
  attr_accessible :stuff, :profilepic

  mount_uploader :pic, PicUploader

  def dostuff
  end
end

carrierwave.rb位于配置/初始化器目录中。

代码语言:javascript
复制
CarrierWave.configure do |config|

  config.storage = :fog
  config.fog_credentials = {
    :provider           => 'Rackspace',
    :rackspace_username => 'myusername',
    :rackspace_api_key  => '98765asecretnumber3'
  })
  config.fog_directory = 'kontainer.ofstuff'
  config.fog_host = 'https://34567secretnumberiiiii.ssl.cf2.rackcdn.com'
end

控制器authors_controller.rb

代码语言:javascript
复制
class AuthorsController < ApplicationController

  def update
    @author = Author.find(params[:id])
    @booklist = Book.where(:author_id => @author.id)
#line 7
    if @author.update_attributes(params[:author])
      sign_in @author
      redirect_to @author
    else
      render 'profileinfo'
    end
  end
end

edit.html.erb:

代码语言:javascript
复制
<%= f.file_field :pic %>
<%= f.submit "Save Author Info" %> 

当我让这段代码‘上传’/存储到一个文件时,这很好。也许f.submit不适用于载波?如果是not...where,我是否找到了正确的提交代码?

知道有什么问题吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-10-25 20:47:22

我也有同样的问题,但对我来说,我需要用相同的名字多次制造容器,但所有的区域都是一样的。我不知道为什么在那之后成功,但我想这是值得一试的?

更新11-7-2012

所以自从我回答后,载波有了一些更新。通过一些尝试和错误,我能够获得一个更稳定的上传。我所做的是:

  1. 更新载波宝石至0.7.0
  2. 登录到所有区域的Rackspace并删除容器。
  3. 增加了一个容器。哪个地区不重要,无论哪个地区更适合你。
  4. 使容器公开(启用CDN)
  5. 复制容器的公共HTTP链接
  6. 更新了my /config/initalizers/initalizers e.rb文件: 如果是CarrierWave.configure的话,config.fog_credentials ={ :provider => ' Rackspace ',:rackspace_username =>‘您的Rackspace用户名’,:rackspace_api_key =>‘您的Rackspace API键’} config.fog_directory =‘您创建的容器的名称’?config.asset_host =“容器的公共HTTP”末端

请注意:我配置了我的上传器以使用存储:当环境正在生产或暂存时使用fog。否则,我将使用默认的本地文件系统。

主要要注意的是,载波将配置“fog_host”更改为“asset_host”。

票数 2
EN

Stack Overflow用户

发布于 2013-05-19 09:52:15

我也有这个错误。通过将此添加到上载的代码中解决:

代码语言:javascript
复制
class MyUploader < CarrierWave::Uploader::Base

  ....

  def remove!
    begin
      super
    rescue Fog::Storage::Rackspace::NotFound
    end
  end

end
票数 4
EN

Stack Overflow用户

发布于 2012-11-13 22:35:45

值得注意的是:在从AWS迁移到Rackspace之后,我遇到了同样的问题。由于更新文件的一部分是删除旧文件,因此引发了错误。在我的例子中,旧文件是在S3上,而不是在Rackspace上,所以载波变得不舒服。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12922980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档