Ruby関連のことを調べてみた2022年08月09日

Ruby関連のことを調べてみた2022年08月09日

Ruby バイナリーサーチ

# バイナリーサーチとは
ソート済みのリストや配列に入ったデータ(同一の値はないものとする)に対する検索を行うときに用いられる手法です。まず、中央の値を確認し、検索したい値との大小関係を用いて、検索したい値が中央の値の右にあるか、左にあるかを判断します。それを繰り返し、片側には存在しないことを確かめながら検索していく方法です。

“`
#13の位置を知りたい
array = [2, 3, 5, 6, 8, 10, 11, 13, 16]
#添字    0, 1, 2, 3, 4, 5, 6, 7, 8
                             ↓
[10, 11, 13, 16]
#添字 5, 6, 7, 8

[13, 16]
#添字 7, 8
“`
上記のような配列があったとして「13」を検索したいとしたら、まず配列の中央の要素を求める。4番目が中央なので「8」。ターゲットの「13」は「8」より大きいとなるので次は「10」を左端として検索する。

次に

元記事を表示

ruby on rails を AWS Cloud9で実施 2 コントローラー Viewについて python初心者

https://qiita.com/TaichiEndoh/items/35294ff656499d9bbf8d

前回の続きです

環境 AWS Cloud9
environment type EC2
instance type t2.micro
platform ubuntu server 18.04 LTS

## controllerの作成

まずは
controller
を作成してみます

## MVC アーキテクチャの復習
model
データベースアクセスなど データ関連処理

View
画面表示

controller
リクエストやレスポンスを制御
view と model の橋渡し

さっそくコマンドを入力します

generate を g 省略可能です
“`
rails g controller
“`
上のコマンドで controller を作成してくださいという
命令になります

#### 今回は rails g controller users index を実施
以下の users はコントローラーに付ける名前です
データベースと連携する場合は複数形にするの

元記事を表示

100日後くらいに個人開発するぞ!day067

## 今日はルーティングを整えて新規ファイルを追加してみた!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2632394/4ee73fef-da7d-5e93-836a-e72c26557dbf.png)

## 今日の学び
### ルーティング
* ルーティングを書き換えることでトップページのURLを変更することができる
* `”home#top”`の部分が変わらない限りhomeコントローラのtopアクションに対応するビューファイルの内容がブラウザに表示される

### コマンド
* コマンドは「コントローラ名」と「アクション名」が含まれる
* `rails generate controller コントローラ名 アクション名`を実行することで対応するファイルが自動で用意される
* 同じ名前のコントローラがある場合はコマンドを使うことができない

### ルーティングとアクションを追加する
* ルーティングとコントローラのファイルにコードを書き足すことでルーティングとアクショ

元記事を表示

deviseとdevise_token_authとomniauthの使い分けがわからなかったので調べてみた

はじめに

自分の備忘録として、わからなかったことや詰まった部分をアウトプットしています。
同じ部分で悩んでいる方の力になったら幸いです。

何に詰まったのか

現在ポートフォリオを作成しており、バックエンドをrails apiで開発をしています。
その中でアカウントを作成しなくてもTwitterのアカウントでログインができる機能を実装したいと考えました。

この機能を実現するためには、ログイン機能のgemとして有名なdevise以外に何が必要なのかな?と思い調べたところ、
・devise_token_auth
・omniauth
のgemが検索でヒットしました。

実装方法についてはたくさんの記事があったので、おそらく理解していなくてもなんとなくで作成できる気がします。
「それぞれ何の役割があるのか/何をしたいときにどのgemが必要なのかが分かっていない」まま開発をしてもエラーの際にとても時間がかかったり、目的からずれた使い方をしてしまうと思ったので実装前にそれぞれの役割を簡単に整理しようと思いました。

色々な記事を参考にして自分なりに整理をしてみましたが、ポートフォリオ

元記事を表示

【Rails6】Initialization autoloaded the constants ApplicationHelper を解消する

# 初めに

Rails6 で Rspec を稼働させると`DEPRECATION WARNING`が出るので、それを解決します。

# 解決方法

## エラー内容

以下のエラーが発生しました。

