Ошибка BLOB-объекта с Active Storage Rails 5.2 - PullRequest
0 голосов
/ 12 мая 2018

Я только что обновил 5.1.4. приложение до 5.2, и я пытаюсь поменять скрепку для ActiveStorage. В тот момент, когда я пытаюсь обновить существующую запись с изображением, я получаю следующую ошибку:

Невозможно автоматически загрузить константу ActiveStorage :: Blob :: Analyzable, ожидается /Users/Simon/.rvm/gems/ruby-2.4.0/gems/activestorage-5.2.0/app/models/active_storage/blob/analyzable.rb определить это

В моей модели:

has_one_attached :pic

В моем контроллере:

...

  def update
    respond_to do |format|
      if @gin.update(gin_params)
        format.html { redirect_to @gin, notice: 'Gin was successfully updated.' }
        format.json { render :show, status: :ok, location: @gin }
      else
        format.html { render :edit }
        format.json { render json: @gin.errors, status: :unprocessable_entity }
      end
    end
  end

...

 def gin_params   params.require(:gin).permit(:name, :text, :snippet,
 :pic, :slug, :abv, distillery_attributes: [:id, :name], botanical_ids:
 []) end

В хранилище.имл:

   amazon:
    service: S3
    access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %>
    secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %>
    region: xx-xxxx-x
    bucket: xxxxxxx

Я установил ключи доступа через rails credentials:edit

В разработке.rb:

 config.active_storage.service = :amazon

На мой взгляд:

<%= image_tag @gin.pic, class: "border shadow-lg" %>

Хотя я читал http://edgeapi.rubyonrails.org/classes/ActiveStorage/Blob/Analyzable.html, но для меня это не имеет особого смысла.

Ошибка заставила меня искать файл в app/models/active_storage/blob/analyzable.rb, но я не вижу его в своем приложении?

Что я пропустил?

Ответы [ 4 ]

0 голосов
/ 17 января 2019

Запустите rails active_storage:install и rails db:migrate

Добавьте этот камень gem 'aws-sdk-s3', '~>1' и bundle

Удалите credential.yml.enc и master.key, если существует

Запустите EDITOR=vim rails credentials:edit и введите свои учетные данные

И обычно rails s это должно работать

0 голосов
/ 05 июля 2018

У меня точно такая же ошибка.Для меня это было потому, что учетные данные для AWS S3 отсутствовали (это отсутствовало в credentials.yml.enc )

0 голосов
/ 20 декабря 2018

У меня было это исключение, но причина моих проблем заключалась в том, что активное хранилище молча не могло загрузить свои конфигурации из storage.yml:

Загрузка файла в консоль rails показывает исключение (тогда как rails проглатываетисключение при загрузке конфигурации активного хранилища):

YAML.load(ERB.new(File.read("#{Rails.root}/config/storage.yml")).result)
NoMethodError: undefined method `[]' for nil:NilClass

У меня был комментарий с неверной интерполяцией ERB.Исправление этой проблемы решило мою проблему.

0 голосов
/ 13 мая 2018

Решено

Пока у меня уже было gem 'aws-sdk-s3', '~>1' У меня не было require: false

...