NameError(未初始化常量Paperclip::Storage::S3::AWS):
NameError (uninitialized constant Paperclip::Storage::S3::AWS):
我正在尝试将图像合并到我的网络应用程序中,但在删除相当多的功能后,我仍然 运行 出现此错误。它归结为我的 'create' 应用程序控制器,我不完全确定我应该从这里去哪里。
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
宝石文件
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
修改 Gemfile 的 aws-sdk 以安装 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 文件夹并将 Gems 更改为:
来让它工作
- gem‘回形针’
- gem‘aws-sdk’
可以删除版本声明。
为了避免得到 gem.lock error
,运行 bundle update
而不是 bundle install
,否则只会更新 gem。
现在,heroku logs -t
命令可以用来监控heroku服务器上传图片。
我最初收到 AWS 服务器的新错误 Access Denied Error
。
为了解决这个问题,我在亚马逊网站上找到了具有最新日期的 Active Access Key ID
,并使用 heroku 命令输入了最新的 Access key ID
和 Secret access key
。
这使我能够在 heroku 上查看我的图像。
我做了很多 Access key ID
和 Secret access keys
试图解决这个问题,但发现宝石才是真正的问题。
提示:将您所有的访问密钥信息保存到 OneNote、记事本等。这样您就可以return并查看它们。
官方有解决办法
使用此分支的回形针:
它适用于 2
以上的 aws-sdk 版本
gem 'paperclip', :git=> 'https://github.com/thoughtbot/paperclip', :ref => '523bd46c768226893f23889079a7aa9c73b57d68'
只需将 :s3_region 参数添加到您的回形针 s3 配置中
适合我
Paperclip 用于在 4.3 及以下版本中使用 AWS-SDK v1。他们正试图包括 AWS-SDK v2
官方升级文档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`.
由于一些向后的不可比性(阅读这个https://github.com/thoughtbot/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
我正在尝试将图像合并到我的网络应用程序中,但在删除相当多的功能后,我仍然 运行 出现此错误。它归结为我的 'create' 应用程序控制器,我不完全确定我应该从这里去哪里。
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
宝石文件
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
修改 Gemfile 的 aws-sdk 以安装 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 文件夹并将 Gems 更改为:
来让它工作- gem‘回形针’
- gem‘aws-sdk’
可以删除版本声明。
为了避免得到 gem.lock error
,运行 bundle update
而不是 bundle install
,否则只会更新 gem。
现在,heroku logs -t
命令可以用来监控heroku服务器上传图片。
我最初收到 AWS 服务器的新错误 Access Denied Error
。
为了解决这个问题,我在亚马逊网站上找到了具有最新日期的 Active Access Key ID
,并使用 heroku 命令输入了最新的 Access key ID
和 Secret access key
。
这使我能够在 heroku 上查看我的图像。
我做了很多 Access key ID
和 Secret access keys
试图解决这个问题,但发现宝石才是真正的问题。
提示:将您所有的访问密钥信息保存到 OneNote、记事本等。这样您就可以return并查看它们。
官方有解决办法 使用此分支的回形针: 它适用于 2
以上的 aws-sdk 版本gem 'paperclip', :git=> 'https://github.com/thoughtbot/paperclip', :ref => '523bd46c768226893f23889079a7aa9c73b57d68'
只需将 :s3_region 参数添加到您的回形针 s3 配置中
适合我
Paperclip 用于在 4.3 及以下版本中使用 AWS-SDK v1。他们正试图包括 AWS-SDK v2
官方升级文档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`.
由于一些向后的不可比性(阅读这个https://github.com/thoughtbot/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