rails

rails newでアプリを立ち上げるまで postgresql

やりたいこと rails newしてアプリを作成していきたいが、様々なエラーに出くわしたので改善していきます。DBはpostgresqlを使用します。 エラー内容 エラー1 % rails _6.0.4_ new calender --database=postgresql --skip-test 2: from /Users/urakamitakuy…

ブラウザで画像をリサイズしアップロード Rails canvas

やりたいこと コンビニ食品の組み合わせ作成し成分表示するポートフォリオを作成しています。 携帯で撮った画像を添付しアップロードしたいのですが、携帯で撮った画像は容量がとても多くサーバーにかなり負担をかけてしまいます。 そこでブラウザで画像表示…

Rails セレクトボックス

やりたいこと railsにてセレクトボックス 機能をつけたい。セレクトボックスの内容はenumの値を表示。 調査 railsdoc.com 実装 main.rb enum stores: { seven: 0, lawson: 1, family: 2 }, _prefix: true enumの値はセブン-イレブン、Lawson、FamilyMartとし…

renderとredirect_to

やりたいこと renderとredirect_toについて理解したい。 Controller controller def new @board = Board.new end def create @board = Board.new(board_params) respond_to do |format| if @board.save format.html { redirect_to @board, notice: 'Success'…

Herokuデプロイ時のエラー enum

やりたいこと Herokuにデプロイした後、ページを開く事ができなかったのでheroku logs --taillで確認したところ以下のエラーが発生していた。このエラーを解消したい。 ActionView::Template::Error (undefined method `humanize' for 0:Integer): <p>店舗名:<</p>…

Activestorage Attachment validatesのエラー

やりたいこと new画面でActivestorage Attachmentを使いファイルを添付した。その時に以下のgemをinstallし拡張ファイルにvalidatesを実装したい。 gem 'active_storage_validations' main.rbに以下を記載したところエラーが発生。 main.rb has_one_attached…

Herokuデプロイ時のエラー

やりたいこと Herokuデプロイ時にエラーが現れたので現れたので解消したい。 remote: ! remote: ! Precompiling assets failed. remote: ! remote: ! Push rejected, failed to compile Ruby app. remote: remote: ! Push failed remote: Verifying deploy..…

ゲストログイン機能をつける

やりたいこと ポートフォリオ作成中なのですが、ユーザーさんに気軽に使って頂くためゲストログイン機能をつけたい。 ちなみログイン認証はsorceryで行っています。 調査 rails ゲストログイン機能と検索 qiita.com blog.aiandrox.com 調査した結果、sorcery…

削除したファイルを復元する

やりたいこと rm -rf binコマンドでbin以下のファイルを削除してしまったので復元したい。 調査 削除したファイル 復元で検索 creat4869.hatenablog.com 実行したこと とりあえずgit pushてgithubにデプロイしました。 ターミナル上で以下のコマンドを打つこ…

chartkick heroku環境でchartkick.rbの編集内容が反映されない

やりたいこと 開発環境では、chartkick.rbで編集したグラフが表示されているが 本番環境ではデフォルトの状態で表示された。 本番環境でも開発環境と同様のグラフを表示させたい。 調査 chartkick.rb herokuで検索 qiita.com 原因 gem 'chartkick.rb'をイン…

RSpecでログイン状態にする方法

やりたいこと rspecでログイン状態のヘッダー内容をテストしたい RSpec.describe '共通系', type: :system do let(:user) { create(:user) } describe 'ヘッダーの表示' do context 'ログイン前' do before { visit root_path } describe 'ヘッダー' do it '…

rspec実行時 OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=error: certificate verify failed (unable to get local issuer certificate)

やりたいこと bundle exec rspec テストを正常に走らせたい。 エラー内容 OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=error: certificate verify failed (unable to get local issuer certificate) OpenSSL::SSL::SSLErrorが発生し、bun…

エラーメッセージの個別表示

やりたいこと form個々にバリデーションのエラーメッセージを表示する 調査内容 techtechmedia.com blog.yuhiisk.com 実装 _error_messages.html.erb <% if object.errors.any? %> <div id="error_messages" class="alert-message"> <ul class="mb-0"> <% object.errors.full_messages_for(text).each do |msg| %> <li><%= msg %></li> </ul></div>…

bucket.rb:885:in `extract_name': Cannot load `Rails.config.active_storage.service`: (ArgumentError) missing required option :name

herokuにデプロイしたいけどエラーが発生 やりたいこと git push heroku main heroku open でherokuにデプロイしたい。 エラー内容 heroku run rails c エラー原因を調べると bucket.rb:885:in `extract_name': Cannot load `Rails.config.active_storage.se…

railsにvue.jsをインストールしたときのエラー

rails webpacker:install:vue railsにwebpackerを使って導入する。 app.vue <template> <div id="app"> <p>{{ message }}</p> </div> </template> <script> export default { data: function () { return { message: "Hello Vue!" } } } </script> <style scoped> p { font-size: 2em; text-align: center; } </style> app.vueを layou…

gem 'fast_jsonapi'

fast_jsonapiとは Netflixが提供しているgemで、JSONのserializerです。jsonのserializerとは、jsonを生成する仕組みのことです。 シリアライズ(serialize)とは、プログラミングでオプジェクト化されたデータを、ファイルやストレージに保存したり、ネット…

Active Storage ActiveStorage::Attached

site.rb class Site < ApplicationRecord has_one_attached :og_image has_one_attached :favicon has_many_attached :main_images end favicon:アイコン画像 og_image:画像を1枚添付できる main_images:画像を複数枚添付できる これらをrails consoleで見て…

undefined method 'favicon' for nil:NilClass

突然以下のエラーに遭遇した。 application_controller def current_site # @current_siteがnillであれば、Site.firstを代入する。 @current_site ||= Site.first end helper_method :current_site current_siteはちゃんと定義できているしな〜... 原因がわ…

ActiveModel::EachValidator

ActiveModel::EachValidatorを継承したクラスでは、validate_eachというインスタンスメソッドにバリデーションルールを実装します。record、attribute、valueという引数については、後ほど解説いたします。 実装 class AttachmentValidator < ActiveModel::E…

単一テーブル継承

単一テーブル継承 あるクラスから派生する全てのサブクラスを交通の1つのテーブルに対応させます。DBにある1つのテーブルを、複数のモデルで共有利用することができます。 テーブル設計の概要 記事テーブルにタグ、カテゴリー、著者テーブルを関連付する。 …

has_many throughでscopeを使う

実装したいこと articleとtagが多対多の関係で、中間テーブルにarticle_tagを設定。タグ名で検索して、そのタグ名に該当する記事を表示させる機能を作ります。 今回は、この機能を実装する上で、自分が間違えたところをアウトプットします。 article.rb clas…

モジュールについて

モジュールの定義 module Greet def hello 'hello' end end クラス定義によく似ています。しかし、モジュールはクラスと異なる点があります。 モジュールからインスタンスを作成することはできない 他のモジュールからクラスを継承することはできない name =…

Rakeタスク Cron Whenever 一時間ごとに表示させる

Rakeタスク まずRakeとは、rubyで処理内容を定義できるビルドツールです。 そしてこのRakeが実行する処理内容を「Rakeタスク」と呼び、定義する場所を「Rakefile」と呼びます。 whenneverと組み合わせることにより、自由なタイミングで処理を走らせることが…

Railsのモデルのscope

scopeとは スコープを設定することで、絞り込み条件、すなわちクエリー用のメソッドの連続した呼び出し部分をまとめて名前をつけ、カスタムのクエリー用メソッドとして使うことができます。 複雑なSQLを何度も書かなくてよくなります。繰り返し利用される絞…