首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >载波Excon::Error::SocketError

载波Excon::Error::SocketError
EN

Stack Overflow用户
提问于 2014-07-30 05:52:31
回答 1查看 4.9K关注 0票数 3

我读过一些与此相关的帖子和解决方案,但我仍然找不出答案,仍然返回“Excon::Error::SocketError at /posts getaddrinfo: nodename或servname,或unnahname(SocketError)”。

这是config/carrierwave.rb e.rb

代码语言:javascript
复制
CarrierWave.configure do |config|
  config.fog_credentials = {
    :provider               => 'AWS',                        # required
    :aws_access_key_id      => '----',                        # required
    :aws_secret_access_key  => '----',                        # required
    :region                 => 'eu-west-1',                  # optional, defaults to 'us-east-1'
    :host                   => 's3.example.com',             # optional, defaults to nil
    :endpoint               => 'https://s3.example.com:8080' # optional, defaults to nil
   }
   config.fog_directory  = 'name_of_directory'                     # required
   config.fog_public     = false                                   # optional, defaults to true
   config.fog_attributes = {'Cache-Control'=>'max-age=315576000'}  # optional, defaults to {}
   config.asset_host     = 'https://assets.example.com'   
 end

avatar_upload.rb

代码语言:javascript
复制
 # encoding: utf-8

  class AvatarUploader < CarrierWave::Uploader::Base

    include CarrierWave::MiniMagick

    storage :fog
    process :resize_to_fit => [900,500]

   version :thumb do
      process :resize_to_fill => [200,200]
     end

   def cache_dir
      "#{Rails.root}/tmp/uploads"
    end

   def store_dir
      "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
   end
    def default_url
      #   # For Rails 3.1+ asset pipeline compatibility:
      #   # ActionController::Base.helpers.asset_path("fallback/" + [version_name, "default.png"].compact.join('_'))
     #
        "/images/fallback/" + [version_name, "default.png"].compact.join('_')
    end

    def extension_white_list
      %w(jpg jpeg gif png)
    end
  end

从后控制器

代码语言:javascript
复制
 def create
   @post = Post.new(post_params)
   @post.user = current_user

    unless current_user.admin?
     unless current_user.manager?
       redirect_to :back, :alert => "acces denied"
     end
    end

    respond_to do |format|
     if @post.save
        params[:photo_attachments]['avatar'].each do |a|
         @photo_attachment = @post.photo_attachments.create!(:avatar => a, :post_id =>@post.id)
        end
        format.html { redirect_to @post, notice: 'Post was successfully created.' }
         format.json { render :show, status: :created, location: @post }
        else
         format.html { render :new }
         format.json { render json: @post.errors, status: :unprocessable_entity }
      end
     end
    end

安装后更新的config/carrierwave e.rb

代码语言:javascript
复制
CarrierWave.configure do |config|
   config.storage    = :aws
   config.aws_bucket = ENV['S3_BUCKET_NAME']
   config.aws_acl    = :public_read
   config.asset_host = 'http://example.com'
   config.aws_authenticated_url_expiration = 60 * 60 * 24 * 365

  config.aws_credentials = {
    access_key_id:     ENV['---'],
    secret_access_key: ENV['---']
  }
end

更改为存储后:aws

代码语言:javascript
复制
AWS::Errors::MissingCredentialsError

Missing Credentials.

Unable to find AWS credentials.  You can configure your AWS credentials
a few different ways:

* Call AWS.config with :access_key_id and :secret_access_key

* Export AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY to ENV

* On EC2 you can run instances with an IAM instance profile and credentials
  will be auto loaded from the instance metadata service on those
  instances.

 * Call AWS.config with :credential_provider.  A credential provider should
  either include AWS::Core::CredentialProviders::Provider or respond to
  the same public methods.

 = Ruby on Rails

   In a Ruby on Rails application you may also specify your credentials in
  the following ways:

   * Via a config initializer script using any of the methods mentioned above
    (e.g. RAILS_ROOT/config/initializers/aws-sdk.rb).

   * Via a yaml configuration file located at RAILS_ROOT/config/aws.yml.
    This file should be formated like the default RAILS_ROOT/config/database.yml
    file.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-30 06:08:41

这可能是因为使用了fog实现,也许可以尝试将gem转换为carrierwave-aws,看看它是否修复了您的问题:)

https://github.com/sorentwo/carrierwave-aws

我记得有一个类似的错误,改变后,工作良好!

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

https://stackoverflow.com/questions/25029663

复制
相关文章

相似问题

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