- 0.0.1. コミット→プッシュ→マージ
- 0.0.2. Github ActionsでECSに自動デプロイできているのに想定通りの挙動にならなかったエラーをご紹介
- 0.0.3. Railsのcolumn名の変更
- 0.0.4. gemとbundlerについて
- 0.0.5. 【2023年版】Turboを有効化したままRails 7.0でDeviseを使う方法
- 0.0.6. Ruby on RailsのアプリにLINEを組み込む。
- 0.0.7. Rails 7.0にバージョンアップしたらquery_log_tagsを有効化しよう
- 0.0.8. ShopifyAPI::Auth::Oauth::AuthQueryでwrong number of arguments (given 1, expected 0)が出る場合(Rails7 + Ruby3.0以上)
- 0.0.9. uninitialized constant ◯◯[定数名] (NameError)への対処法
- 0.0.10. 開発をはじめて半年の私がデータの並び替えで使えるなぁと思ったもの
- 0.0.11. 【Rails】SNS機能で相互フォロー一覧を取得する
- 0.0.12. Turbo Rails Tutorial をやってみた! 0章(Mac、Ruby 3.2.0、Rails 7.0.4)
- 0.0.13. バリデーションを始めて扱う
- 0.0.14. 【Rails】エラー Mysql2::Error: Table ‘〇〇_development.〇〇’ doesn’t exist:
- 0.0.15. AWS内のDBを dbeaver に表示させる
- 0.0.16. yarn build したときのエラー解決方法(Rails7 アプリで esbuild を使用時)
- 0.0.17. ユーザー管理機能(Devise)について
- 0.0.18. git mergeしたらnot something we can mergeが出たので解決してみた
- 1. 解決策
コミット→プッシュ→マージ
# コミットまで
1.現在のブランチを確認
“`git
$ git branch
“`2.ブランチを切ってそのブランチに移動
“`git
$ git checkout -b (作成するブランチ名)
“`3.作業を行う
4.修正したファイルの確認
“`git
$ git status
“`5.ソースコードを確認
“`git
$ git diff
“`6.全てステージングに追加する
“`git
$ git add -A
“`7.コミットを行う
“`git
$ git commit -m “コミットメッセージ”
“`8.コミットログを確認
“`
$ git log
“`# プッシュをおこなう
1.githubへプッシュ
“`git
$ git push origin 現在のブランチ名
“`# マージを行う
1.masterブランチに移動
“`
$ git checkout master
“`2.masterブランチへマージ
“`
$ git merge マージしたいブランチ名
“`3.リモートブランチの
Github ActionsでECSに自動デプロイできているのに想定通りの挙動にならなかったエラーをご紹介
# 本記事について
本記事は、先日Github ActionsにてECSへCI/CDパイプラインを構築した際に自身がハマってしまった2つのエラーについて備忘録も込めて記載します。
GitHub Actionsではエラーにならずに通ったものの、サイトを確認してみると想定通りの挙動になっていなかった部分となります。
※初学者のため、間違い等ございましたらご指摘いただけますと幸いです。# 環境
– MacOS: Ventura13.0.1
– Ruby:3.12
– Rails:7.0.4# ①Railsの環境変数Master.keyの不足によるエラー
ポートフォリオの作成中、まずCircleCIでパイプラインを構築したのちに、Github Actionsに移行したので、そこまで大きいエラーはないと思っていましたが、エラーに遭いました。## 起きた事象
Github ActionsではエラーにならずECRへpush後、ECSへデプロイできていましたが、サイトを開くとfrontendとbackendの通信がうまくいっていなかったです。
“`java:cloudwatch log
Railsのcolumn名の変更
Railsのカラム名を間違ってmigrateしてしまったので修正方法を書いておきます。
自分の理解度を高めるためのアウトプットです。//誤りの記述
rails g model User nam:string age:integer
カラム名をnameにしたかったがnamにしていた。db:migrateの前に修正すればよかったが、気づかずmigrateしてしまった。
なので以下の処理を実施
1.migrationファイルを作成
$ rails generate migration rename_[変更前のカラム名]_column_to_[モデル名(複数形)]2.migrationファイルを編集
生成されたファイルにchangeメソッドを追加し、そこに変更したいカラム名を記述する。
rename_column :テーブル名, :変更前のカラム名, :変更後のカラム名class RenameNamColumnToUsers < ActiveRecord::Migration[7.0] def change rename_column :users, :nam,
gemとbundlerについて
# はじめに
gemとbundlerについて、
ちゃんと理解できていなかったので、備忘録としてまとめる。## gemとは
gem形式にパッケージングされたRuby用の外部ライブラリのこと。gem形式とは
外部ライブラリのフォルダやファイルをgem形式(.gem)という1つのファイルに(パッケージング)まとめたもののこと。
参考:
https://pikawaka.com/ruby/how-gem-works#gem(gemパッケージ)とはライブラリとは、汎用性の高い機能を他のプログラムで呼び出して使えるように部品化して集めたファイルのこと。
ライブラリには大きく分けて標準ライブラリ、組み込みライブラリ、外部ライブラリの3種類あり、
gemは外部ライブラリにあたる。備考:
Railsもgemパッケージとして提供されている。
他にも有名なgemとしては、ユーザ認証を簡単に実装できる「devise」、ページネーションを簡単に実装できる「kaminari」がある。## RubyGemsとは
Rubyのパッケージ(gem)を管理するシステムで、Ruby1.9以降から標準ライ
【2023年版】Turboを有効化したままRails 7.0でDeviseを使う方法
## はじめに
Rails 7.0がリリースされて1年以上経ちましたが、Railsのメジャーな認証ライブラリであるDeviseは未だにRails 7.0に部分的にしか対応していません([参考](https://github.com/heartcombo/devise/blob/main/CHANGELOG.md#481—2021-12-16))。
そのため、Rails 7.0で`rails new`したRailsアプリケーション(つまり、Turboが有効になっている状態)だと、Deviseを使おうと思っても意図しない挙動になります。そこで、この記事ではTurboを有効化したままRails 7.0でDeviseを使う方法を紹介します。
## 対象バージョン
この記事は以下のバージョンで動作確認しています(それぞれ2023年1月4日時点での最新バージョンです)。– Rails 7.0.4
– Devise 4.8.1
– turbo-rails 1.3.2
– Ruby 3.2.0なお、将来的にDeviseがRails 7.0に対応した場合、この記事の内容はおそらく不要な
Ruby on RailsのアプリにLINEを組み込む。
## はじめに
– 今回は[【個人開発】日用品を自動で購入してくれるアプリを作りました。](https://qiita.com/prg_mt/items/decb7912e82e6384fafb)で実装したLINEログインとLINEbotについての解説記事になります。## Lineログイン機能について
### Railsアプリの作成
まずはじめに アプリを作成していない方は`rails new`してアプリを作成してください。### Deviseの導入
LINEログイン機能を実装する前にまずはDeviseでログイン機能を実装していきます。“`ruby:Gemfile
gem ‘devise’
“`Gemfileに記載が完了したら、`bundle install`を実行
次に、ターミナルで以下を実行し、Deviseを使えるようにしていきます。
“`terminal:ターミナル
rails g devise:install
rails g devise User
rails db:migrate
“`ここまで問題なく実行できれば、`rails s`でサーバを立ち
Rails 7.0にバージョンアップしたらquery_log_tagsを有効化しよう
# Profit
– verbose_query_logs = true でない環境でrails serverのログが少し追いやすくなる
– ActiveJobを使っている場合はジョブのログも
– スロークエリログの発生箇所が少し特定しやすくなる# How to
Railsアプリケーションの設定に以下を追加するだけ“`rb
config.active_record.query_log_tags_enabled = true# カスタマイズする場合は `query_log_tags=` を使って指定可能
config.active_record.query_log_tags = [ :controller, :action ]
“`# 前提知識
## Verbose Query Logsについて
Railsアプリケーションを開発していてふとログを見た時に、SQLログのすぐ下にソースコードのどの行で呼ばれたのかが出力されている (下記参照) のが地味に便利だったりする。
“`
Article Load (0.2ms) SELECT “articles”
ShopifyAPI::Auth::Oauth::AuthQueryでwrong number of arguments (given 1, expected 0)が出る場合(Rails7 + Ruby3.0以上)
Shopifyの公式gemを使っていて発生したエラーに対する対処法。
(Rails7, Ruby3.0以上で多分発生)filtered_params = request.parameters.symbolize_keys.slice(:code, :shop, :timestamp, :state, :host, :hmac)
keyword_params = Hash.ruby2_keywords_hash(filtered_params)
auth_query = ShopifyAPI::Auth::Oauth::AuthQuery.new(keyword_params)auth_result = ShopifyAPI::Auth::Oauth.validate_auth_callback(
cookies: cookies.to_h,
auth_query: auth_query
)キーワード引数の挙動の変更によるものと思います。
uninitialized constant ◯◯[定数名] (NameError)への対処法
# 概要
PF作成中にdockerでサーバーの起動を試みた際、
uninitialized constant OmniAuth (NameError)というエラーが表示。
つまづいたので記録として残します。# 対処法
①以下項目を確認
・ファイル名とclass名が一致しているか?
・ファイルpathとmoduleの定義が一致しているか?
・Railsにファイルを読み込ませているか?
(引用元と詳細:https://qiita.com/yoshixj/items/17de45928f52264fd6a0)②サーバー起動時に問題が発生した場合は、当該定数のGemがインストールされているか確認
以上です。
# ちなみに
私は②でした。
そもそもGemfileにomniauth-twitter(定数OmniAuthを使うためのGem)を記載していませんでした。ミスは大体単純な所で発生しがち、気をつけます。
開発をはじめて半年の私がデータの並び替えで使えるなぁと思ったもの
開発業務に携わって半年、
データの並び替えで使えるなぁと思ったものを2つ書き留めておきます。開発環境
・Ruby
・Rails
・MySQL
・Macなお、この記事で「order」とは、「取得したレコードを特定のキーで並び替える」ことを指します。
[参考] https://railsdoc.com/page/model_order#### 今回使うテーブル
Naoさん、Kenさん、Mikaさんのやることリストテーブルを仮定します。
contentはやることリストの内容、personは人、categoryは項目のカテゴリー、dateは日付を格納する想定です。“`
+—-+————+——–+————–+————+
| id | content | person | category | date |
+—-+————+——–+————–+————+
| 1 | 女子会 | Nao | frie
【Rails】SNS機能で相互フォロー一覧を取得する
フォロー一覧、フォロワー一覧を実装する記事はよく見かけるのですが、相互フォロー一覧を取得する実装は見かけなかったので、今回記事にしました。
## 前提
基本的なフォロー・フォロワー機能がすでに実装してあることが前提となります。
具体的には以下のような実装を前提としています。## モデル
“`ruby: user.rb
class User < ApplicationRecord has_many :relationships, class_name: 'Relationship', foreign_key: 'follower_id', dependent: :destroy, inverse_of: :follower has_many :reverse_of_relationships, class_name: 'Relationship',
Turbo Rails Tutorial をやってみた! 0章(Mac、Ruby 3.2.0、Rails 7.0.4)
本記事は、?「Turbo Rails Tutorial」の学習を進めていく際の個人メモです!
https://www.hotrails.dev/turbo-rails
# 0章 [Turbo Rails tutorial introduction](https://www.hotrails.dev/turbo-rails/turbo-rails-tutorial-introduction)
この章では、環境構築をしていきます。ちなみに私は Mac ローカルで進めます。最新の ruby で進めたかったので ruby 3.2.0 をインストールしました。
“`terminal
$ brew update
$ brew upgrade ruby-build
$ rbenv install 3.2.0
“`インストール時に下記と同じエラーが出ました。
https://github.com/rbenv/ruby-build/discussions/2118
ruby 3.2.0では、`libyaml`や`libffi`を別途インストールする必要があるそうです。
“`te
バリデーションを始めて扱う
# バリデーション(検証)
Active Recordを使って、モデルがデータベースに“`書き込まれる前にモデルの状態をバリデーション(検証: validation)“`できます。Active Recordにはモデルチェック用のさまざまなメソッドが用意されており、属性が空でないかどうか、属性が一意かどうか、既にデータベースにないかどうか、特定のフォーマットに沿っているかどうか、多岐にわたったバリデーションが行えます。バリデーションは、“`データベースを永続化するうえで極めて重要“`です。そのため、save、updateメソッドは、バリデーションに失敗するとfalseを返します。このとき実際のデータベース操作は行われません。上のメソッドにはそれぞれ“`破壊的なバージョン (save!、update!) があり、こちらは検証に失敗した場合にさらに厳しい対応“`、つまりActiveRecord::RecordInvalid例外を発生します。以下はバリデーションの簡単な例です。
“`rb
class User < ApplicationRecord validates
【Rails】エラー Mysql2::Error: Table ‘〇〇_development.〇〇’ doesn’t exist:
# 概要
アプリ作成時、コントローラ、モデルを一気に作成し、その後
“`$ rails db:migrate“` コマンド実行でタイトルのエラー。
解決方法をまとめます。# 結果
“`rails db:migrate:status“` でdown状態を確認後、
マイグレーションファイルの日時部分を入れ替え、
“`$ rails db:migrate “`で解決。![スクリーンショット 2023-01-03 16.55.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2235743/b5c32f8d-ec10-0936-ded1-d90ae7ebb106.png)
青丸の部分を入れ替えます。
# 原因
外部キー、モデル作成($rails g コマンド)の実行順番が原因でした。以下、画像のcommunity_topic、article、community_topic_tagテーブルで解説します。
![スクリーンショット 2023-01-03 16.42.12.png](ht
AWS内のDBを dbeaver に表示させる
## 概要
AWS(EC2 ,RDS CLOUD9) + Ruby on Railsでプロジェクト作成した。
AWS内で使用しているDB(Mysql)をWindows(ローカル環境)にインストールした
Dbeaver上でRails プロジェクト(本番環境)のDB(Mysql)を表示させる例を示す## 前提条件
### 1.開発環境
EC2-インスタンス使用 (Amazon Linux)
-インスタンスid: i-〇〇〇〇〇…
-パブリック IPv4 アドレス:〇〇.〇〇〇.〇〇.〇〇
-Elastic IP: 上記に同じ統合開発環境 AWS cloud9を使用
DB: sqlite3 (Railsでの標準DB)### 2.本番環境
EC2-インスタンス使用 (Amazon Linux)
-インスタンスid: i-△△△△…
-EC2ユーザー名: ec2-user(デフォルトのまま :変更可)
-パブリック IPv4 アドレス:△△.△△△.△△.△△
-Elastic IP: 上記に同じDB: mysql 使用 (AWS R
yarn build したときのエラー解決方法(Rails7 アプリで esbuild を使用時)
# エラー内容
以下のようなエラーが出たときの解決方法を記録しておきます。
“`bash
docker-compose run –rm app yarn buildCreating ***_app_run … done
yarn run v1.22.17
$ esbuild app/javascript/*.* –bundle –sourcemap –outdir=app/assets/builds –public-path=app/assets/builds
/myapp/node_modules/esbuild/bin/esbuild:159
throw new Error(`
^Error:
You installed esbuild for another platform than the one you’re currently using.
This won’t work because esbuild is written with native code and needs to
install a
ユーザー管理機能(Devise)について
# deviseとは
webアプリケーションにおいて認証機能を実装するためのgemです。# 導入方法
1\. ターミナルにてcdコマンドを使い、作成しているAppのディレクトリ内に移動する2\. Gemfile内で追記する
“` .Gemfile
gem ‘devise’
“`3\.ターミナル内にてGemをインストール
“` .terminal
bundle install
“`
:::note info
gemをインストールした後はローカルサーバーを再起動する
:::4\.deviseの設定ファイルを作成
“`.terminal
rails g devise:install
“`# deviseのモデルを作成
1\.モデルの作成
“`.terminal
rails g devise [モデル名]
“`2\.テーブルに必要なカラムを追加
モデルを作成するとdb/migrateのディレクト内に先程生成したdeviseのモデルテーブルが生成されている。そのファイル内で追加を行う:::note info
ex)nicknameを文字列型、空なしにす
git mergeしたらnot something we can mergeが出たので解決してみた
今回はgit mergeを実行しようとした以下のエラーが発生した
“`
merge: sigh-up – not something we can merge
“`解決策
ブランチ名をコピペしたらいけた。
ブランチを確認して、マージしたいブランチ名をここでコピーします。
“`git
git branch
filling-in-layout
* main
modeling-users
rails-flavored-ruby
sign-up
static-pages
“`コピーしたマージ名をペーストしてあげると解決できました。
“`
git merge <マージ名> #マージ名を入力するときだけペーストする。
“`考えられる原因
おそらくタイプミスなのですが、ぱっと見はよくわかりませんでした。なので、この手のエラーが出たらとりあえずブランチ名をコピペしてみるといいかもしれないです。
redirect_to @userは redirect_to user_url(@user)と同値
以下の二つのコードは同値です。
“`Ruby
redirect_to @user
“`“`Ruby
redirect_to user_url(@user)
“`
投稿のコメントにYoutubeのURLを入れ込む方法
今回はユーザーが投稿した投稿にコメントをする際にYoutubeのURLを埋め込む方法を紹介します。
投稿のコントローラー:favorite(普段自分が使っているコントローラー)
コメントのコントローラー:comment①commentsテーブルにyoutube_urlカラムを追加します。
“`ruby:コマンドプロンプト
rails generate migration AddYoutube_urlToComments youtube_url:string
“`
“`ruby:コマンドプロンプト
rails db:migrate
“`②commentコントローラーに、コメント内でYoutubeのURLを埋め込むためのコードを書きます。
“`ruby:app/controller/comments_controller.rb
def create
favorite = Favorite.find(params[:favorite_id])
comment = favorite.comments.build(comment_params)