Docker、devise、carrierwave、rmagick、heroku、circleciを使用してポートフォリオを作成中です。
db/seeds.rbにて、オブジェクト作成時に画像を保存しているのですが、本番環境において下記の画像のように、最初の画像しか表示されません。
予想では、過去のどこかのタイミング(いつかは不明)で画像を読み込むことができており、その時の画像ファイルをキャッシュしたものが表示されているような気がしています。
その線で検索しましたが、解決には至らず...
10日間以上解決できず、本当に抜け出せなくなってしまいました。
どなたか心当たりがありましたら、どんな些細なことでも構いませんのでアドバイスをお願い致します。
コード等の追加など、お伝えしていただければすぐに追加させていただきます!
状況
viewでの画像表示用コードは、
html
1= image_tag muscle.image_url(:thumb) 2 3※ muscleにはMuscleオブジェクトが入っています。 4※ 引数の:thumbは、ImageUploaderにて定義した画像サイズ設定です。
出ているエラー内容
$ heroku logs コマンドにて、
** ActionController::RoutingError (No route matches [GET] "/uploads/muscle/image/25/thumb_buttock.jpg"):**
というエラーが表示されています。
試したが解決しなかった方法
- Dockerfileにてyarnをインストールし、RUN bin/rails assets:precompile を実行
また、heroku本番環境でもheroku run bundle exec rake assets:precompile RAILS_ENV=production を実行
- 画像へのpathが通ってないかと考えましたが、pathを変えずに画像ファイルを削除してみたところ、ファイルが存在しないエラーが発生するため、pathは正しいと考えています。
- dockerからherokuへの画像ファイル渡しができてないと考えましたが、1枚だけ画像が表示されているので、渡せてはいるようです。(怪しい)
- 本番環境にてrails:db:resetまたはrails db:migrate:resetを実行後、heroku run rails db:seedを実行
- 実行したdockerコンテナのpush方法を下記に載せます。
実行したコマンド $ git push origin <開発ブランチ> $ git push heroku <開発ブランチ>:master (このpushは不必要だと思いますが、一応試してみました。) $ heroku container:login $ heroku container:push web $ heroku container:release web $ heroku run rails db:migrate:reset RAILS_ENV=production DISABLE_DATABASE_ENVIRONMENT_CHECK=1 $ heroku run rails db:seed $ heroku run bundle exec rake assets:precompile RAILS_ENV=production
意味不明な部分
・spec/fixtures配下に配置したテスト用に入れている画像は表示できますが、このディレクトリに画像を入れて、
その入れた画像をオブジェクトに入れようとすると、画像のurlはimage属性に挿入されますが、画像は表示されません。
ここから推測すると、過去に画像をアップできたが、それ以降画像をアップできていないと思われますが、方法がわからず...
image: File.open("#{Rails.root}/spec/fixtures/test_image.jpg")
現在のコード
**config/application.rb** config.assets.initialize_on_precompile = false
**config/environments/production.rb** config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present? # 環境変数ではなく「true」を渡してみてもダメでした。
**Dockerfile** FROM ruby:2.6.6 RUN apt-get update -qq && apt-get install -y \ build-essential \ imagemagick \ nodejs \ unzip \ vim RUN curl https://deb.nodesource.com/setup_12.x | bash RUN curl https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list RUN apt-get update && apt-get install -y nodejs yarn RUN CHROME_DRIVER_VERSION=`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE` && \ wget -N http://chromedriver.storage.googleapis.com/$CHROME_DRIVER_VERSION/chromedriver_linux64.zip -P ~/ && \ unzip ~/chromedriver_linux64.zip -d ~/ && \ rm ~/chromedriver_linux64.zip && \ chown root:root ~/chromedriver && \ chmod 755 ~/chromedriver && \ mv ~/chromedriver /usr/bin/chromedriver && \ sh -c 'wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -' && \ sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list' && \ apt-get update && apt-get install -y google-chrome-stable RUN mkdir /app WORKDIR /app COPY Gemfile /app/Gemfile COPY Gemfile.lock /app/Gemfile.lock RUN bundle install COPY . /app RUN bin/rails assets:precompile CMD ["rails", "server", "-b", "0.0.0.0"]
db/seeds.rb
Muscle.create!(name: 'arm', image: File.open("#{Rails.root}/app/assets/images/arm.jpg"))
Muscle.create!(name: 'back', image: File.open("#{Rails.root}/app/assets/images/back.jpg"))
Muscle.create!(name: 'buttock', image: File.open("#{Rails.root}/app/assets/images/buttock.jpg"))
(app/assets/images配下に画像を配置して試した場合)
または
db/seeds.rb
Muscle.create!(name: 'arm', image: File.open("#{Rails.root}/public/images/arm.jpg"))
Muscle.create!(name: 'back', image: File.open("#{Rails.root}/public/images/back.jpg"))
Muscle.create!(name: 'buttock', image: File.open("#{Rails.root}/public/images/buttock.jpg"))
(public/images配下に画像を配置して試した場合)
```ここに言語を入力 **uploaders/image_uploader.rb** class ImageUploader < CarrierWave::Uploader::Base include CarrierWave::MiniMagick def store_dir "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" end end
Gemfile
1 2ruby 2.6.6 3 4gem 'bootsnap', '>= 1.1.0', require: false 5gem 'bootstrap', '~> 4.3.1' 6gem 'bootstrap4-kaminari-views' 7gem 'carrierwave' 8gem 'coffee-rails', '~> 4.2' 9gem 'counter_culture' 10gem 'devise' 11gem 'devise-i18n' 12gem 'dotenv-rails' 13gem 'faker' 14gem 'fog-aws' 15gem 'haml_lint' 16gem 'haml-rails' 17gem 'jbuilder', '~> 2.5' 18gem 'jquery-rails' 19gem 'kaminari' 20gem 'mini_magick' 21gem 'omniauth', '1.9.1' 22gem 'omniauth-facebook' 23gem 'omniauth-rails_csrf_protection' 24gem 'puma', '~> 3.11' 25gem 'rails', '~> 5.2.1' 26gem 'rails-i18n', '~> 5.1' 27gem 'sass-rails' 28gem 'turbolinks', '~> 5' 29gem 'uglifier', '>= 1.3.0' 30 31group :development, :test do 32 gem 'better_errors' 33 gem 'binding_of_caller' 34 gem 'byebug', platforms: %i[mri mingw x64_mingw] 35 gem 'factory_bot_rails' 36 gem 'pry-rails' 37 gem 'rspec-its' 38 gem 'rspec-rails' 39end 40 41group :development do 42 gem 'bullet' 43 gem 'listen', '>= 3.0.5', '< 3.2' 44 gem 'rubocop' 45 gem 'rubocop-rails' 46 gem 'spring' 47 gem 'spring-watcher-listen', '~> 2.0.0' 48 gem 'web-console', '>= 3.3.0' 49end 50 51group :test do 52 gem 'capybara', '>= 2.15' 53 gem 'rspec_junit_formatter' 54 gem 'selenium-webdriver' 55 gem 'webdrivers' 56end 57 58group :development, :test, :production do 59 gem 'mysql2', '>= 0.4.4', '< 0.6.0' 60end 61 62gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw jruby] 63
この質問を見ていただきありがとうございます。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー