Я пытаюсь включить изображения в свое веб-приложение, и после удаления некоторых функций продолжаю сталкиваться с этой ошибкой. Все сводилось к моему «созданию» контроллера приложения, и я не совсем уверен, что мне делать дальше.
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
ruby-on-rails
ruby
amazon-web-services
paperclip
Яйцо Шесть
источник
источник
Ответы:
Измените aws-sdk вашего Gemfile, чтобы установить версию до 2.0:
gem 'aws-sdk', '< 2.0'
Эта проблема возникла в новой версии aws-sdk (2.0+). Подробнее читайте здесь: http://ruby.awsblog.com/post/TxFKSK2QJE6RPZ/Upcoming-Stable-Release-of-AWS-SDK-for-Ruby-Version-2
источник
gem 'aws-sdk-v1'
. Затем это позволяет вам использовать гем v2 aws-sdk. Их можно использовать вместе в одном приложении из-за разных пространств имен.Есть официальное решение Используйте скрепку из этой ветки: она работает с версиями aws-sdk выше 2
gem 'paperclip', :git=> 'https://github.com/thoughtbot/paperclip', :ref => '523bd46c768226893f23889079a7aa9c73b57d68'
просто добавьте: параметр s3_region в конфигурацию s3 скрепки
работает для меня
источник
Я заставил его работать, перейдя в папку с драгоценными камнями и изменив драгоценные камни на:
Объявления версии можно отбросить.
Чтобы избежать появления
gem.lock error
, запуститеbundle update
вместоbundle install
, иначе будут обновлены только драгоценные камни.Теперь эту
heroku logs -t
команду можно использовать для отслеживания загрузки изображений на сервере heroku.Я изначально получил новую ошибку
Access Denied Error
для сервера AWS.Чтобы исправить это, я нашел
Active Access Key ID
последнюю дату на веб-сайте Amazon и использовал команды heroku для ввода последнихAccess key ID
иSecret access key
.Это позволило мне просмотреть свое изображение на Heroku.
Я сделал так много
Access key ID
иSecret access keys
пытался решить проблему, но обнаружил, что настоящая проблема - драгоценные камни.Совет. Сохраните всю информацию о ключе доступа в OneNote, Блокноте и т. Д. Таким образом вы можете вернуться и проверить их.
источник
Скрепка используется для использования AWS-SDK v1 в версиях 4.3 и ниже. Они пытаются включить AWS-SDK v2
официальный документ об обновлении https://github.com/gotitbot/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`.
из-за некоторой обратной несовместимости (прочтите этот https://github.com/oughttbot/paperclip/issues/2021 ), это объединено, но официально еще не выпущено, но должно быть выпущено в Paperclip v
5.0.0
Итак, как упомянул Виталий Могилевский , вы должны использовать это сейчас:
# Gemfile # ... gem 'paperclip', :git=> 'https://github.com/thoughtbot/paperclip', :ref => '523bd46c768226893f23889079a7aa9c73b57d68'
При выпуске Paperclip 5.0 должен быть включен AWS-SDK v2.
источник