Rails“缺少必需:桶选项”w / AWS S3 + Paperclip - 图像上传适用于Heroku但不适用于本地

时间:2016-04-01 18:54:19

标签: ruby-on-rails amazon-web-services heroku amazon-s3 paperclip

我一直试图让Paperclip(gem版本4.2)与amazon s3(gem版本1.66)在一个简单的博客中工作两天,并且非常感谢您提供的任何建议。

在Heroku上一切正常 - 图像上传到我的存储桶并正确显示 - 但是当我尝试将图像附加到文章时,我在本地收到错误“缺少必需:存储桶选项”。

我在这里缺少什么?

我已经尝试了thisthis以及thisthis相关SO帖子中的解决方案,但没有运气。

感谢。

production.rb和development.rb

HttpStatusCode.Ok

env.rb

config.paperclip_defaults = {
    :storage => :s3,
    :s3_credentials => {
      :bucket => ENV['S3_BUCKET_NAME'],
      :access_key_id => ENV['AWS_ACCESS_KEY_ID'],
      :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
      }
    }

aws.rb

ENV['s3_bucket'] = 'edited_mybucketname'
ENV['aws_access_key_id'] = 'edited_myaccesskey_id'
ENV['aws_secret_access_key'] = 'edited_mysecretkey'
ENV['AWS_REGION'] = 'us-east-1'

_form.html.erb

AWS.ACCESS_KEY_ID = ENV["AWS_ACCESS_KEY_ID"]
AWS.SECRET_ACCESS_KEY = ENV["AWS_SECRET_ACCESS_KEY"]
AWS.REGION = ENV['AWS_REGION']
S3.BUCKET_NAME = ENV["S3_BUCKET_NAME"]

show.html.erb

<%= form_for @article, html: {multipart: true} do |f| %>

  <% if @article.errors.any? %>
    <div id="error_explanation">
      <h2>
        <%= pluralize(@article.errors.count, "error") %> prohibited
        this article from being saved:
      </h2>
      <ul>
        <% @article.errors.full_messages.each do |msg| %>
          <li><%= msg %></li>
        <% end %>
      </ul>
    </div>
  <% end %>

  <p>
    <%= f.label :image %><br>
    <%= f.file_field :image %>
  </p>
  <p>
    <%= f.label :title %><br>
    <%= f.text_field :title %>
  </p>

  <p>
    <%= f.label :text %><br>
    <%= f.text_area :text %>
  </p>

  <p>
    <%= f.submit %>
  </p>

<% end %>

的Gemfile

<%= image_tag @article.image.url(:large), :class => "img-responsive" %>

1 个答案:

答案 0 :(得分:1)

ENV Vars的案例问题:ENV['s3_bucket'](来自您的env.rb文件)与其他地方的ENV['S3_BUCKET']调用不同。

在Heroku上,你可以运行heroku config -a your_app_name | grep bucket来确认它确实是Heroku的大写。 (假设您使用的是* nix机器)。