質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

1744閲覧

【AWS・S3】ローカルの画像保存の設定中、「uninitialized constant Fog」エラーになる。

akaki

総合スコア15

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2020/06/23 15:31

編集2020/06/24 06:58

前提・実現したいこと

S3の設定中です。ローカルで画像を投稿した際、S3のバケットに保存されるように設定しています。gemはfog-awsを使用しています。
しかし、image_uploader.rbを編集して「storage :fog」に追記すると、エラーが発生してしまいました。

具体的には投稿した画像一覧を表示しているビューに遷移すると、「uninitialized constant Fog」エラーになってしまいます。こちらを解決したいです。

発生している問題・エラーメッセージ

localhost:3000でのエラー画面

NameError in Cafeterias#index uninitialized constant Fog Extracted source (around line #8): %tr - if cafeteria.image? %td= image_tag cafeteria.image.to_s - else %td= image_tag "images/default.png" .card-content

ターミナルでは、テンプレートエラーになります。

Rendered cafeterias/index.html.haml within layouts/application (98.5ms) Completed 500 Internal Server Error in 133ms (ActiveRecord: 5.1ms) ActionView::Template::Error (uninitialized constant Fog): 5: =link_to cafeteria_path(cafeteria.id), class: "content-image__box" do 6: %tr 7: - if cafeteria.image? 8: %td= image_tag cafeteria.image.to_s 9: - else 10: %td= image_tag "images/default.png" 11: .card-content app/views/cafeterias/_cafeteria.html.haml:8:in `block in _app_views_cafeterias__cafeteria_html_haml___1774568313392466466_70130534647840'

該当のソースコード

CarriewaveRb

1require 'carrierwave/storage/abstract' 2require 'carrierwave/storage/file' 3require 'carrierwave/storage/fog' 4 5CarrierWave.configure do |config| 6 config.storage = :fog 7 config.fog_provider = 'fog/aws' 8 config.fog_credentials = { 9 provider: 'AWS', 10 aws_access_key_id: Rails.application.secrets.aws_access_key_id, 11 aws_secret_access_key: Rails.application.secrets.aws_secret_access_key, 12 region: 'ap-northeast-1' 13 } 14 config.fog_directory = 'バケット名' 15 config.asset_host = 'https://s3-ap-northeast-1.amazonaws.com/バケット名' 16end

ちなみに、image_uploader.rbの「storage :fog」を「storage :file」に変更すると、通常通り投稿した画像一覧を表示するビューに遷移できます。
こちらを「storage :fog」に変更すると、表題のエラーが発生します。

ImageuploaderRb

1class ImageUploader < CarrierWave::Uploader::Base 2 # Include RMagick or MiniMagick support: 3 # include CarrierWave::RMagick 4 include CarrierWave::MiniMagick 5 6 # Choose what kind of storage to use for this uploader: 7 # storage :file 8 storage :fog 9 10 # Override the directory where uploaded files will be stored. 11 # This is a sensible default for uploaders that are meant to be mounted: 12 def store_dir 13 "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 14 end 15 16 # Provide a default URL as a default if there hasn't been a file uploaded: 17 def default_url(*args) 18 # # For Rails 3.1+ asset pipeline compatibility: 19 ActionController::Base.helpers.asset_path("images/" + [version_name, "default.png"].compact.join('_')) 20 # 21 # "/images/fallback/" + [version_name, "default.png"].compact.join('_') 22 end 23 24 # Process files as they are uploaded: 25 # process scale: [200, 300] 26 # 27 # def scale(width, height) 28 # # do something 29 # end 30 31 # Create different versions of your uploaded files: 32 version :thumb do 33 process resize_to_fit: [300, 300] 34 end 35 36 # Add a white list of extensions which are allowed to be uploaded. 37 # For images you might use something like this: 38 def extension_whitelist 39 %w(jpg jpeg gif png) 40 end 41 42 # Override the filename of the uploaded files: 43 # Avoid using model.id or version_name here, see uploader/store.rb for details. 44 # def filename 45 # "something.jpg" if original_filename 46 # end 47 48end

GemfileLock

1~ 2fog-aws (3.6.5) 3 fog-core (~> 2.1) 4 fog-json (~> 1.1) 5 fog-xml (~> 0.1) 6 ipaddress (~> 0.8) 7~

補足情報(FW/ツールのバージョンなど)

rails 2.4.2.3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

fog-aws (3.6.5)

https://qiita.com/misogi@github/items/4f2716fd3a3eb2ebe7b8

これじゃないですか?

投稿2020/06/25 16:18

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問