Estoy tratando de incorporar imágenes en mi aplicación web y sigo encontrando este error después de eliminar algunas funciones. Todo se redujo a mi controlador de aplicación 'crear' y no estoy del todo seguro de a dónde debo ir desde aquí.
2015-02-06T20:30:12.292187+00:00 app[web.1]:    (1.9ms)  ROLLBACK
2015-02-06T20:30:12.296299+00:00 app[web.1]: NameError (uninitialized constant Paperclip::Storage::S3::AWS):
2015-02-06T20:30:12.296301+00:00 app[web.1]:   app/controllers/articles_controller.rb:24:in `create'
2015-02-06T20:45:14.691084+00:00 app[web.1]: [paperclip] saving /articles/images/000/000/013/original/git.jpeg
2015-02-06T20:45:14.698744+00:00 app[web.1]: Completed 500 Internal Server Error in 584ms
2015-02-06T20:45:14.700871+00:00 heroku[router]: at=info method=POST path="/articles" host=preston.herokuapp.com request_id=d9d02257-3616-4686-bce5-3d912cd528c2 fwd="76.22.102.38" dyno=web.1 connect=1ms service=698ms status=500 bytes=1754Articles_controller.rb
class ArticlesController < ApplicationController
http_basic_authenticate_with name: "name", password: "password", except: [:index, :show]
    def index
        @articles = Article.all.order("created_at DESC")
    end
    def show
        @article = Article.find(params[:id])
    end
    def new
        @article = Article.new
    end 
    def edit
        @article = Article.find(params[:id])
    end
    def create
        @article = Article.new(article_params)
        if @article.save
          redirect_to @article
        else
            render 'new'
        end  
    end
    def update
        @article = Article.find(params[:id])
        if @article.update(article_params)
            redirect_to @article
        else
            render 'edit'
        end
    end
    def destroy
        @article = Article.find(params[:id])
        @article.destroy
        redirect_to articles_path
    end
    private
    def article_params
        params.require(:article).permit(:title, :text, :image)
    end
endGemfile
source 'https://rubygems.org'
ruby '2.0.0'
gem 'rails', '4.2.0'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.1.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'bootstrap-sass', '~> 3.3.3' 
gem 'autoprefixer-rails'
gem 'paperclip', '~> 4.2.1'
gem 'aws-sdk', '~> 2.0.22'
group :development, :test do
 gem 'byebug'
 gem 'web-console', '~> 2.0'
 gem 'spring'
 gem 'sqlite3'
end
group :production do
    gem 'pg'
    gem 'rails_12factor'
end
group :doc do
    gem 'sdoc', '~> 0.4.0', require: false
end
Respuestas:
Modifique el aws-sdk de su Gemfile para instalar una versión anterior a la 2.0:
Este problema se introdujo con la nueva versión de aws-sdk (2.0+). Puede leer más aquí: http://ruby.awsblog.com/post/TxFKSK2QJE6RPZ/Upcoming-Stable-Release-of-AWS-SDK-for-Ruby-Version-2
fuente
gem 'aws-sdk-v1'. Esto le permite extraer la gema v2 aws-sdk. Se pueden usar juntos en la misma aplicación debido a los diferentes espacios de nombres.Hay una solución oficial.Use un clip de esta rama: funciona con versiones aws-sdk anteriores a 2
simplemente agregue: parámetro s3_region a su configuración s3 del clip
funciona para mi
fuente
Lo hice funcionar navegando a mi carpeta de gemas y cambiando las gemas a:
Las declaraciones de versión se pueden eliminar.
Para evitar obtener un
gem.lock error, ejecute enbundle updatelugar debundle install, de lo contrario, solo se actualizarán las gemas.Ahora, el
heroku logs -tcomando se puede usar para monitorear el servidor heroku para cargar imágenes.Originalmente recibí un nuevo error
Access Denied Errorpara el servidor de AWS.Para solucionar esto, encontré la
Active Access Key IDúltima fecha en el sitio web de Amazon y usé los comandos heroku para ingresar la últimaAccess key IDySecret access key.Esto me permitió ver mi imagen en heroku.
Había hecho muchos
Access key IDySecret access keystratando de solucionar el problema, pero descubrí que las gemas eran el verdadero problema.Sugerencia: Guarde toda la información de su clave de acceso en OneNote, Bloc de notas, etc. De esta manera puede regresar y verificarla.
fuente
Paperclip se utiliza para utilizar AWS-SDK v1 en las versiones 4.3 y siguientes. Están intentando incluir AWS-SDK v2
documento de actualización oficial https://github.com/thoughtbot/paperclip/blob/master/UPGRADING
debido a cierta incomparabilidad hacia atrás (lea esto https://github.com/thoughtbot/paperclip/issues/2021 ) esto se fusionó pero aún no se lanzó oficialmente, pero debería publicarse en Paperclip v
5.0.0Entonces, como mencionó Vitali Mogilevsky , debes usar esto por ahora:
Cuando se lance Paperclip 5.0, se debe incluir AWS-SDK v2
fuente