- 1. FactoryBotを使用したインスタンス生成の共通化
- 2. SNS認証について
- 3. Active Storageの複数ファイルを1つのzipファイルに圧縮する効率の良い方法
- 4. if式やループのネストを減らす方法まとめ
- 5. Rubyの基本的な構文をまとめてみる
- 6. 【Python】Pythonの型名が覚えられなかったのでメモ
- 7. bundlerまとめ
- 8. debug gem まとめ
- 9. PHP, Ruby の null, blank 判定比較早見表
- 10. rbenvまとめ
- 11. Ruby で Array や Hash のメソッドを使いこなしたい
- 12. Rubyとは?今流行のプログラミング言語の一種Rubyって何?これであなたもプログラミングへの第1歩!
- 13. テストコード(RSpec)の構文
- 14. 良いコードとは
- 15. オブジェクト指向とは
- 16. 本日のRuby基礎練習問題(22/4/5)
- 17. テストコード(RSpec)の種類
- 18. Dockerとは 開発環境やファイルについて解説
- 19. 【LeetCode】5. Longest Palindromic Substringを解いてみた
- 20. TOTO くじ を題材として Ruby で スクレイピング
FactoryBotを使用したインスタンス生成の共通化
# アウトプット
FactoryBotとは、インスタンスをまとめることができるGem。###### spec/factories/users.rb
“`ruby
FactoryBot.define do
factory :user do
email {‘test@com’}
password {‘abcdef1234’}
password_confirmation {‘abcdef1234’}
end
end
“`“`ruby
# FactoryBotを使用しない場合
user = User.new(email: ‘tset@com’, password: ‘abcdef1234’, password_confirmation: ‘abcdef1234’)
# FactoryBotを使用する場合
user = FactoryBot.build(:user)
“`###### spec/models/user_spec.rb
“`ruby
require ‘rails_help
SNS認証について
# SNS認証について
– 学習マッチングサイトを作成して、google認証を実装したい
– 認証機能について理解を深めたい
## 環境
– AWS:EC2,RDS(MySQL),VPC,Route53
– webサーバー:NGINX
– アプリケーションサーバー:Puma
– フレームワーク:Ruby on Rails## 認証の仕組みについて
今回はgoogle認証であるため、登場人物は、– googleのリソースサーバ
– エンドユーザー
– webアプリ
– googleの認可サーバーです。
### リソースサーバーとは
リソースサーバとは、保護対象のリソースを保持しているサーバーを指します。ここでいうリソースとは、googleフォトの画像やプロフィール情報等のことと思います。
### ユーザー
リソースオーナであり、アカウントを連携したいユーザーを指す。
### webアプリ
これは、つまり、学習マッチングサイトです。
### 認可サーバー
リソースサーバーに信頼されたサーバーで、リソースオーナーの認証を行い、リソースサーバーに対するアクセストークンを発行します。
Active Storageの複数ファイルを1つのzipファイルに圧縮する効率の良い方法
とある案件で、Active Storageで管理しているファイルを複数選択して、1つのzipファイルに圧縮する要件があったので実装方法を検討しました。
# 前提
この記事では下記のUserモデルの`save_selected_avatars`メソッドの実装方法を検討します。
“`ruby:user.rb
class User < ApplicationRecord has_one_attached :avatar class << self def save_selected_avatars(user_ids) # TODO: user_idsで指定したユーザーのavatarを1つのzipファイルに圧縮して保存する end end end ``` なお、この記事では下記のバージョンを使って動作確認しています。 ZIPファイルを生成する処理はrubyzipのGemを使います。 * ruby 3.1.1 * rails, activestorage 7.0.2.3 * rubyzip 2.3.2 # 実装方法検討 ## その1 ま
if式やループのネストを減らす方法まとめ
# 結論
– 早期リターンする
– 条件式で代入を行う以上のやり方でネストを減らすことができます。
### 早期リターンする
例えば、受け取った数字が50より大きいとき2倍にする関数があるとき
早期リターンしない場合。
“`ruby
def double(number)
if number > 50
number * 2
end
end
“`早期リターンする場合。
“`ruby
def double(number)
return if number <= 50 number * 2 end ``` ループ内の場合は`next if number`でも良いですね。 ### 条件式で代入を行う 例えば、ユーザーを1つ取り出して何かしたいとき 条件式で代入しない場合 ```ruby def update user = User.find(params[:id]) if user ... end end ``` 条件式で代入する場合 ```ruby def update if user = User.find(par
Rubyの基本的な構文をまとめてみる
# 初めに
こんにちは!都内でWEB制作を中心に活動しているりょうといいます!
今回はShopifyをきっかけに興味を持ったRubyの簡単な構文について、備忘録的にまとめていきます!shopifyはRubyをもとにして作られたliquidという言語があるそうで、バックエンド全くの未経験の僕がいきなり始めるにはあまりにも敷居が高い。。。
それならRubyから始めてみよう!!そんな経緯があってこの記事を書いた次第です!
## この記事の目的
Rubyの基本構文を忘れないうちにアウトプットする!ではいきましょう。
### テキストの出力
~~~ruby
# コメントアウトは”#”でできる!
puts “Hello Ruby!”
puts 8
# 出力結果:Hello Ruby! 8
~~~
Rubyのテキスト出力は『puts』
言語ごとに出力方法は違うようですが、個人的にはputs、とても好きですね。
なんかかわいいまた、Rubyにおいては『文字列』と『数値』の連結はできないようです。
これは注意が必要ですね。
~~~ruby
puts “string” + 10
#出力
【Python】Pythonの型名が覚えられなかったのでメモ
Java, Rubyの実務経験があり、Pythonも覚えてみたいと考えた今日このごろ。
型の種類と名前が全く一致しなかった戒め。下記のフォーマットで自分用にメモ
###### 大枠のジャンル
“`
・Pythonでの呼び方
・Java, Ruby(他覚えやすかったキーワードなど)での呼び方※あれば感想など
“`###### 数値
“`
・int
・整数・float
・小数点※散々やってきたので大丈夫。小数点の計算 ^ Javaのときは「BigDicimal」を使わないとダメだぞ!と怒られた記憶がある
“`###### 論理
“`
・bool(Yes / No)
・boolean
“`###### 文字列
“`
・str
・String※大した違いじゃないからまぁいいんだけど、こういう微妙な違いがあると困るよね。
“`###### シーケンス
“`
・list
・ArrayList(Java)(後から追加できるからArrayListで覚える)・tuple
・list(配列)(後から変更できないからlistで覚える)
bundlerまとめ
# how2use
bundle init
-> Gemfilesource “rubygems”
debug gem まとめ
# how to use
s
q!continue
finish
next
help
help next
p n
PHP, Ruby の null, blank 判定比較早見表
## PHP, Ruby の null, blank 判定比較早見表
値 | | nil? | empty? | blank? | | isset | is_null | empty | if($var)
— | — | — | — | — | — | — | — | — | —
未定義 | | ~~NameError~~ | ~~NameError~~ | ~~NameError~~ | | false | ~~Undefined~~ | ~~Undefined~~ | ~~Undefined~~
$var = nil, null | | **TRUE** | ~~NoMethodError~~ | **TRUE** | | false | **TRUE** | **TRUE** | false
$var = true | | false | ~~NoMethodError~~ | false | | **TRUE** | false | false | **TRUE**
$var = false | | false | ~
rbenvまとめ
# install
brew update
brew install rbenv ruby-build
rbenv –version
brew upgrade rbenv
rbenv init# how to use
rbenv install -l
rbenv install 2.5.0
rbenv versions
rbenv global 2.5.0
Ruby で Array や Hash のメソッドを使いこなしたい
Ruby には、多くのメソッドが用意されています。
私もそうでしたが、他の言語は知っていて Ruby を知らない場合、Ruby のメソッドを使いこなせていないことがあります。
他言語経験者が、知っておくべき Ruby の Array, Hash のメソッドをユースケース毎に書きたいと思います。## 特定の要素を取得する (Enumerable#find)
特定の条件を満たす要素を取得する場合、
ループと if 文を駆使して探すことを考えるかもしれませんが、“`ruby
tasks.each do |task|
next unless task.state == statefound = task
break
end
“``find` 一行で取れます。
“`ruby
found = tasks.find { |task| task.state == state }
“`## 特定の要素を削除する (Hash#delete_if)
特定の条件を満たす要素を削除する場合、、、(以下略
“`ruby
schedules.each do |key
Rubyとは?今流行のプログラミング言語の一種Rubyって何?これであなたもプログラミングへの第1歩!
こんにちは!初めまして!現在都内大学3年生になります、重村 倫音と申します。
今回は私が大学2年生の秋学期のうち3ヶ月間で習得したruby言語について簡単に初心者さんにもrubyが何なのかという説明記事を書いてみましたのでぜひ読んでみてください!まず最初に、Rubyという言語はまつもとひろゆき氏が関数型プログラミングと命令型プログラミングを絶妙にまじ合わせて作成したものであります。その為、様々な面でバランスが取れていて、次に説明するRubyのいいところに繋がるのです。
Rubyというのは、数多くあるうちのプログラミング言語の一種です。主に多くの人に知られているウェブサイト、twitterやcookpadと言ったウェブサービスはrubyを通して作られています。数多く存在するプログラミング言語の中でも、rubyは利用者数がかなり多いです。その人気というのも、
-シンプル
-起動の速さという二つの観点が主に挙げられます。
最初にシンプルという観点でプログラミング初心者さんでも簡単に自分のウェブページが作れてしまうところなんです!私自身、プログラミングのプの字も知らずにrubyの
テストコード(RSpec)の構文
テストコードの大まかな全体構造は、下記の通りである。
“`ruby
require ‘rails_helper’RSpec.describe …, type: :… do
describe ‘どの機能に対してテストを行うか’ do
context ‘テストを行いたい特定の条件’ do
it ‘どのような状況のテストを行うか’ do
end
end
end
end
“`
良いコードとは
# 今回のアウトプットの目的
良いコードとはどのようなものか?
良いコードを書くにはどうすればよいか?
WEBアプリケーション開発をする上でとても重要だと感じたので、
改めて整理したいと思います。# 良いコードとは
**結論:他人が見てわかりやすく意味のわかるコードが一番良いコードだと思います**具体的にどのようなことを意識すれば良いコードになるのか纏めてみたいと思います。
①わかりやすいコメントを書く、and 無駄なコメントはしない。
②変数名やメソッド名は誰が見てもわかりやすい名前にする。
③インデントをつけてしっかりと揃える。
④ネストしすぎない。
⑤直接数字を記述するのではなく変数を利用する。**またDRYの原則も重要だと思います**
DRY(Don’t Repeat Yourself)とは?
=「同じ情報を繰り返し定義しない」という考え方
ダメな例
“`not_dry.rb
a = 100 * 1.1
b = 200 * 1.1
c = 300 * 1.1
“`
良い例
“`dry.rb
tax = 1.1
a = 100 * tax
b = 200 * t
オブジェクト指向とは
オブジェクト指向について整理したいと思ったのでアウトプットします。
# オブジェクト指向とは?
A.「ある役割を持ったモノ」ごとにクラス(プログラム全体の設計図)を分割し、モノとモノとの関係性を定義していくことでシステムを作り上げようとするシステム構成の考え方のこと。# そもそもオブジェクトとは何なのか?
(わかりやすい記事があったので自分なりに解説)
A.ざっくりでいうと「モノ」
プログラミング視点で考えてみる。
例えばケータイでいうと、
**オブジェクト:ケータイ**
**クラス:スマートフォン**
**インスタンス:iPhoneやAndroid**
こんな感じで考えるとわかりやすいと思った。# オブジェクト指向のメリット
①効率よくプログラムを設計・開発できる
例、サイト制作などで色違いのボタンを5つ作るとします。
オブジェクト指向を使用しない場合は5つ全てにプログラムを実装しなければならない。
しかしオブジェクト指向を使用すれば1つのボタンの「モノ」として作成し設定してしまえば、
色を変えたり、文字を変えたりするだけで済む。②不具合の原因を特定しやすくなる
オブジ
本日のRuby基礎練習問題(22/4/5)
# 問題
以下の要件を満たすbubble_sortメソッドを実装しましょう。
要素が数値である配列を受け取り、数値の小さい順に並べ替えること
小さい順に並べ替えた結果を出力すること
**↓雛形**
“`ruby.rb
def bubble_sort(data)
# 配列の数を数える処理を記述
length =# for文を2つ使用する
# 先頭から隣の数同士の大きさを比べる
# 先頭側の要素の方が大きい場合は、配列の位置を隣同士で交換する
end# 呼び出し例
number = [1,23,4,6,12,45,79]
bubble_sort(number)
puts number
“`
出力例
1
4
6
12
23
45
79**ヒント**
・for文を使う
・for文の入れ子を使う
・「隣同士の大きさを比較し、もし先頭側の文字の方が大きい場合は位置を交換する」という処理をする
・配列内の要素の入れ替えを行う
方法:array[a], array[b] = array[b], array[a]# 私の回答
“`ruby.rb
def bub
テストコード(RSpec)の種類
単体テストとは、モデルやコントローラーなどの機能ごとに、問題なく動作するか確認するテスト。
結合テストとは、ユーザーがブラウザで操作する一連の流れを再現して、問題なく動作するか確認するテスト。
Dockerとは 開発環境やファイルについて解説
# はじめに
Dockerの開発環境とはどのようなものか、Dockerでの環境構築の際に作成するファイルについてまとめました。
*この記事は環境構築のやり方を解説した記事ではないため、この記事を参考にして環境構築した場合の動作の保証は一切しません。
# Dockerの開発環境
Dockerのソフトウェアをインストールすると、Moby LinuxというLinuxの軽量な仮想マシンが裏で作成されます。
そして、DockerでRubyの実行環境を立ち上げると、Moby Linux上にコンテナという仮想環境が作成されます(RubyのコンテナはDockser HubというサイトにあるファイルをDLして作成される)。
コンテナのもとになるファイルをまとめたものをイメージと呼びます。Rubyのイメージには、RubyそのもののプログラムやRubyに関するライブラリが含まれています。また、Linuxとして動作するために最低限必要なファイルも含まれています。このコンテナにPC上のRails用のフォルダをマウントして開発を行う。これによって動作確認が行えるわけです。
![image.png](https:/
【LeetCode】5. Longest Palindromic Substringを解いてみた
## はじめに
コーディングテスト対策としてLeetCodeの5. Longest Palindromic Substringを解いていく。## 問題文を和訳
– 文字列sが与えられた場合、sで最も長い回文部分文字列を返します。
– Input: s = “babad”
– Output: “bab”
– Note: “aba” is also a valid answer.## 回答
“`5_LongestPalindromicSubstring.rb
def longest_palindrome(s)
left = 0
right = 0
for i in 0…s.length do
odd = length_from_center(s, i, i)
even = length_from_center(s, i, i + 1)
longest = [odd, even].max
if longest > right – left
left = i – (longest – 1) / 2
right =
TOTO くじ を題材として Ruby で スクレイピング
# はじめに
`Nokogiro`の練習として、TOTOくじを題材にスクレイピングをやってみました。
# TOTOくじ
https://toto.yahoo.co.jp/vote/toto例えば、投票状況から皆さんが本命視している組合せを調べます。
# Nokogiri
“`rb
require ‘nokogiri’
“`
`require`します。
“`rb
doc = Nokogiri::HTML.parse(html)
“`
htmlソースをパースします。
今回は、細かなオプションなしでうまくいきました。
“`html// 必要な部分を抜き出す ↓
< 関連する記事
OTHERカテゴリの最新記事
- 2024.09.19
JavaScript関連のことを調べてみた
- 2024.09.19
JAVA関連のことを調べてみた
- 2024.09.19
iOS関連のことを調べてみた
- 2024.09.19
Rails関連のことを調べてみた
- 2024.09.19
Lambda関連のことを調べてみた
- 2024.09.19
Python関連のことを調べてみた