- 1. Rails×Next.js×Auth0で認証機能をサックと開発する
- 2. Rails CRUD処理実装のアプリを立ち上げ~Git hub管理まで
- 3. rails環境構築の全体像と、各ツール・コマンドの意味、役割について〜Command Line Tools for Xcodeとhomebrewとrbenvとrubyとbundlerとgemとrailsと…!〜
- 4. raise_conflict_error enumに定義できない命名について
- 5. Byebugについて
- 6. railsのmigrationfileについてのメモ
- 7. ActiveRecordのorderをハッシュで指定した際に、syntax errorが出る
- 8. うんこーどを直したい
- 9. Rails で rake を追加したのに実行できない ( 拡張子が間違っていた )
- 10. 社内部活制度でgemのコードリーディング会を実施した話
- 11. change_column_defaultのrollbackを流すには
- 12. Webpacker::Manifest::MissingEntryError 解消法
- 13. 【Rails】Running via Spring preloader in process…が表示されコマンドが動作しない
- 14. Rails link_toで関数を渡す
- 15. 【Rails】フラッシュメッセージの空白を消したい時
- 16. ZoomAPI(Server-to-server OAuth)でミーティング設定更新の自動化(Update a meeting)してみた!
- 17. 【Rails】任意のErrorをthrowする。
- 18. Ruby 練習問題4 ~特定条件のみに呼応するプログラムの作成~
- 19. 【Rails】テーブルの作成手順
- 20. 【VSCode】Solargraphの導入【Ruby】
Rails×Next.js×Auth0で認証機能をサックと開発する
## はじめに
今回はRailsのAPIモードとNext.jsを利用したSPA構成に、Auth0で認証機能をサクッと開発していきます。
Auth0は導入が簡単かつチュートリアルやドキュメントが豊富なので、初めての人でも簡単に認証機能を実装することができます。
直近で自分が行った新規開発案件でもAuth0が採用されることが多かったです。
なおAuth0についての詳しい解説は本記事では割愛するので気になった方は、こちらを確認してみてください。
https://dev.classmethod.jp/articles/auth0-architecture/
またAuth0とFirebase Authenticationといった他の認証機能との比較記事はこちらで確認してみてください。
https://qiita.com/yutaro50/items/55455fe34385852d5ac0
本記事で解説する内容はAuth0の公式ドキュメントに沿って解説していきます。
https://auth0.com/docs/quickstart/spa/react/01-login
ht
Rails CRUD処理実装のアプリを立ち上げ~Git hub管理まで
アプリを作成する度に未だに毎回検索しているのでここの復習も兼ねてまとめます。
プログラミング初心者向けの記事となります。# 開発環境
– `Rails`
– `Ruby`
– `git`
– `Git hub`
# 手順
– `Rails`でアプリ作成
– `git`で`ローカルリポジトリ`を作成
– `Git hub`で`リモートリポジトリ`を作成
– `ローカルリポジトリ`に`リモートリポジトリ`を追加する
# まずはRailsでアプリを作成
“`:ターミナル
rails _6.1.6_ new アプリ名 -d postgresql -T
cd アプリ名
rails db:create
“`
### コマンドの解説
__Q:なぜ`Rails`のバージョンは`6系`指定?__
A:最新の`Rails`のバージョン`7`はまだ出たばかりで不具合などあり,変更点も多々あるため`6系`最新バージョンを指定しています。__
rails環境構築の全体像と、各ツール・コマンドの意味、役割について〜Command Line Tools for Xcodeとhomebrewとrbenvとrubyとbundlerとgemとrailsと…!〜
railsの学習を始めて数ヶ月経ちましたが、環境構築について、写経のように何も理解できないまま行ってしまっていたので、各ツール、プログラムの全体での立ち位置を意識しながら、どの立場で何をやっているのか、またその中で感じた疑問をまとめてみました。
初学者の方が環境構築するにあたって、今何をしているのかわかる地図のようになればいいなぁと思っております。
誤り等にお気づきの方はご連絡をお願いいたします。■想定読者
①:複数回環境構築を行い、やり方はわかったが、何をしているのか分からない初学者の方々
②:まさに①である筆者の拙い記事を、温かい目で校正していただける先輩エンジニアの方々# 全体イメージ
※あくまで環境構築の一例。
(例えば、rbenvがなくてもrubyのインストールはできるし、bundlerがなくてもgemのインストールは可能。)
### イメージ図
![全体イメージ_rails環境構築.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2710784/5c01e0aa-dbc3-7c48
raise_conflict_error enumに定義できない命名について
## 経緯
`Ruby on Rails`でアプリ作成中にenumでこのような定義し、`rails c -s`で動作確認をしたところエラーが発生しました。
今回の記事ではこのエラー発生原因と解決方法までを残します。同じプログラミング初心者へのヒントになれば幸いです。
“`rb:model
class Present < ApplicationRecord with_options presence: true do validates :present_name validates :present_score validates :present_review end enum present_score: { poor: 1, average: 2, good: 3, verygood: 4, excellent: 5 } end ``` ```:ターミナル ~~~省略~~~~ `raise_conflict_error': You trie
Byebugについて
# はじめに
Railsでは最初から開発環境とテスト環境でByebugが使えるようになっているという記事を見かけまして、デ
バッガがやりやすくなるかなと思い試してみました!
勉強がてらByebugについてまとめてみた記事です。
# 具体的な内容
RailsにはGemファイルに標準でByebugが最初から入っています。
byebugとpry-byebugがあり、微妙に違います。irb上で動くのがbyebugでpry上で動くのがpry-byebugです。
# irbとは
IRBはInteractive Rubyの略です。対話形式でプログラムを実行できるコマンドです。
Rubyのコードの動作確認をしたいときに使います。ちょっとした短いコードの動作確認をするときに便利ですね。
# pryとは
Pryとは、RubyのirbのようにRailsのコンソールでメソッドなどを使えることができるようになる機能です。
# byebugとは
byebugとは、デバッグツールの1つです。Railsにはデフォルトでインストールされています。
イン
railsのmigrationfileについてのメモ
# 概要
railsのmigrationfileは変更したいことを
ファイルの名前に設定し実際の変更を加える
## なぜそのようなことを行うのか?
チーム開発においてmigrationfileは
共有されるものであるため、
自分がなにをやったのかということをわかりやすくするため
### 気をつけるべき点
変更を加えてからもとに戻そうとして
rails db:migrate:resetをしてしまうと
一緒に開発している人との環境に
齟齬が生じるので
概要に記したやり方で実装しないと後々面倒なことになる
#### 上記を踏まえて今日自分が学んだこと
まだチーム開発は経験せず一人で実装を進めているが
チーム開発の学習にいずれは入るため、
上記のことを考えすぎて
一度`rails db:migrate`したmigrationfileはいじれないと思いそこを変更しないまま
ファイルの名前だけ変えた中身が同じファイルを`rails:db:migrate`しようとしてエラーが出てしまい、
メンターの方に聞いたとき
今は個人でやってるからまだやらなくて大丈夫と言われあっさり解決した。
原因はメンター
ActiveRecordのorderをハッシュで指定した際に、syntax errorが出る
# 発生した問題
以下のように[Rails ドキュメント](https://railsdoc.com/page/model_order)に従って記述したところ`syntax error`出た.“`ruby
Page.order(:category_id :asc)
# SELECT “pages”.* FROM “pages” ORDER BY category_id ASC
“`# 解決策
以下のように直したら実行された。ドキュメントの誤植なのかもしれない。“`ruby
# 動かない。rails docに書いてある方法
Page.order(:category_id :asc)# 動く
Page.order(category_id: :asc)
“`
うんこーどを直したい
# はじめに
筆者転職活動中に久々に書かないとなと思うコードに遭遇してしまい筆を取る次第。
この記事のうんこーどがやりたいことを簡単に言うとINPUTに対して該当するプランがあるのか?他に予約がないか?をチェックして通ったら合計金額を返すだけのコードである。皆で仲良く直しましょう。
## お題
皆さんはうんこーどに遭遇したことはありますか?私はあります。
とりあえず何も考えずに以下のコードを御覧ください。“`
class HogeController < ApplicationController def index room = Room.find(params[:room_id]) plans = Plan.where(room_id: params[:room_id], status: true) if plans.count == 0 || params[:started_at].nil? || params[:ended_at].nil? return render json: {} end starte
Rails で rake を追加したのに実行できない ( 拡張子が間違っていた )
rake の拡張子は rake です。
x `lib/tasks/example.rb`
o `lib/tasks/example.rake`
# エラー
“`
Don’t know how to build task ‘example’ (See the list of available tasks with `rails –tasks`)
“`# チャットメンバー募集
何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。
https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ
# メンター受付
https://menta.work/user/5694
社内部活制度でgemのコードリーディング会を実施した話
# 前置き
こんにちは。株式会社Relicのyamashitaというものです。
弊社にはさまざまな部活動がありまして、ruby部、php部、aws部…音楽部、お金部、などなど。。
社員は自由に部活動を選択でき、そのテーマに興味のある仲間と交流しながら技術を高め合う事ができます?あ、最後の2つは技術の話ではなかったですね…。失礼しました。
## ruby部について
私は参加してから1ヶ月ほどになります。
週に一度30分ほどの集まりが催され、rubyをテーマにしたお題について議論をするのがデフォルトです。
いまは3名のエンジニアが運営ですが、つよつよなruby大好き業務委託さんも、この勉強会に大いに貢献してくださっています。運営の皆さん、いつもありがとうございますmm## トライしてみたこと
部活動の話とは別件なのですが、プロジェクト内で既存のテーブルの命名を見直す会をしていたときのこと、
メンターに「たまにはOSSのコードも読んでみるとよいょ」と言われてmastodonのスキーマをほいっと渡されました。
(データの持ち方に応じてどんな命名をしているか勉強になったので
change_column_defaultのrollbackを流すには
### 環境
– Rails 5.2
– Ubuntu20.4### 内容
マイグレーションファイルで、**test1sテーブル**の**test1_codeカラム**に、デフォルト値として **「 “”(空白)」** を設定する記述をします。
“`xxx.rb
def change
change_column_default :test1s, :test1_code, “”
end
“`マイグレーションを実行すると、正常に実行されました。
“`
$rails db:migrate
“`schema.rbを見ると、デフォルト値が確かに反映されています。
“`shema.rb
create_table “test1s”, force: :cascade do |t|
t.string “test1_code”, default: “”
t.datetime “created_at”, null: false
t.datetime “updated_at”, null: false
end
“`マイグレーションファイルをロールバ
Webpacker::Manifest::MissingEntryError 解消法
rails sを実行したところ下記エラーが発生
Webpacker::Manifest::MissingEntryError in Blogs#indexその解決方法を記載していきます。
# 結論
結論から言うと、webpackerをコンパイルすれば直ります。
コンパイルするまでの過程を記載していきます。①テキストエディタから、gemfileを探し、webpackerのバージョンを確認
②バージョンを5.0に更新
③コマンドを実行
④コンパイル
⑤rails s順に詳しく説明していきます。
# webpackerのバージョンを確認
“rails s”を実行するためには、”webpacker”のバージョンを5.0にアップしなければならないようです。
バージョンアップする場合は”terminal”で実行するのではなく、”text editor”の中から”gemfile”を探し、バージョンを確認してください。# バージョンを5.0に更新
webpackerのバージョンが5.0になっていない場合は、書き換えます。
“`gemfile.
変更前: gem ‘web
【Rails】Running via Spring preloader in process…が表示されコマンドが動作しない
# 開発環境
Rails 6.1.4
ruby 2.6.3# 目次
– 実例
– springとは?
– 対処法# 実例
`rails g devise:install`コマンドで`devise`をインストールしようとしたところ、
下記コマンドが出てきて正常に動作しない状態になりました。“`ruby:ターミナル
$ rails g devise:install
Running via Spring preloader in process 23800
#中略
Run `rails generate –help` for more options.
“`# springとは
`spring`とは、アプリケーションをバックグラウンドで実行し続けることで、
開発をスピードアップするRailsアプリケーションプリローダーです。
変更を加えるときにサーバーを再起動する必要をなくしてくれるものだそうです。といいつつも、プロセスが残っていたりすると今回のような問題が発生します。
# 対処法
まずは、springの状態を確認します。
“`
Rails link_toで関数を渡す
# 背景
レシピ共有アプリ制作にて以下のような問題がありました“`ruby:モデル
class User < ApplicationRecord has_many: recipes has_one: list end class Recipe < ApplicationRecord belongs_to: user has_many: ingredients end class Ingredient < ApplicationRecord belongs_to: recipe end #これは買い物リストのモデルで、追加したいレシピの材料をリストテーブルに保存します class List < ApplicationRecord belongs_to: user end ``` 買い物リストにレシピの材料を追加するときに、 パラメーターの中にレシピの情報を追加したかったのですが、 親子関係ではないのでルーティングのネストをせずに実現したい。。。 迷った末見つけた方法をここに残します ```ruby:ルーティング post '/lists', to: 'lists#c
【Rails】フラッシュメッセージの空白を消したい時
フラッシュメッセージの余白を消したい!
めちゃくちゃ邪魔↓
![スクリーンショット 2022-07-13 17.38.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2602337/5db6b191-da85-6f9e-b4a3-3a7c3b156ae4.png)
“`erb:application.html
<% if notice %><%= notice %>
<% end %>
<% if alert %><%= alert %>
<% end %>
“`if文でサクッと消しちゃいます。
ZoomAPI(Server-to-server OAuth)でミーティング設定更新の自動化(Update a meeting)してみた!
[バヅクリ](https://buzzkuri.com)CTOの合原です。
[前回](https://qiita.com/kieaiaarh/items/c604541b08ef19135025)投稿では、zoomAPIを使って、Zoomミーティングを作成するアプリケーションを作ってみました。いいタイミングでこちらのキャンペーンも開催しているので、今回ももちろん、相乗りさせていただきました :sweat_smile:
https://qiita.com/official-campaigns/engineer-festa/2022上記作成したところ、すぐさま、
「新規作成&既にできているZoomミーティングのレコーディング設定を自動化したい」、
という要望が挙がり、それならば!と、
前回作成したアプリケーションに、今回は、[Zoom Meeting update API](https://marketplace.zoom.us/docs/api-reference/zoom-api/methods/#operation/meetingUpdate) を利用して、機能拡張してみま
【Rails】任意のErrorをthrowする。
メモとして残します。
# ■やり方
`raise “エラーメッセージ”`
“`ruby
begin
raise “エラーメッセージ” unless hoge.present?
rescue StandardError => e
#エラーの処理
end“`
以上
Ruby 練習問題4 ~特定条件のみに呼応するプログラムの作成~
こんにちは、プログラミング初学者”fujitacoma”です!
今回は、Ruby練習問題シリーズの4回目です。
Dateクラスを使用し、曜日を呼び出すプログラム問題です!それでは早速始めます!
# 問題
今日の曜日を表示するコードをDateクラスを使用して記述してください。ただし、金曜日だった場合だけ以下のように表示の内容を変えてください。
(出力内容)
「今日は月曜日」
「今日は金曜日だ !!!」## ヒント
### Dateクラス
DateクラスとはRubyの標準ライブラリの機能です。Dateクラスを使うには以下一文を記述します。
“`ruby
require “date”
“`
次に、Dateクラスを用いて「今日の曜日」を取得する場合は以下のように記述します。
“`ruby
Date.today.wday
“`
`wday`は曜日を0(日曜日)から6(土曜日)の整数で取得することができる
Dateクラスに用意されているメソッドです。たとえば、以下のように使うことができます。
“`ruby
require “date”day = Date.tod
【Rails】テーブルの作成手順
Railsでテーブルを作成する機会があったので、自分でやったやり方をまとめる。
## ①コマンドを実行
“`
$ rails g model Test(任意のモデル名)
“`
※`g`はgenerateの略。
間違えた場合は
“`
rails d model user(任意のモデル名)
“`で削除できる。
コマンドを実行すると、以下ファイルが自動で作られる。
①モデルのクラスファイル(app/models配下に作られる)
②マイグレーションファイル(db/migrate配下に作られる)
③テスト系のファイル(この辺は導入しているテストツールで異なる?)## ②マイグレーションファイルを編集
生成されたマイグレーションファイルを修正し、テーブルの中身のカラムを作成するため設定をしていきます。
マイグレーションのファイル名は、生成日時が自動でつき、コマンドで実行したモデル名の複数形で名前がつきます。
例:`20220711090757_create_tests.rb`“`Ruby
class CreateTests < ActiveRecord::Migrat
【VSCode】Solargraphの導入【Ruby】
## 拡張機能をインストールする
solargaphの拡張機能をVSCodeにインストールします。https://marketplace.visualstudio.com/items?itemName=castwide.solargraph
## gemをインストールする
solargraphをグローバルインストールする場合には以下のとおりインストールします。“`:ターミナル
$ gem install solargraph# グローバルなgemのdocumentを生成。
$ yard gems
“`
`bundle exec`しないように`settings.json`に以下のように記述します。“`settings.json
“solargraph.useBundler”: false
“`bundlerでinstallする場合には以下のとおりインストールします。
“`:Gemfile
group :development do
gem “solargraph”
end
“`“`bash
$ bundle install# プロジェクト