Estou tentando incorporar imagens em meu aplicativo da web e continuo tendo esse erro depois de remover alguns recursos. Tudo se resumia ao meu controlador de aplicativo 'criar' e não tenho certeza de onde devo ir a partir daqui.
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
Respostas:
Modifique o aws-sdk do Gemfile para instalar uma versão anterior à 2.0:
Este problema foi introduzido com a nova versão do aws-sdk (2.0+). Você pode ler mais aqui: http://ruby.awsblog.com/post/TxFKSK2QJE6RPZ/Upcoming-Stable-Release-of-AWS-SDK-for-Ruby-Version-2
fonte
gem 'aws-sdk-v1'
. Isso permite que você instale a gem v2 aws-sdk. Eles podem ser usados juntos no mesmo aplicativo devido aos diferentes namespaces.Existe uma solução oficial. Use um clipe de papel deste ramo: funciona com as versões do aws-sdk acima de 2
basta adicionar: parâmetro s3_region à configuração do clipe de papel s3
funciona para mim
fonte
Comecei a trabalhar navegando até minha pasta de gemas e alterando as joias para:
As declarações de versão podem ser eliminadas.
Para evitar obter um
gem.lock error
, execute embundle update
vez debundle install
, caso contrário, apenas as gemas serão atualizadas.Agora, o
heroku logs -t
comando pode ser usado para monitorar o servidor heroku para uploads de imagens.Originalmente, recebi um novo erro,
Access Denied Error
para o servidor AWS.Para corrigir isso, encontrei o
Active Access Key ID
com a data mais recente no site da Amazon e usei os comandos do heroku para inserir a últimaAccess key ID
eSecret access key
.Isso me permitiu ver minha imagem no heroku.
Já tinha feito tantos
Access key ID
eSecret access keys
tentando consertar o problema, mas descobri que as joias eram o verdadeiro problema.Dica: salve todas as informações da sua chave de acesso no OneNote, Bloco de notas, etc. Dessa forma, você pode retornar e verificá-las.
fonte
Clip de papel usado para usar AWS-SDK v1 nas versões 4.3 e abaixo. Eles estão tentando incluir o AWS-SDK v2
documento oficial de atualização https://github.com/thoughtbot/paperclip/blob/master/UPGRADING
devido a alguma incomparabilidade com versões anteriores (leia este https://github.com/thoughtbot/paperclip/issues/2021 ) isso foi mesclado, mas oficialmente ainda não foi lançado, mas deve ser lançado em Paperclip v
5.0.0
Então, como Vitali Mogilevsky mencionou, você tem que usar isso agora:
Quando Paperclip 5.0 for lançado, AWS-SDK v2 deve ser incluído
fonte