Saya mencoba memasukkan gambar ke dalam aplikasi web saya dan saya terus mengalami kesalahan ini setelah menghapus beberapa fitur. Itu datang ke pengontrol aplikasi 'buat' saya dan saya tidak sepenuhnya yakin ke mana saya harus pergi dari sini.
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
Jawaban:
Ubah aws-sdk Gemfile Anda untuk menginstal versi sebelum 2.0:
gem 'aws-sdk', '< 2.0'
Masalah ini diperkenalkan dengan versi baru aws-sdk (2.0+). Anda dapat membaca lebih lanjut di sini: http://ruby.awsblog.com/post/TxFKSK2QJE6RPZ/Upcoming-Stable-Release-of-AWS-SDK-for-Ruby-Version-2
sumber
gem 'aws-sdk-v1'
. Ini kemudian memungkinkan Anda untuk menarik permata v2 aws-sdk. Mereka dapat digunakan bersama dalam aplikasi yang sama karena ruang nama yang berbeda.Ada solusi resmi Gunakan penjepit kertas dari cabang ini: ini berfungsi dengan versi aws-sdk di atas 2
gem 'paperclip', :git=> 'https://github.com/thoughtbot/paperclip', :ref => '523bd46c768226893f23889079a7aa9c73b57d68'
cukup tambahkan: parameter s3_region ke konfigurasi paperclip s3 Anda
bekerja untuk saya
sumber
Saya membuatnya berfungsi dengan menavigasi ke folder permata saya dan mengubah Permata menjadi:
Deklarasi versi dapat dihapus.
Untuk menghindari mendapatkan
gem.lock error
, menjalankanbundle update
bukannyabundle install
, jika tidak hanya permata akan diperbarui.Sekarang,
heroku logs -t
perintah tersebut dapat digunakan untuk memantau server heroku untuk mengunggah gambar.Saya awalnya menerima kesalahan baru,
Access Denied Error
untuk server AWS.Untuk memperbaikinya saya menemukan
Active Access Key ID
dengan tanggal terbaru di situs web Amazon dan menggunakan perintah heroku untuk memasukkan yang terbaruAccess key ID
danSecret access key
.Ini memungkinkan saya untuk melihat gambar saya di heroku.
Saya telah membuat begitu banyak
Access key ID
danSecret access keys
mencoba untuk memperbaiki masalah, tetapi menemukan Permata menjadi masalah yang sebenarnya.Tip: Simpan semua informasi Access Key Anda ke OneNote, Notepad, dll. Dengan cara ini Anda dapat kembali dan memeriksanya.
sumber
Paperclip digunakan untuk menggunakan AWS-SDK v1 di versi 4.3 dan yang lebih lama. Mereka mencoba memasukkan AWS-SDK v2
dokumen peningkatan resmi 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`.
karena beberapa kemunduran yang tidak dapat dibandingkan (baca https://github.com/thoughtbot/paperclip/issues/2021 ini ) ini digabungkan tetapi secara resmi belum dirilis, tetapi harus dirilis di Paperclip v
5.0.0
Jadi seperti yang disebutkan Vitali Mogilevsky , Anda harus menggunakan ini sekarang:
# Gemfile # ... gem 'paperclip', :git=> 'https://github.com/thoughtbot/paperclip', :ref => '523bd46c768226893f23889079a7aa9c73b57d68'
Saat Paperclip 5.0 dirilis, AWS-SDK v2 harus disertakan
sumber