“`console
DEPRECATION WARNING: Initialization autoloaded the constants ApplicationHelper,DeviseHelper、ApplicationController、
DeviseController、Devise::SessionsController、Devise::PasswordsController、Devise::UnlocksController、Devise::RegistrationsController、
Devise::ConfirmationsController.

Being able to do this is deprecated. Autoloading during initialization is going
to be an error condition in

元記事を表示

ゲストのアクセス制限

## はじめに

ポートフォリオ製作で作成したゲストログイン機能に閲覧制限をかける際に悩んだのでメモとして残そうと思いました。

## ゲストログイン機能

“`ruby
class Menber < ApplicationRecord # ゲストユーザー def self.guest_user find_or_create_by!(email: 'guest_user@example.com') do |guest| guest.password = SecureRandom.urlsafe_base64 end end end ``` ```ruby class Admin::SessionsController < Devise::SessionsController  def guest_log_in guest = Menber.guest_user sign_in guest # ユーザーをログインさせる redirect_to root_path, notice: 'ゲストユーザーとしてログインしました

元記事を表示

「パーフェクトRuby on Rails【増補改訂版】」第一章

# 第一章 Ruby on Railsの概要

## Railsの思想
– Railsには設計思想として以下4つの思想を強く打ち出している。

### ①CoC(Convention over Configuretion)
– 直訳すると「設定より規約」
– 社員情報を表現するモデルをEmployeeモデルとした場合、Railsでは以下のような規約に則う。
– データベースのテーブル名はモデル名の複数形のEmployeesにする。
– /employeesというURLは社員の一覧を表す。
– /employees/1というURLは社員ID:1の社員情報を表す。

### ②DRY(Don’t Repeat Yourself)
– 「同じことを繰り返さない」という思想

### ③REST(Representational State Transfer)
– Webアプリケーション設計概念の1つ
– CRUDによる機能追加がしやすい自然な設計になる。

### ④自動テスト
– 自動テストを重要視している。
– Railsのプロジェクトを作成すると、雛形の一部として

元記事を表示

環境変数でパスを通す

## 調べようと思ったきっかけ

