ruby скрепка для s3 ошибка - PullRequest
0 голосов
/ 28 мая 2011

Я пытаюсь использовать скрепку с heroku и s3, но у меня есть много таблиц, которые можно связать с фотографиями, которые мы будем использовать: например, обзор. Я пытаюсь отделить фотографию от обзора и загрузить ее по отдельности, но, поскольку я новичок в ruby, я думаю, что потерпел неудачу. У меня установлен и поставлен гем 'aws-s3'.

Это ошибка, которую я получаю:

LoadError in ReviewsController#create

no such file to load -- aws/s3 (You may need to install the aws-s3 gem)
Rails.root: C:/www/devise

Application Trace | Framework Trace | Full Trace
app/controllers/reviews_controller.rb:56:in `new'
app/controllers/reviews_controller.rb:56:in `block in create'
app/controllers/reviews_controller.rb:54:in `create'
app/controllers/redirect_back.rb:23:in `store_location'
This error occurred while loading the following files:
   aws/s3

фото Модель:

class Photo < ActiveRecord::Base
        belongs_to :user
        belongs_to :shop
        belongs_to :baristum
        belongs_to :review

      #paperclip
      has_attached_file :photo,
           :styles => {
           :thumb=> "100x100#",
           :small  => "400x400>",
           :original => "800x800" },
         :storage => :s3,
         :s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
         :path => "/:style/:id/:filename"

    end

схема фото:

t.string   "file_name"
    t.string   "content_type"
    t.integer  "file_size"
    t.integer  "user_id"
    t.integer  "barista_id"
    t.integer  "review_id"
    t.integer  "shop_id"
    t.datetime "created_at"
    t.datetime "updated_at"

Контроллер обзора:

def create
    #add the current user to the review hash, from the session var.
    params[:review][:user_id] = current_user.id

    #move the photo to another var, so I can remove it from the review insert
    @photoUpload = params[:review][:photo]
    params[:review].delete("photo")

    @review = Review.new(params[:review])

    respond_to do |format|
      if @review.save
        @photo = Photo.new(:photo => @photoUpload, :review_id => @review.id)
        @photo.save

        format.html { redirect_to(@review, :notice => 'Review was successfully created.') }
        format.xml  { render :xml => @review, :status => :created, :location => @review }
      else
        @shopList = Shop.find(:all)
        format.html { render :action => "new" }
        format.xml  { render :xml => @review.errors, :status => :unprocessable_entity }
      end
    end
  end

Gemfile

source 'http://rubygems.org'

gem 'pg'
gem 'rake', '~> 0.8.7'
gem 'rails', '3.0.5'
#gem 'sqlite3-ruby', :require => 'sqlite3'
gem 'devise', :git => 'git://github.com/plataformatec/devise', :branch => 'master'
gem 'omniauth', '0.2.0'
gem 'paperclip'
#gem 'RMagick'
gem "simple_form", "~> 1.2.2"
gem 'twitter_oauth', '0.4.3'
gem "rest-client", "1.6.1", :require => "restclient"
gem "sluggable"
gem 'gmaps4rails'
gem 'exception_notification', :require => 'exception_notifier'
gem 'yaml_db'
#gem 'mysql'
gem 'aws-s3'


#gem 'carrierwave'
#gem 'fog' #amazon s3
#gem 'nokogiri'

group :development, :test do
 gem 'rspec-rails'
 gem 'fixjour'
end

Ответы [ 3 ]

1 голос
/ 06 июля 2011

Когда вы включаете в свой файл gem гем 'aws-s3', не забудьте добавить оператор require.

gem 'aws-s3', :require => 'aws/s3'
1 голос
/ 28 ноября 2012

В текущих версиях Paperclip используется камень aws-sdk, а не aws-s3.

Попробуйте запустить последнюю версию этого драгоценного камня в сочетании с последней версией Paperclip, поддерживающей ваш стек Rails (Paperclip 2.x для Rails 2.3 или Paperclip 3.x для Rails 3+).

0 голосов
/ 10 июня 2011

Похоже, что в схеме ваших фотографий должны быть следующие поля.

  t.string :file_file_name
  t.string :file_content_type
  t.integer :file_file_size
  t.datetime :file_updated_at

при выполнении этого генерируется миграция для вас, чтобы сделать это

  #this convention: rails generate paperclip [model] [attachmentname]
  rails generate paperclip photo file

Вы должны иметь имена столбцов таблицы в соответствии с этим соглашением, чтобы скрепка могла их подбирать: 'имя_приложения__файла_,' имя_приложения__контента_типа и т. Д. ... Где вы вызываете "файл" has_attachment вашей модели фотографии.

...