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=1754
Articles_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
end
Gemfile
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 update
lugar debundle install
, de lo contrario, solo se actualizarán las gemas.Ahora, el
heroku logs -t
comando se puede usar para monitorear el servidor heroku para cargar imágenes.Originalmente recibí un nuevo error
Access Denied Error
para 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 ID
ySecret access key
.Esto me permitió ver mi imagen en heroku.
Había hecho muchos
Access key ID
ySecret access keys
tratando 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.0
Entonces, como mencionó Vitali Mogilevsky , debes usar esto por ahora:
Cuando se lance Paperclip 5.0, se debe incluir AWS-SDK v2
fuente