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

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

RubyでSymbolブロックチェーンのトランザクションを送信する

この記事は「自分の得意なプログラミング言語でSymbolブロックチェーンを動かす方法」をRubyで実践したものです。

https://qiita.com/nem_takanobu/items/09b6b687f3cbe10af945

### Gemfile
“`gemfile
source “https://rubygems.org”

gem ‘base32’, ‘~> 0.3.4’
gem ‘ed25519’, ‘~> 1.3’
gem ‘digest’, ‘~> 3.1’
gem ‘sha3’, ‘~> 1.0’, ‘>= 1.0.4’

“`

### require
“`ruby
require “ed25519”
require “digest”
require “sha3”
require “base32”
require “json”
require “net/http”
“`

### アカウント作成
“`ruby
signing_key = Ed25519::SigningKey.generate
verify_key = signing_key.v

元記事を表示

Rubyの範囲オブジェクトについてまとめてみた

# はじめに
Rubyの範囲オブジェクトについて学んだことをまとめました!

# 参考
+ プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで

# 範囲オブジェクトとは
「1から5まで」や「aからdまで」のように、「〜から〜まで」を示すオブジェクトのこと

# 範囲オブジェクトの書き方
下記のように、..もしくは…を使用して記述します。

“`ruby:範囲オブジェクトの例
1..5 #1以上5以下
1…5 #1以上5未満
‘a’..’d’ #aからdまで
‘a…’d #aからcまで
“`

# 範囲オブジェクトのクラス
範囲オブジェクトはRangeクラスになります。
“`ruby:範囲オブジェクトのクラス
puts (1..5).class #=>Range
“`

# 範囲オブジェクトの使用機会
「〜から〜まで」が伴う処理に使うと便利です!
例えば、
1. 配列aの2番目から4番目までを取得する
1. 引数に渡した数値が「0から50まで」か判定する
1. ある範囲を配列に置換する
などが挙げられます。
一つずつ見ていきましょう!

元記事を表示

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

## 今日は戻り値を勉強してみた!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2632394/5d5a4428-a8cb-43b6-3776-185b7e4cdc74.png)

## 今日の学び

### 戻り値
* 呼び出し元で受け取る処理結果を戻り値(もどりち)と呼び、このことを「メソッドが戻り値を返す」と言う
* メソッドの中でreturnを使うと、呼び出し元で値を受け取れるようになる
* 「return 値」と書くことで、メソッドはその値を戻り値として返せる
* 例
* `def メソッド名`
* ` return 値`
* `end`
* 戻り値がある場合はメソッドの呼び出し部分がそのまま戻り値に置き換わる
* 例:変数sumにa+bの合計値を代入したい場合
* `def add(a,b)`
* ` return a+b`
* `end`
*

元記事を表示

JavaメインからRuby学習で困惑した点(unless)

# はじめに
もともと、工業高校でC言語から始め、社会人にてJavaで活動していた
SEが転職を期にRubyを学んだ時の混乱について一部書きます。(条件分岐について => タイトル通りです)

## お馴染みの条件分岐(if else)
Rubyを学ぶまで、if(もし)、else(でなければ)
の2つで条件分岐は丸く収まると思っていました。

## unlessが登場
基本的には、言葉の文法通りに想像するなら
「もし~なら、でなければ」と基本的にはなると思います。

ところが「でなければ」から始まる構文が
Rubyでは存在しました。
これが「unless」です。

極端な例:偶数かそうでない場合の判別
(どの言語でも分かりやすいようにevenメソッドは使用しません + 括弧も付けます)
“`ruby:example_if_else.rb
# if、elseのパターン
if (num % 2 == 0)
puts “偶数”
else
puts “奇数”
end
“`

“`ruby:example_unless.rb
# unlessのパターン
unless (num %

元記事を表示

minitestでエラー`block (2 levels) in

# はじめに
minitestでテストを書いていると、
下記の部分でfailになった。
“`言語名:ターミナル
FAIL[“test_index_as_admin_including_pagination_and_delete_links”, #, 2.8298179999983404]
test_index_as_admin_including_pagination_and_delete_links#UsersIndexTest (2.83s)
Expected at least 1 element matching “a[href=”/users/14035331″]”, found 0..
Expected 0 to be >= 1.
test/integration/users_index_test.rb:19:in `block (2 levels) in

元記事を表示

Rubyの問題を解いて知識を深める。⑤

# はじめに
今日も問題を解いていきます!
この問題集も、今日を含め残り3日!!

# Q21 簡単な計算を行うRubyプログラムの作成
二桁以上の整数を入力すると、十の位と一の位の数字の足し算、十の位と一の位の数字の掛け算をそれぞれ行い、最後に2つの結果を足し合わせて出力するプログラムをRubyで作成。
ターミナルでの入力例
“`
> 二桁の整数を入力してください
> 15

# 1 + 5 と 1 × 5 をそれぞれ計算

> 足し算結果と掛け算結果の合計値は11です
“`
解答
“`
def addition(a, b)
a + b
end

def multiplication(a, b)
a * b
end

def slice_num(num)
# 10の位
tens_place = (num / 10) % 10
# 1の位
ones_place = num % 10
return tens_place, ones_place
end

puts “二桁の整数を入力してください”
input = gets.to_i
X, Y = slic

元記事を表示

【Ruby】ブロックについてまとめてみた!

# はじめに
Rubyのブロックについて、勉強したことをまとめました!

# ブロックとは
メソッドに渡せる処理のかたまりのこと

# ブロックと引数の違い
どちらもメソッドに渡すものというのは共通していますが、
+ 引数は「オブジェクト」を渡すもの
+ ブロックは「処理」を渡すもの
になります。

# ブロックの記述方法
下記のように2通りの書き方があります!
“`ruby
a = [1,2,3]
# ① doからendまでがブロック
a.each do |n| #|n|は「ブロックパラメータ」と呼ぶ
#処理内容をここに書く
end

# ② {}内がブロック
a.each { |n| #処理内容をここに書く }
“`

# ブロックの機能・挙動・メリットについて
下記の「配列内にある奇数を削除する」コードを用いて説明します!
“`ruby:配列内にある奇数を削除する
a = [1,2,3,4,5]
a.delete_if do |i|
i.odd?
end
puts a #=> 2,4
“`
## 前提
上記コードを読む上での前提になります!
+

元記事を表示

【Ruby】配列の扱い方について逆引き形式でまとめてみた

# はじめに
Rubyの配列について、やりたいことから逆引きできるようにまとめてみました!

# 配列とは
配列とは、複数の値をまとめて格納できるオブジェクトのこと
“`ruby:配列の例
fruits = [‘りんご’,’みかん’,’ばなな’] #複数の値を一つまとめて変数として格納できる
“`
上記の’りんご’や’みかん’など、配列内の各値を要素と呼ぶ
# 要素を設定したい場合
:::note info
<記述方法>
変数 = [値1,値2,…]
:::

“`ruby
a = [1,2,3] #数値
b = [‘a’,’b’,’c’] #文字列
c = [‘a’,1,0.5] #=> 異なる種類の型も可能
“`
# 要素の取得関連
## 指定した位置の要素を取得したい場合
:::note info
<記述方法>
配列[位置]
:::
“`ruby:要素の取得例
a = [1,2,3]
puts a[0] #=> 1
puts a[1] #=> 2
puts a[2] #=> 3
“`
## 最後の要素を取得したい場合
:::note in

元記事を表示

【Rails】マイグレーションのロールバックを確認すべし

# 初めに

マイグレーションファイルを追加した後、ロールバックできるか確認していますか。

## 環境

– Rails 6.1.4
– Ruby 2.7.4

# マイグレーションのロールバック

開発を進める中でデータベースのバージョンを上げることがありますが、正しく動作しないマイグレーションがチームで共有されると、エラーが解消するまで開発が止まってしまいます。

マイグレーションを追加するときは、バージョンを上げるだけでなく、下げることができるようにするのが通常であると考えたほうがいい。

## ロールバックできるかを確認する

エラーを防ぐために、バージョンを上げた後にロールバックし、もう一度バージョンを上げて確認をします。

1. まずは`rails db:migrate`でバージョンを上げてエラーが起きるかを確認する。

2. その次に、`rails db:migrate:redo`を行い、バージョンを下げて後にもう一度上げてエラーが起きないか確認する。

`rails db:migrate:redo`はマイグレーションのバージョンを下げた後に上げて元に戻します。

#

元記事を表示

Jekyllでビルドするファイルを別ディレクトリに入れて不要なファイルの公開を防ぐ

デフォルトでは、Jekyllはプロジェクトルートにあるファイルなら(特殊な意味を持つファイルでない限り)なんでもビルドしようとする。

“`
my_jekyll_site
|- GemFile // safe
|- GemFile.lock // safe
|- _config.yml // safe
|- .gitignore // safe
|- index.md // BUILT
|- _posts // BUILT (日時等が解釈されてから)
|- …
“`

このやり方には1つ問題がある。**例えばここにスクリプトファイルを置くと、そのファイルはビルド時にサイトに含まれてしまう。**

“`
my_jekyll_site
|- Gemfile
|- …
|- script.sh // OOPS?!!?!?!?!?!?
“`
> スクリプトを置きたい理由は複数考えられる。例えば:
> * ビルドの自動化スクリプトや
> * Yarnでwebpackするときなどの設定ファイル
> などである。

もちろん`_config.yml`ファイルの`exc

元記事を表示

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

## 今日は自分で作ったWebページをインターネット上に公開してみた!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2632394/4e098be8-9f2c-a79a-ed02-09b60668f908.png)

## Githubでアカウント開設
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2632394/7636cc06-e872-8e9a-f15c-ce14799e6411.png)

## GithubでHTMLとCSSをアップロード
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2632394/8cd4ed7d-7510-48ac-dbcd-0ebc9a454584.png)

![image.png](https://qiita-image-store.s3.ap-n

元記事を表示

rails db:seedできなくなった

# rails db:seed できなくなった
## rails db:seed とは
Railsには、初期データを追加するためのシード機能が備わっており、「seed.rb」ファイルにデータを記述していきます。
例えば、
“`
Customer.create!(
email: “aaa@amail.com”,
password: “a12345”,
nickname: “れいこ”,
profile: “令和生まれの道子です。”,
)
“`
こんな感じでCustomersテーブルのそれぞれのカラムにデータを保存(create!)します。
このような記述の集まりが、「seed.rb」ファイルで、それを実行するのが、“`rails db:seed“`というわけです。
## エラー
rails db:seedをすると、既にemailがデータベースにあるようで、バリデーションエラーとなりました。
## TRY
1. x
“`
rails db:reset
rails db:seed
“`
2. x
“`
rails db:drop
rails db:migrate
rail

元記事を表示

else節ではraiseしたくなる

### はじめに

僕はcase文だったりswitch文のelse(default)節に正常処理を書くことが嫌いです。
ただ、if文のelse節には正常処理をガンガン書きます。
どうして、そうしているのか、その訳をつらつらと書いていきたいと思います。

### Rubyの制御構造(条件分岐)
Rubyの制御構文、特に条件分岐に関するものは以下の三種類がある。

– if文
– unless文
– case文

それぞれの構文は以下の通りだ。式を後置修飾するif修飾子およびunless修飾子については本題から逸れるので省略した。

if文
“`ruby
if 式1
処理1
elsif 式2
処理2
end
“`

unless文
“`ruby
unless 式
処理1
else
処理2
end
“`

case文
“`ruby
case 式0
when 式1
処理1
when 式2
処理2
else
処理3
end
“`

元記事を表示

Face APIをSinatraでお試し実装

Microsoft Azureの[Face API](https://azure.microsoft.com/ja-jp/services/cognitive-services/face/)を使ってSinatraでWeb上で画像を渡して顔認証をやってもらいたいと思います。
顔の検出とか一致度とか色々出来るのでちょっと使ってみます。
# 準備
Microsoft AzureのFace APIを使います。
[公式のガイド](https://docs.microsoft.com/ja-jp/azure/cognitive-services/face/quickstarts/client-libraries?tabs=visual-studio&pivots=programming-language-rest-api)を参考に進めていきます。
登録を済ませた状態からはじめましょう。

キーとエンドポイントを準備しましょう。
こんな画面が出ていればOK。
![FaceAPIスクショ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaw

元記事を表示

エンジニアならこの問題、解けるよなぁ?!

どうも。タイトルほどの威勢はありません。
ということでTwitterみてたら我らがしみけんさんがこんなツイートしてた。
mojikyo45_640-2.gif

簡単にいうと、コインを100回投げて、裏表を10*10マスに文章の横書きの順番で記録してこい。ただし捏造しても良い。というものだ。
で?って話なんだけどこの課題を出した教授は捏造されたものを簡単に見分けたのだとか。
じゃあどうやって見分けたんだ?ってのが面白そうだったから考えてみて、そしてエンジニアらしくプログラムを組んでみた。
読み進める前に、ちょっと考えてみて欲しい。
##

元記事を表示

過去問共有サービス Univer の開発を行いました。

![スクリーンショット 2022-06-19 22.57.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1667538/97698656-b2fb-4cfa-b054-c09ded52b39f.png)

過去問共有サービスUniverです。企画からデザイン、デザインに至るまで一気通貫して一人で行いました。

https://universitycommunity.herokuapp.com/

[開発背景]
開発の理由は二つあります。
一つ目の理由は、コロナの影響で縦と横のつながりが薄くなり、過去問が手に入りづらくなったという学生の問題を解決するためです。
また私自身の周りにそういった悩みを抱えている学生の方が多くいたことから、ユーザー数が期待できるため、多くの方のフィードバックを通じてより質の高いサービス開発に取り組めると考えたからです。

[実装機能]
投稿機能、画像投稿機能、ログイン・ログアウト機能、フォロー機能、いいね機能、コメント機能、お気に入り登録機能、検索機能など、SNSに利用

元記事を表示

Your Ruby version is 2.7.3, but your Gemfile specified 2.7.5 と表示されるエラーの解決

はじめに

ロリポップマネージドクラウドを使い自作アプリをデプロイしようと思い

`git push lolipop master`

を行うと

`remote: Your Ruby version is 2.7.3, but your Gemfile specified 2.7.5`

というエラーが起きた。

エラーについて

エラー内容を直訳すると

`あなたのRubyは2.7.3なのに、Gemfileには2.7.5となっている。`

という事だがGemfileを確認すると2.7.3になっており、他にもGemfile.lock、.ruby-versionを確認しても2.7.3だった。

他サイトなどを参考にし、

`bundle install` や `rbenv local 2.7.3`

などを行っても解決しなかった。

エラー解決

GemfileやRubyのバージョンを変更した際に、gitにコミットしていないことが原因であった。

そこで

`git add .`

`git commit -m “”

元記事を表示

Rubyの学習ログ

# 学習教材
udemyで[「ウェブ開発入門完全攻略コース – HTML/CSS/JavaScript. プログラミングをはじめて学び創れる人へ!」](https://www.udemy.com/course/web-application-development/)を学習。
ウェブ開発全般の基本的な知識が習得できるコースで合計24.5時間もある。
今回はその中でもRubyについて学習した。
[](https://www.udemy.com/course/web-application-development/)

# 学習内容
演算子や数字・文字列の表現方法の違い、条件分岐や繰り返し処理について学んだ。
また、クラスやメソッド、Rubyのコーディングルールを学んだ。

# 学習を終えて
これまで学習してきたJavaScript

元記事を表示

マルチスレッドでHTTPリクエストしてみる

Rubyで複数のAPIリクエストをシングルスレッドで行った時とマルチスレッドで行った時でどのくらい速度に差が出るか見てみたかった。
[JSONPlaceholder](https://jsonplaceholder.typicode.com/)のサンプルエンドポイントで試してみる。
`https://jsonplaceholder.typicode.com/todos/{number}`にアクセスするとtodoが帰ってくる。

## シングルスレッドの場合

50件のtodoをループで取得してみる。

“`slow.ruby
require ‘uri’
require ‘net/http’
require “json”

todos = []
start_time = Time.now

(1..50).each do |n|
uri = URI(“https://jsonplaceholder.typicode.com/todos/#{n}”)
res = Net::HTTP.get_response(uri)
todos << JSON.parse(re

元記事を表示

Rubyの問題を解いて知識を深める。④

# はじめに
毎日Rubyの問題を復習として5問ずつ解いています。
知識を更に深堀りするためにアウトプットします。

# Q16 検索問題
任意の文字列に”code”が、左から何文字目に出てくるかを返し、その数を出力するメソッドを作る。
出力例
count_code(“codexxcode”) → 1
count_code(“aaacodebbb”) → 4
count_code(“cozexxcode”) → 7
解答
“`
def count_code(str)
puts str.index(“code”, 0) + 1
end
“`
ポイントとしてはindexメソッドになります。文字列や配列の中に指定した文字列が含まれていた場合、その文字列の開始位置を整数の値で返します。
“`
str.index(検索したい文字列, [検索を開始する位置])
“`
解答に+ 1を使用している理由は先頭を0から数えた数字を返すため使用。

# Q17 if,else問題
以下の要件を満たすparrot_troubleメソッドを実装。
最近、あなたはオウムを飼いはじめました。しかし、近

元記事を表示

OTHERカテゴリの最新記事