- 1. Rails6でSNS認証を実装しよう!連携後に本登録ページに遷移!
- 2. [Rails]RSpecでテストを行う準備(FactoryBot使用)
- 3. 【Rails】5分でacts_as_lists実装する方法
- 4. 【Rails】checkboxを用いて曜日を複数選択させる入力フォームを作る
- 5. ゲストログイン機能 [Rails/LexicallyScopedActionFilter:]
- 6. 初学者による復習[カラムを追加してみよう!]
- 7. [Rails]テストコードを学ぼう①(初めの1歩)
- 8. 投稿した時間を表時させる
- 9. マイグレーションファイルをdownせずに削除してしまった
- 10. 正規表現の一合目
- 11. rails アプリ作成 rails6(準備編)
- 12. [Rails]param is missing or the value is empty: show
- 13. 無名相互再帰の記述例(各言語まとめ)
- 14. Docker + Rails6 + MySQL8 の環境構築
- 15. RSpec 導入時にチーム内で意識・決定しておきたいルール
- 16. [Rails] jQueryプラグインslickを使ったカルーセルスライダーの実装
- 17. 【Ruby】discordの対話botを作成する
- 18. rails チャット通知
- 19. Rubyのバージョン変更について
- 20. Ruby pを使ったコード検証(デバック)
Rails6でSNS認証を実装しよう!連携後に本登録ページに遷移!
# はじめに
SNS認証のQiitaの記事は多く存在をしているのですが、SNS認証してそのまま登録完了という流れの記事しか見当たりませんでした。そこで、利用規約や名前をを確認する本登録ページを設けるための記事を書きました。
こちらの記事はgemのDeviseに付け加えていき実装していきます。SNS認証=>本登録ページ=>登録完了=>自動でログインしてリダイレクト
上記の流れをつくっていきます。
# DeviseにOmniAuthを導入しよう
### 1. Gemを追加
“`ruby:Gemfile.rb
gem ‘omniauth’
gem ‘omniauth-facebook’
gem ‘omniauth-google-oauth2’
“`### 2. credentialsにIDとシークレットを追加
“`credentials.yml.enc
facebook:
client_id: <クライアントID>
client_secret: <クライアントシークレット>google:
client_id: <クライアントID>
[Rails]RSpecでテストを行う準備(FactoryBot使用)
今回の記事ではRSpecでテストコードを記述していく前に、いろいろと準備をしていきます。
テストコードについては別記事で解説させていただきます。
#開発環境
> ruby 2.6.3
> Rails 5.2.6#前提
– FactoryBot使用
– Faker使用
– capybara使用先にGemの説明を軽くしてから、実際にインストールして準備していきます。
#RSpecとは
Railsにおいて、とてもメジャーなテストフレームワークです。
Gemで導入ができて、コードが読みやすく、ドキュメントも豊富。Railsで開発を行う現場でもRSpecを使用しているところが多いそうです。
#FactoryBotとは
テストデータの作成をサポートしてくれるGemです。
あらかじめ、テストデータを作っておいて、そのテストデータを使ってテストを実行できるので、テストコードを書く際にいちいちデータを作らなくてもFactoryBotを呼び出すだけで、データが使えるので、コードが簡素になります。
FactoryBotを使用するには`spec/factories/モデル名.r
【Rails】5分でacts_as_lists実装する方法
# はじめに
Railsアプリケーションは爆速で開発できるところがメリットですので、開発スピードに着目して記事を書きました。
5分で acts_as_list の検証ができるように、vim だけでも書けるようにファイルパスを全てしましたので、
vimを使ってパスをコピー&ペーストして、ファイル内のコードを変更することができます。プロトタイプを作る時などにスピード重視で作る事は開発にとって重要な事だと思いますので、ぜひご活用ください。
# コマンド
“`bash
# Rails アプリケーション作成
$ rails _5.2.4.2_ new five_min_actsaslist
$ cd five_min_actsaslist# scaffold でモデルを作成
$ rails g scaffold user name:string
$ rails g scaffold post title:string user_id:integer position:integer
$ rails db:migrate RAILS_ENV=development# テストデー
【Rails】checkboxを用いて曜日を複数選択させる入力フォームを作る
#はじめに
`checkbox`で1つ以上選択必須の入力フォームを作っていきます。
今回は、チームを新規作成する際に活動曜日を最低1つ以上、かつ複数選択可の入力フォームを作っていきます。#曜日カラムを作成する
`Team`モデルは既に作成してある前提で進めていきます。
私は曜日ごとのカラムを`boolean型`で作成しました。“`
$ rails g migration AddWeeklyToTeams
“`
下記のように記述します。“`ruby:生成したマイグレーションファイル
class AddWeeklyToTeams < ActiveRecord::Migration[6.1] def change add_column :teams, :activity_monday, :boolean add_column :teams, :activity_tuesday, :boolean add_column :teams, :activity_wednesday, :boolean add_column :teams, :act
ゲストログイン機能 [Rails/LexicallyScopedActionFilter:]
ゲストログインを実装時にRubocopでチェックすると、
`Rails/LexicallyScopedActionFilter: update, destroy`
このように指摘されました。その際のコードは下記の通りです。
“`ruby:registrations_controller.rb
module Users
class RegistrationsController < Devise::RegistrationsController before_action :ensure_normal_user, only: %i[update destroy] def ensure_normal_user redirect_to root_path, alert: "ゲストユーザーの更新・削除はできません。" if resource.email == "guest@example.com" end #〜〜〜〜略〜〜〜〜〜 end ``` https://www.rubydoc.info/gems/r
初学者による復習[カラムを追加してみよう!]
ものすごく初歩的なアウトプットなので現役の方には有益な情報ではないと思うが、
自身の復習も兼ねてアウトプットをしていこうと思う。
今回はカラムを追加するために必要なことを記述していく。**そもそもカラムとはなんぞや**
カラムとはものすごく噛み砕いて説明するとデータベースに入っているデータの項目のこと。
例えば名前、電話番号、アドレスなどなど。それでは実際に記述してみると下記のようになる。
“`Ruby
create_table :users do |t|
## Database authenticatable
t.string :email, null: false, default: “”
t.string :encrypted_password, null: false, default: “”
t.string :name, null: false
t.string :password, null: false
t.str
[Rails]テストコードを学ぼう①(初めの1歩)
# はじめに
ご意見やご指摘など頂けますと大変助かります。
今後のITの世界へ入る身分として、是非ともご教授頂ければと思います。
また、自分自身の成長と共に
初学者の方々の力になればと思い少しずつ共有できればと思います!# テストとは。
アプリケーションの挙動を確認するためのコードのことです。
手動でぽちぽちとブラウザで挙動を確認するよりも`断然効率が良い`です。__手動によるデメリット__
・人為的なミスの可能性
・仕様変更の手間(もう1回全部やり直し)
・確認した記録が残らない# テストコードを学ぶポイント
・細かい記述は、調べれば良い。覚える必要はない。
・どの部分を確認したいのかを明確にする。
・不安ならば、「binding.pry」# テストコードで登場するもの列挙
*私が学習した範囲で列挙します`Rspec`
Ruby on Railsのテストコードを書くために用いられるGem`rails_helper`
Rspecを用いてRailsの機能をテストするときに、共通の設定を書いておくファイル`describeメソッド`
テストコードのグループ分
投稿した時間を表時させる
#はじめに
投稿した時間が分かればなんとなくいいなと思いました。![スクリーンショット 2021-07-16 18.44.58(2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1264460/56ac724e-5d6c-b400-4ab0-983dd4ec962b.png)
最終的にはこのような形になりました。
#はじめに試したとこ
いつものようにニックネームや写真をビューに表示すればいいかなと思いましたので以下のように記述しました。
“`erb
<%= review.created_at %>前に投稿
“``モデル.created_at`としました。
`created_at`は削除しなければデフォルトでカラムに存在します。
結果は・・・
![スクリーンショット 2021-07-16 18.50.00(2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1264460/916b3fd7-f8
マイグレーションファイルをdownせずに削除してしまった
注:初学者のためメモ的な扱いで書いています。
間違っている事があればコメントで教えてください。今回手順を覚えるために
一度作成した全てのデータをファインダーから
右クリックでファイル事全て削除して
新しくrails newで作り直してしまった再度同じ手順で行った際に過去のマイグレーションファイルがdbのデータ上に残ったまま
新たにもう一つ作った物と2つ出来てしまった。“`sh
Status Migration ID Migration Name
————————————————–
up 20210716030715 ********** NO FILE **********
down 20210716052228 Create users
____________________________________
“`********** NO FILE **********というファイルで、
up状態のファイルを削除したい
– 削除したいファイルのマイグレー
正規表現の一合目
Rubyにおける正規表現を確認する為には、以下のサイトと記事を参考にさせて頂きました。
## 参考記事
https://rubular.com/
https://qiita.com/jnchito/items/893c887fbf19e17d3ff9
https://qiita.com/jnchito/items/64c3fdc53766ac6f2008
https://qiita.com/jnchito/items/6f0c885c1c4929092578
## 正規表現に触れてみる
https://qiita.com/jnchito/items/893c887fbf19e17d3ff9
### 電話番号を抽出する
“`
12-3456-7890
“``\d`は半角数字を抽出するメタ文字。これを活用する事で、上記の電話番号を以下のように表現できる。
“`ruby
/\d\d-\d\d\d\d-\d\d\d\d/
“`### 電話番号のパターンを増やす
`12-3456-7890`この電話番号以外の数字の羅列も抽出できるようにする。例えば、以下のよ
rails アプリ作成 rails6(準備編)
初学者のためメモみたいな感じです。
間違ってるところあればコメントで指摘してください!0.githubにリポジトリ作成
1.rails new
“`
rails _6.1.4_ new session_login -d postgresql
“`
|ver.| | ファイル名|2.ディレクトリに移動
“`
$ cd session_login“`
~/workspace/session_login (master) $ のようにディレクトリを移動したこと確認!!
忘れないように、githubと紐付けもしとく。
git add .
git commit -m”メッセージ”
git push3.データベースの作成
rails db:createを実行することによって、config/database.ymlの設定に従って、データベースを作成する!
“`
$ rails db:create“`
ターミナルのログでは、以下のようにデータベースが作成される
“`
Created da
[Rails]param is missing or the value is empty: show
railsで開発時にエラーがでたのでメモを残します。
#解決策
上記のようなエラーが出たため調べました。https://qiita.com/Takka_Log/items/32dae78d7e3892e7b051
上記のサイトを参考にして解決しました。
このサイトによると“`params.require(:collect)“`の部分が不要であると書かれていたため、pramsの記述を変更したところ解決しました。
#まとめ
今回は、このような方法で解決しました。しかし、上記のサイトでは、form_withにモデルを関連付けしていなかったことがエラー内容となっているので、今後はまずform_withの記述内容について正しいのか確認したい。
無名相互再帰の記述例(各言語まとめ)
[これ](https://qiita.com/ytaki0801/items/596efbbcb07d38630bc9)やら[これ](https://qiita.com/ytaki0801/items/fb4edeba41ff1bfb4b52)と同じ趣旨のお遊び記事です.
[相互再帰](https://ja.wikipedia.org/wiki/%E7%9B%B8%E4%BA%92%E5%86%8D%E5%B8%B0)は,複数の関数の間で呼び出し合うことで再帰となっているものです.関数それぞれは自分自身を呼び出す自己再帰ではなく,気づかず無限ループとなってしまったということもある形式です.言語記述解析では,文章構造(構文)が相互再帰となっていることもあって,むしろ積極的に使われることが多い形式でもあります.
この相互再帰を,様々なプログラミング言語のラムダ式(無名関数,無名メソッド)**のみ**でやってみようというのがこの記事の趣旨です.
# 相互再帰の例(偶数奇数判定)
Pythonでの記述例は次の通り.余りを求める演算なしに定義できる例でもあるのですが,1を引くたびに関数呼
Docker + Rails6 + MySQL8 の環境構築
# はじめに
タイトルに記述した構成で環境構築をする機会があり、その備忘録をここに残します。
元々はReactとTypeScriptを導入するつもりだったが、それはまたの機会に。# Railsプロジェクトの新規作成
使用するDockerImageを決めて以下の記事を参考にし作成。
| Image | tag |
|:–:|:–:|
|ruby|3.0.2|
|mysql|8.0|参考記事
[Docker + Rails6 + React + TypeScript の環境構築](https://qiita.com/yuki-endo/items/a99cdde478c2a2d057d9)現段階の`Dockerfile`と`docker-compose.yml`、それとGemfileは以下の通り
“`Dockerfile:Dockerfile
FROM ruby:3.0.2RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add – \
&& apt-get update \
RSpec 導入時にチーム内で意識・決定しておきたいルール
# はじめに
Ruby / Rails の代表的なテストフレームワークである RSpec ですが、書き方の流派やポリシーは人によって異なります。ここでは、筆者個人がベストだと思っている、あるいは単純に好みな書き方やポリシーを紹介します。
必ずしもこれに従うべきというわけではありませんが、導入時にチーム内で決めておかなければならないこととして参考にしていただければ幸いです。
# 自然言語を統一する
これは、テストケースの文言を英語で書くか日本語で書くか (あるいはもっと他の言語で書くか)、ということです。これはどちらにすべきというのは一概には決められず、チーム内でどちらが良いか議論して判断すべきです。
もちろん、チーム内の開発者全員が、何の問題もなく英語を読み書きできるのであれば、英語を選定すべきでしょう。なぜなら、RSpec は、自然言語、特に英語として自然に読めるような DSL になっているからです。
とはいえ、チーム全員が日本人で、必ずしも全員が英語を難なく読み書きできるわけではなく、なおかつ今後も英語話者の人がチームに参画する予定がないのであれば、日本語で書く
[Rails] jQueryプラグインslickを使ったカルーセルスライダーの実装
スライダー実装時にslick以外の手段も手段も検討したのですが、その中でもslickが1番使い勝手がよさそうだったので、slickに決めました。
なので今回は、jQueryのプラグインであるslickを使って、カルーセルスライダー(スライドショー)の実装をしていきます。
デモは[slickの公式サイト](https://kenwheeler.github.io/slick/)か、ぼくの[ポートフォリオ](https://oogiri-legendroad.com/)で、確認してみてください。
#開発環境
> ruby 2.6.3
> Rails 5.2.6#前提
– jQueryが使える状態
– FontAwesomeが使える状態
– 使用する画像は各自用意して、assets/imeges直下に配置してください
– homes/topで実装####スライダーの仕様
スライダーは自動で切り替え、手動で切り替え、両方できるように実装していきます。– 自動で画像が切り替わる
– 矢印クリックで、画像切り替え
– 下のドットクリックで、その画像に切り替え以上前提をふま
【Ruby】discordの対話botを作成する
# はじめに
ゲーマーには必須アプリとも呼ばれるdiscordにて、究極の暇つぶし勉強のために対話botをつくってみました。
今回はA3RTというサービスのAPIを使用しています。
Rubyでのbot作成記事が少なかったため、何かしらの参考になれば幸いです。
# 事前準備
下記の準備は完了しておいてください。
・Discord bot作成
[こちらの記事](https://qiita.com/tomynomint/items/4f35b281ec09eae3c1d2)で丁寧に説明されておりましたので、割愛いたします。・A3RT APIライセンス発行
[ここから](https://a3rt.recruit-tech.co.jp/product/talkAPI/registered/)A3RTのTalkAPIライセンスを発行できますので、案内に沿って発行を行います。
必要なものはメールアドレスのみなので、簡単に発行できます。・開発環境にdiscordのgemをインストール
“`gem install discordrb“`
https://github.
rails チャット通知
#[Rails]DM、チャット通知機能+チャット一覧、チャット機能の実装
##目標
チャットの通知機能の実装に関する記事が少ないように感じたので投稿しました。
こんな感じでの画面です。チャットのページを開くと通知の青いマークが消えます。
チャット機能、チャットの一覧ページと通知の実装手順を紹介します。
(*Deviseを用いたログイン機能を実装している前提でコードを書いています。)
##参考記事
チャット機能そのものについては、下記記事を
Rubyのバージョン変更について
rbenvを最新のバージョンに更新
“`ruby:qiita.rb
puts$ rbenv install –list インストールできるバージョンの確認
$ brew upgrade ruby-build rbenvを最新の状態にする
$ rbenv install 2.7.2 バージョンを2.7.2に更新する場合
$ rbenv rehash #インストール完了後に実行
$ rbenv versions バージョン確認
$ rbenv local 2.7.2 バージョンを2.7.2に指定
rbenv versionsを実行して2.7.2の横に*がついていればOK
“`
Ruby pを使ったコード検証(デバック)
###pを使ったコードの検証方法
想定した処理がどこまで正しく行われているか?デバックして状況確認をする**使えそうなシーン**
・ エラーが起こったとき
・ 今この変数は文字列?数値?配列?
・ ifで正しく条件分岐されてるのか?
・ 他人のコードの処理の流れを追いながら理解したい**方法**
「p」を処理ごとに分かりやすく文字/数値で入れる—————————————————-
**例① 他人のコードの処理の流れを追いながら理解したい**“` .rb
p “a:”
seats_and_groups = gets.split(/\s/)
p “b:”
empty_seat = [*1..(seats_and_groups[0].to_i)]
p “c:”
seats_count = empty_seat.count
p “d:”
number_of_visitors = seats_and_groups[1].to_i
p “e:”
[*1..number_of_visitors].e