Ich versuche, Bilder in meine Web-App zu integrieren, und es tritt immer wieder dieser Fehler auf, nachdem ich einige Funktionen entfernt habe. Es kam auf meinen 'create' Anwendungscontroller an und ich bin mir nicht ganz sicher, wohin ich von hier aus gehen soll.
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
Antworten:
Ändern Sie das aws-sdk Ihrer Gemfile, um eine Version vor 2.0 zu installieren:
Dieses Problem wurde mit der neuen Version von aws-sdk (2.0+) eingeführt. Weitere Informationen finden Sie hier: http://ruby.awsblog.com/post/TxFKSK2QJE6RPZ/Upcoming-Stable-Release-of-AWS-SDK-for-Ruby-Version-2
quelle
gem 'aws-sdk-v1'
. Auf diese Weise können Sie den v2 aws-sdk-Edelstein ziehen. Sie können aufgrund der unterschiedlichen Namespaces zusammen in derselben Anwendung verwendet werden.Es gibt eine offizielle Lösung. Verwenden Sie eine Büroklammer aus diesem Zweig: Sie funktioniert mit aws-sdk-Versionen über 2
Fügen Sie einfach den Parameter s3_region zu Ihrer Büroklammer s3-Konfiguration hinzu
funktioniert bei mir
quelle
Ich habe es zum Laufen gebracht, indem ich zu meinem Edelsteinordner navigiert und die Edelsteine geändert habe in:
Die Versionsdeklarationen können gelöscht werden.
Um ein zu vermeiden
gem.lock error
, führen Siebundle update
statt ausbundle install
, da sonst nur die Edelsteine aktualisiert werden.Jetzt kann der
heroku logs -t
Befehl verwendet werden, um den Heroku-Server auf Bild-Uploads zu überwachen.Ich habe ursprünglich einen neuen Fehler
Access Denied Error
für den AWS-Server erhalten.Um dies zu beheben, fand ich die
Active Access Key ID
mit dem neuesten Datum auf der Amazon-Website und verwendete Heroku-Befehle, um die neuestenAccess key ID
und einzugebenSecret access key
.Dadurch konnte ich mein Bild auf Heroku anzeigen.
Ich hatte so viele gemacht
Access key ID
undSecret access keys
versucht, das Problem zu beheben, fand aber, dass die Edelsteine das eigentliche Problem waren.Tipp: Speichern Sie alle Ihre Zugangsschlüsselinformationen in OneNote, Notepad usw. Auf diese Weise können Sie sie zurückgeben und überprüfen.
quelle
Büroklammer zur Verwendung von AWS-SDK v1 in Version 4.3 und unten. Sie versuchen, das AWS-SDK v2 einzuschließen
offizielles Upgrade-Dokument https://github.com/thoughtbot/paperclip/blob/master/UPGRADING
Aufgrund einiger Rückwärtsvergleichbarkeit (lesen Sie diese https://github.com/thoughtbot/paperclip/issues/2021 ) wird diese zusammengeführt, aber offiziell noch nicht veröffentlicht, sollte aber in Paperclip v veröffentlicht werden
5.0.0
Wie Vitali Mogilevsky bereits erwähnt hat, müssen Sie dies vorerst verwenden:
Wenn Paperclip 5.0 veröffentlicht wird, sollte AWS-SDK v2 enthalten sein
quelle