rails game ruby-on-rails ruby amazon-web-services paperclip

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.



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