2015-02-11 64 views
1

想要使用carrierwave gem和AWS從我的應用上傳圖像。 但是當我上傳的圖片,並提交得到錯誤Rails 4:Carrierwave/AWS - Excon :: Errors :: SocketError/getaddrinfo:提供的節點名稱和服務名稱

Excon::Errors::SocketError in MoviesController#create 
getaddrinfo: nodename nor servname provided 

跟蹤

app/controllers/movies_controller.rb:30:in `block in create' 
app/controllers/movies_controller.rb:29:in `create' 

Parameters: 

{"utf8"=>"✓", 
"authenticity_token"=>"laitXtzkMnWd/EHtVjFx0X5vE0P4kowXu84wH8fEVOQ=", 
"movie"=>{"title"=>"new ", 
"description"=>"te", 
"movie_length"=>"12", 
"director"=>"12", 
"rating"=>"12", 
"image"=>#<ActionDispatch::Http::UploadedFile:0x007fc913845fb0 @tempfile=#<Tempfile:/var/folders/s8/fd5_m1_d3436ptj9znpcy3cc0000gn/T/RackMultipart20150211-642-1ow2dmn>, 
@original_filename="IMG_0892.JPG", 
@content_type="image/jpeg", 
@headers="Content-Disposition: form-data; name=\"movie[image]\"; filename=\"IMG_0892.JPG\"\r\nContent-Type: image/jpeg\r\n">}, 
"commit"=>"Create Movie"} 

MoviesController#創建

def create 
@movie = Movie.new(movie_params) 

respond_to do |format| 
    **if @movie.save**<--- Error 
    format.html { redirect_to @movie, notice: 'Movie was successfully created.' } 
    format.json { render :show, status: :created, location: @movie } 
    else 
    format.html { render :new } 
    format.json { render json: @movie.errors, status: :unprocessable_entity } 
    end 

,但我認爲它是與我的AWS設置,因爲我是能夠在沒有AWS的情況下創建圖像,但現在自使用霧寶石& AWS訪問& ID鍵它不起作用

配置/ initialiser.rb

CarrierWave.configure do |config| 
    config.fog_credentials = { 
    :provider    => 'AWS',      # required 
    :aws_access_key_id  => 'AKIAIxxxxxxA',      # required 
    :aws_secret_access_key => 'UdRxhdOHoaxxxxxxxx3I9+vIId+', 
    :region => 'Ireland',      # required 
    } 
    config.fog_directory = 'moviesdemo'      # required 
end 

尋找解決的辦法,我相信你現在已經添加的區域,但是這是行不通的。

gemfile 

source 'https://rubygems.org' 

ruby "2.0.0" 
gem 'rails', '4.1.7' 
gem 'sqlite3', group: :development 
gem 'sass-rails', '~> 4.0.3' 
gem 'uglifier', '>= 1.3.0' 
gem 'coffee-rails', '~> 4.0.0' 
gem 'jquery-rails' 
gem 'turbolinks' 
gem 'jbuilder', '~> 2.0' 
gem 'sdoc', '~> 0.4.0',   group: :doc 
gem 'spring',  group: :development 
gem 'bootstrap-sass', '~> 3.3.3' 
gem 'rails_12factor', group: :production 
gem 'pg', group: :production 
gem 'carrierwave' 
gem 'fog' 

image.uploader RB

編碼:UTF-8

class ImageUploader < CarrierWave::Uploader::Base 

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

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

回答

3

你的區域應該是這樣的 「歐盟 - 西-1」 而不是 「愛爾蘭」:

:region => 'eu-west-1',      

雖然你應該檢查你的區域在你的水桶,以確保你正在選擇正確的。

+0

是的,現在工作,謝謝托馬斯! – Neil 2015-02-11 21:48:26

+0

歡迎您:) – trosborn 2015-02-11 23:10:21

+0

對於美國人有着同樣的錯誤,認爲他們的地區是'美國標準',這真的是'我們東1'。 – chaostheory 2016-03-01 09:11:09

相關問題