ruby on rails - game - NameError(Paperclip constante no inicializado:: Almacenamiento:: S3:: AWS):
paperclip rails (4)
Estoy tratando de incorporar imágenes a mi aplicación web y sigo encontrando este error después de eliminar algunas características. Todo se redujo a mi controlador de aplicación ''crear'' y no estoy completamente seguro de 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
Existe una solución oficial. Utilice un clip de esta rama: funciona con las versiones aws-sdk anteriores a 2
gem ''paperclip'', :git=> ''https://github.com/thoughtbot/paperclip'', :ref => ''523bd46c768226893f23889079a7aa9c73b57d68''
simplemente agregue: parámetro s3_region a su configuración de paperclip s3
funciona para mi
Lo hice funcionar navegando a mi carpeta de gemas y cambiando las gemas a:
- joya ''clip''
- joya ''aws-sdk''
Las declaraciones de versión se pueden descartar.
Para evitar obtener un
gem.lock error
, ejecute la
bundle update
del
bundle install
lugar de la
bundle install
del
bundle install
, de lo contrario solo se actualizarán las gemas.
Ahora, el
heroku logs -t
se puede usar para monitorear el servidor heroku para cargar imágenes.
Originalmente recibí un nuevo error, Error de
Access Denied Error
para el servidor de AWS.
Para solucionar esto, encontré la
Active Access Key ID
con la última fecha en el sitio web de Amazon y utilicé los comandos heroku para ingresar la última
Access key ID
y
Secret access key
.
Esto me permitió ver mi imagen en heroku.
Había creado tantas
Access key ID
y
Secret access keys
tratando de solucionar el problema, pero descubrí que las gemas eran el verdadero problema.
Consejo: guarde toda la información de su clave de acceso en OneNote, Bloc de notas, etc. De esta manera puede regresar y verificarlos.
Modifique el archivo aws-sdk de su Gemfile para instalar una versión anterior a la 2.0:
gem ''aws-sdk'', ''< 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
Uso de clip para usar AWS-SDK v1 en las versiones 4.3 y siguientes. Están tratando de incluir el AWS-SDK v2
documento de actualización oficial https://github.com/thoughtbot/paperclip/blob/master/UPGRADING
##################################################
# NOTE FOR UPGRADING FROM 4.3.0 OR EARLIER #
##################################################
Paperclip is now compatible with aws-sdk >= 2.0.0.
If you are using S3 storage, aws-sdk >= 2.0.0 requires you to make a few small
changes:
* You must set the `s3_region`
* If you are explicitly setting permissions anywhere, such as in an initializer,
note that the format of the permissions changed from using an underscore to
using a hyphen. For example, `:public_read` needs to be changed to
`public-read`.
debido a cierta incompatibilidad con versiones anteriores (lea este
https://github.com/thoughtbot/paperclip/issues/2021
) esto se fusionó pero oficialmente aún no se lanzó, pero debería lanzarse en Paperclip v
5.0.0
Entonces, como mencionó Vitali Mogilevsky , tienes que usar esto por ahora:
# Gemfile
# ...
gem ''paperclip'', :git=> ''https://github.com/thoughtbot/paperclip'', :ref => ''523bd46c768226893f23889079a7aa9c73b57d68''
Cuando se lanza Paperclip 5.0, se debe incluir AWS-SDK v2