Próbuję włączyć obrazy do mojej aplikacji internetowej i po usunięciu kilku funkcji nadal pojawia się ten błąd. Sprowadziłem się do mojego kontrolera „tworzenia” aplikacji i nie jestem do końca pewien, dokąd mam się udać.
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
Artykuły_kontroler.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
Odpowiedzi:
Zmodyfikuj aws-sdk w pliku Gemfile, aby zainstalować wersję wcześniejszą niż 2.0:
gem 'aws-sdk', '< 2.0'
Ten problem został wprowadzony w nowej wersji aws-sdk (2.0+). Możesz przeczytać więcej tutaj: http://ruby.awsblog.com/post/TxFKSK2QJE6RPZ/Upcoming-Stable-Release-of-AWS-SDK-for-Ruby-Version-2
źródło
gem 'aws-sdk-v1'
. Pozwala to na pobranie klejnotu aws-sdk v2. Mogą być używane razem w tej samej aplikacji ze względu na różne przestrzenie nazw.Istnieje oficjalne rozwiązanie Użyj spinacza z tej gałęzi: działa z wersjami aws-sdk powyżej 2
gem 'paperclip', :git=> 'https://github.com/thoughtbot/paperclip', :ref => '523bd46c768226893f23889079a7aa9c73b57d68'
po prostu dodaj parametr: s3_region do konfiguracji spinacza s3
pracuje dla mnie
źródło
Uruchomiłem go, przechodząc do mojego folderu klejnotów i zmieniając klejnoty na:
Deklaracje wersji można usunąć.
Aby uniknąć otrzymania
gem.lock error
, biegnijbundle update
zamiastbundle install
, w przeciwnym razie tylko klejnoty zostaną zaktualizowane.Teraz
heroku logs -t
można użyć polecenia do monitorowania serwera heroku pod kątem przesyłania obrazów.Pierwotnie otrzymałem nowy błąd
Access Denied Error
dla serwera AWS.Aby to naprawić, znalazłem
Active Access Key ID
na stronie Amazon najnowszą datę i użyłem poleceń heroku, aby wprowadzić najnowszeAccess key ID
iSecret access key
.Umożliwiło mi to wyświetlenie mojego obrazu na heroku.
Zrobiłem tak wiele
Access key ID
iSecret access keys
próbowałem rozwiązać problem, ale odkryłem, że klejnoty są prawdziwym problemem.Porada: Zapisz wszystkie informacje o kluczu dostępu w programie OneNote, Notatniku itp. W ten sposób możesz je zwrócić i sprawdzić.
źródło
Spinacz do użycia z AWS-SDK v1 w wersji 4.3 i poniżej. Próbują dołączyć AWS-SDK v2
oficjalny dokument aktualizacji 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`.
ze względu na pewną nieporównywalność wsteczną (przeczytaj to https://github.com/thoughtbot/paperclip/issues/2021 ) jest to scalone, ale oficjalnie jeszcze nie wydane, ale powinno zostać wydane w Paperclip v
5.0.0
Więc jak wspomniał Vitali Mogilevsky , na razie musisz tego użyć:
# Gemfile # ... gem 'paperclip', :git=> 'https://github.com/thoughtbot/paperclip', :ref => '523bd46c768226893f23889079a7aa9c73b57d68'
Po wydaniu Paperclip 5.0, powinien być dołączony AWS-SDK v2
źródło