J'essaie d'incorporer des images dans mon application Web et je continue de rencontrer cette erreur après avoir supprimé de nombreuses fonctionnalités. Cela revenait à mon contrôleur d'application «créer» et je ne suis pas tout à fait sûr de savoir où je devrais aller à partir d'ici.
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
Réponses:
Modifiez aws-sdk de votre Gemfile pour installer une version antérieure à 2.0:
Ce problème a été introduit avec la nouvelle version d'aws-sdk (2.0+). Vous pouvez en savoir plus ici: http://ruby.awsblog.com/post/TxFKSK2QJE6RPZ/Upcoming-Stable-Release-of-AWS-SDK-for-Ruby-Version-2
la source
gem 'aws-sdk-v1'
. Cela vous permet ensuite d'extraire le gem v2 aws-sdk. Ils peuvent être utilisés ensemble dans la même application en raison des différents espaces de noms.Il existe une solution officielle Utilisez un trombone de cette branche: cela fonctionne avec les versions aws-sdk supérieures à 2
ajoutez simplement: le paramètre s3_region à votre configuration s3 paperclip
travaille pour moi
la source
Je l'ai fait fonctionner en accédant à mon dossier de gemmes et en changeant les gemmes en:
Les déclarations de version peuvent être supprimées.
Pour éviter d'avoir un
gem.lock error
, exécutezbundle update
au lieu debundle install
, sinon seules les gemmes seront mises à jour.Maintenant, la
heroku logs -t
commande peut être utilisée pour surveiller le serveur heroku pour les téléchargements d'images.J'ai initialement reçu une nouvelle erreur,
Access Denied Error
pour le serveur AWS.Pour résoudre ce problème, j'ai trouvé le
Active Access Key ID
avec la dernière date sur le site Web d'Amazon et utilisé les commandes heroku pour saisir le dernierAccess key ID
etSecret access key
.Cela m'a permis de voir mon image sur heroku.
J'en avais fait tellement
Access key ID
et enSecret access keys
essayant de résoudre le problème, mais j'ai trouvé que les gemmes étaient le vrai problème.Conseil: enregistrez toutes vos informations de clé d'accès dans OneNote, le bloc-notes, etc. De cette façon, vous pouvez les retourner et les vérifier.
la source
Paperclip utilise pour utiliser AWS-SDK v1 dans les versions 4.3 et ci-dessous. Ils essaient d'inclure l'AWS-SDK v2
document officiel de mise à niveau https://github.com/thoughtbot/paperclip/blob/master/UPGRADING
en raison d'une incomparabilité à l'envers (lisez ceci https://github.com/thoughtbot/paperclip/issues/2021 ), il est fusionné mais officiellement pas encore publié, mais devrait être publié dans Paperclip v
5.0.0
Donc, comme Vitali Mogilevsky l'a mentionné, vous devez utiliser ceci pour l'instant:
Lors de la sortie de Paperclip 5.0, AWS-SDK v2 doit être inclus
la source