home brewをインストールしたあと、[brew -v](https://atmarkit.itmedia.co.jp/flinux/rensai/linuxtips/203showcomver.html)でうまく確認できなかったのがきっかけで調べようと思いました。

**home brew についての参考文献**
[【完全版】Homebrewとはなんぞや](https://zenn.dev/sawao/articles/e7e90d43f2c7f9)
## 実際に起きたエラー

“`bash
Warning: /opt/homebrew/bin is not in your PATH.
==> Installation successful!

==> Homebrew has enabled anonymous aggregate formulae and cask analytics.
“`

google翻訳先生にお願いしたところ /opt/homebrew/bin  がパスに含まれていないとのこと

~~それぐらい読めるようになっとき

元記事を表示

「パーフェクトRuby on Rails【増補改訂版】」まとめ

# はじめに
– 「パーフェクトRuby on Rails【増補改訂版】」を通して学んだことや自身が疑問に思ったことをまとめるためのQiitaです。
– 自身の不足している知識や曖昧だった知識を補填するための材料として本書を使用するため、既知の内容については記事にはまとめません。
– 本書を通して個人的に疑問を持った箇所についてもまとめるため、本書に記載のないものを含んだまとめ記事となります。

## 対象とするRuby on Railsのバージョン
– Ruby 2.6.6
– Rails 6.0.3

## 各章リンク
– [第一章 Ruby on Railsの概要](https://qiita.com/drafts/c64e59552ef9a012f52e/edit)

元記事を表示

本当にRubyが死んだ、Railsが時代遅れなのか?そうと思わないです。

Rubyは死んだ、Railsは時代遅れという人が最近増えてきたようですが、
本当にそうなりますか。

僕が大学から日本でRubyを勉強して、Railsでいろんなサービスを開発しました。
本当にRailsが大好きです。
10年前(2012頃)、Railsがすごく発展しました。Railsエンジニアになりたい若いものが多いし、
Railsエンジニア給料も他の言語より高かったです。

その後、ReactJSとかGo Langなどが現れて、Railsの人気がどんどん減ったことを感じました。
でもRails強みは失われるのではなく、うまく活かせていないと思います。
以下の強みは他の技術より優れていると思います。

1. プロダクトを開発するスピードが速いです。
ベンチャー企業によって、スピードが一番重要です。MVP版を早めにリリースして、ユーザーに早く評価してもらって、サービスを改善していきます。Railsでは要件定義からリリースまで3ヶ月以内に実現可能です。それにPM、Railsエンジニア、テスターの4人開発チームで十分なので、コストも低いです。

2. Agile開発に向いています。
Agil

元記事を表示

Railsのdeviseで新規登録画面URLは親テーブルのidを渡し、ログインURLには渡さない

## 背景
deivseを使ってユーザー管理をしています。
今回新規登録時には親テーブルのidをパラメータに渡し、ログイン画面では渡さない、というルーティングを実装しました。

## バージョン
Ruby3.1.2
Rails7.0.3

## sign_upのルーティング
sign_upは下記の記事に書きました。
[Railsのdeviseで新規登録の際に親テーブルの外部キーをパラメーターに渡す](https://qiita.com/r-kubo/items/e412e7a0fd8cd47e5e88)

## sign_inのルーティングを追加
“`routes.rb
devise_for :admin_users, skip: :all
devise_scope :admin_user do
get ‘/admin_groups/:admin_group_id/admin_users/sign_up’, to: ‘admin_users/registrations#new’, as: ‘admin_user_registration’
get ‘/adm

元記事を表示

Railsのdeviseで新規登録の際に親テーブルの外部キーをパラメーターに渡す

## 実装背景
deviseを使ったユーザー管理を実装していますが、パラメーターに親テーブルのidを渡してユーザー新規登録を実装する必要がありました。
具体的には下記のようなURLで新規登録画面を開くことを目標とします。
“`
/admin_groups/:admin_group_id/admin_users/sign_up
“`

## 該当DB
管理会社テーブル
| admin_groups |
| —- |
|name|

管理者テーブル
| admin_users |
| —- |
| name |
| email |
| password |
| admin_group_id |

## 新規登録フロー
参考までに今回実装予定の新規登録フローを紹介します。
1. 既に登録されているユーザーがログインする。
1. 新規ユーザー招待画面で招待したいユーザーのメールアドレスを入力、送信
1. 届くメール本文には、自動で新規登録画面のURLが記載されている。
1. URLのパラメータにはログインユーザーのデータに入っているadmin_group_idが自動で入り、同じ

元記事を表示

【Rails6】入力テキストの改行とURLのリンクの有効化

## はじめに
ポートフォリオを作成する中で、入力フォームで登録した内容をビューで表示させると、改行できていない・URLが有効化されていないということに気付きました。
URLについては、入力フォームでurl_fieldを使用すれば簡単に解決できるかと思います。しかし、今回は、入力フォームに普通の文章とURLを混ぜ合わせて入力できるようにしたかったので、違う方法での実装を考える必要がありました。
そんなに難しい内容ではありませんが、記事にまとめることにしました。
## 実装環境
Ruby 3.1.2
Rails 6.1.6

## 実装方法
### 前提条件
モデル :Book(インスタンス変数として`@book`を使用します)
┗カラム:content
今回は、Bookモデルのcontentというカラムを表示させることにします。

### 【入力テキストの改行の有効化】
一般的にには、以下のように記述すると思います。
“`html
<%= @book.content %>
“`
しかし、これだとtext_area等の入力フォームで改行しても、表示される時には改行が反映されていません

元記事を表示

100日後くらいに個人開発するぞ!day066

## 今日はビュー・コントローラ・ルーティングを学んでみた!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2632394/b3cf51c0-ae7d-6d92-f302-a1dc343369cd.png)

## 今日の学び

### ページの作成に必要なもの
* ビュー(view)
* コントローラ(controller)
* ルーティング(routing)

### ビューとは
* ビューとはページの見た目を作るためのHTMLファイル
* ビューはviewsフォルダの中に格納されている

### コントローラとは
* ページを表示するときRailsの中ではコントローラを経由してビューをブラウザに返している
* コントローラ内のメソッドを「アクション」と呼ぶ
* アクションはブラウザに返すビューをviewsフォルダから見つけ出す役割を担う

### ルーティングとは
* ルーティングはブラウザとコントローラをつなぐ役割を担う
* ルーティングは送信されたURLに対して適切なコン

元記事を表示

ストロングパラメーターの基本的な書き方と対応できないオブジェクト例

## なぜ記事を書こうと思ったか
Railsのアプリ開発している際に、ストロングパラメータで対応できないオブジェクトがあることを知った為、今回ストロングパラメータの基本的な書き方と一緒にこの記事にまとめようと思います。

## ストロングパラメーターの書き方
### 基本的なオブジェクト
“`
{
name: “田中”,
age: 23
}
“`
“`
params.permit(:name, :age)
“`

### 配列が入っている場合
“`
{
name: “田中”,
hobbies: [
“サッカー”, “映画鑑賞”
],
age: 23,
favorite_food: [
“ラーメン”, “寿司”
]
}
“`
**値に配列が入っているプロパティはストロングパラメーターで最後に記述する**
“`
params.permit(:name, :age, hobbies: [], favorite_food: [])
“`

### オブジェクトがネストした場合
“`
{
name: “田中”,
set

元記事を表示

Slackに投稿したメッセージをNotionのDBへ自動反映させてみた

# はじめに
社内で議事録をSlackのチャンネルで共有するルールがある。
NotionのDBでも議事録を蓄積しているのでSlackに投稿した議事録を自動的に反映されるようにしたい。

ということでやってみました。

細かい箇所は他の方の記事を参考にしていただく方が良いかと思いますので割愛してます。

# 構成図
![Screenshot – 2022-08-04 11.31.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777125/0c8c3ca6-39e4-0398-3318-9e2b971276de.png)

今回は構成図のようにAWSのAPI GatewayとLambdaを使って実装してみました。

# Notionでやること
– インテグレーションの作成
– 作成後に発行されたtokenはRequest Headerにセットする
– 該当のインテグレーションをNotionページに招待することでアクセスできる
– NotionのDBページのURLからDBのIDを取得

元記事を表示

Rubyの基礎概念をまとめてみる

プログラミングを独学で学んできましたが
転職活動を通じて、Rubyの基礎概念の知識が不足していると感じたので、あらためて勉強をしなおしています。

アウトプットのために、Rubyの基礎概念をまとめてみます
(他毎日30分 Rubyのコードを書くようにしています)

## オブジェクト指向とは

rubyはオブジェクト指向と言われているが、オブジェクト指向とはなんだろうか?

– オブジェクトとは”もの”
– オブジェクトを作ったり、使ったりすることでプログラマの望んだ処理を行わせる言語
– クラスという設計図を使って”new”で「もの」=インスタンスを作ることができる
– 自分で作らなくても、はじめから存在する「もの」もあり、文字クラスとか、整数クラス、日付クラスが代表例 

## Class
自分でClass=設計図を作れる。 
クラスもオブジェクトになる
User情報なら 
– name
– address
– e-mail
など色々あると思うので、そのような情報を持てる

“`Ruby
class User
    # 処理
end

“`

## インスタンス
インスタンス

元記事を表示

HTMLの基礎知識(プルダウンのタグ検索・投稿)

皆さんこんにちは!!
今回はプルダウン式!タグ検索・投稿機能を作成していきます!!
参考文献はこちらですhttps://qiita.com/Kairi_Yasunnde/items/935dcdb8ec88b9e
参考までにイメージ写真を載せておきます!!
![スクリーンショット (72).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2738887/c1b72a39-e3c2-31cf-cf9f-9c6425ac889b.png)
![スクリーンショット (73).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2738887/6cae6e9d-900e-034f-a276-be6bd34f320b.png)

Step1:事前準備

“`ruby:ターミナル
cd
cd desktop
rails new new_app
“`

“`ruby:ターミナル
cd new_app
rails ge

元記事を表示

Gemfileでgemのバージョンを指定する際に使用する `~>` について

先日RailsのGemのアップデート際に `~>` の意味を調べた(恥ずかしながら理解していなかった)ので使い方についてまとめてみました。

結論から言うと、Gemfileで `~> x.y.z` のようにバージョンを指定した場合、
`>= x.y.z` と `< x.y+1` との間で最新のバージョンに更新される。 同様に `~> x.y` で指定した場合は `>= x.y` と `< x+1.0` との間で最新のバージョンに更新される。 主にマイナーバージョンでの互換性を保ちつつバグフィックスなどを取り込みたい場合に使用するそう。 参考文献 https://guides.rubygems.org/patterns/#declaring_dependencies https://thoughtbot.com/blog/rubys-pessimistic-operator

元記事を表示

Rails7で基本のCRUDを体験しよう

## 前提
– ↓前回の記事でHello Worldアプリを作成済みである所から始めます。

https://qiita.com/chiepon115/items/16425b12da54df3369ce

– CRUDを体験することが目的なので、使いやすい機能やデザインは完全無視しています。

## Contorllerの準備
前回では、`users`テーブルのデータを表示するだけの機能としましたが、
追加で登録/更新/削除の機能を追加しようと思います。

いわゆるCRUD機能を実装するイメージです。
– C(Create – 登録)
– R(Read – 参照)
– U(Update – 更新)
– D(Delete – 削除)

?おまけ
R(参照)は前回実装済みですが、全件取得しか実装していないため、
今回ついでにキー指定で特定のデータを参照できる機能も実装します

まずは枠だけ作ってみましょう。

“`ruby:app/controller/users_controller.rb
class UsersController < ApplicationController

元記事を表示

OTHERカテゴリの最新記事