Ruby関連のことを調べてみた2020年12月28日

Ruby関連のことを調べてみた2020年12月28日

Ruby  if文について

この記事で説明すること
①if文とは
②if文の使い方
③elsifでさらに分岐

if文について上記の3点について簡単に説明していきたいと思います。

①if文とは

一言で言えば条件分岐を行うための文法です。

条件式を評価した結果が真である時、true以下の式を評価し、条件式が偽であれば elsifまたはelseの条件を評価します。

またifしか書かれていなければtrueの時しか処理は行われません。

if文では比較演算子をよく使われます。
「<」「<=」「>」「>=」「==」「!=」
一言で言えば比較するためのものですね!
比較演算子が気になる方は調べてください。

演算子の記事
http://www.tohoho-web.com/ruby/operators.html

②if文の使い方

ifの横に条件式を書きその下に処理を書きます。
さらに分岐をするときはelsifを使います(elsifはあとで説明します)。

“`ruby
if 条件式1 then
処理A  条件式1がtrueのとき

元記事を表示

【Week 10】recursion, ruby_fifth

# はじめに

マルチスケールシミュレーション特論の講義メモです.講義メモのインデックスは[コチラ]()

今回の参考資料は[チャート式ruby-V(Recursive Fibonacci)]()です.

# チャート式 Ruby

参照記事は[コチラ]()

# Ruby 開発周辺情報

今回はチャート式 Ruby のみです.

# 次回の講義内容 <2020-12-02 Wed>

次回の講義は

– [チャート式ruby-VI(hello class)](

元記事を表示

【Week 10】recursion, ruby_fifth

# はじめに

マルチスケールシミュレーション特論の講義メモです.講義メモのインデックスは[コチラ]()

今回の参考資料は[チャート式ruby-V(Recursive Fibonacci)]()です.

# チャート式 Ruby

参照記事は[コチラ]()

# Ruby 開発周辺情報

今回はチャート式 Ruby のみです.

# 次回の講義内容 <2020-12-02 Wed>

次回の講義は

– [thor](

元記事を表示

【Week 9】rubular, ruby_fourth

# はじめに

マルチスケールシミュレーション特論の講義メモです.講義メモのインデックスは[コチラ]()

今回の参考資料は[チャート式ruby-appendix-IV(assert\_equal)]()と[チャート式ruby-appendix-V(rubular)]()です.

# チャート式 Ruby

参照記事は[コチラ]()

## assert\_equal

assert\_equal という関数を作成する.これは期待する出力と実際の出力を比較し,それらが等しいかを確かめる関数である.テスト駆動開発ではとりあ

元記事を表示

【Week 8】rake, ruby_fourth

# はじめに

マルチスケールシミュレーション特論の講義メモです.講義メモのインデックスは[コチラ]()

今回の参考資料は[チャート式ruby-appendix-IV(rake)]()です.

# チャート式 Ruby

授業内容変更のため,今回は以下の Ruby 開発周辺環境にまとめています.

# Ruby 開発周辺情報

参照記事は[コチラ]()

## rake

Rake とはmake ruby のことで Rakefile に一連の作業を記述しておくことでコマンドひとつで実行できるようになる.効率厨からしたらとても便利な機能である.

早速だが

> emacs Rakefile

で Rakefile を編集し

元記事を表示

【Week 8】rake, ruby_fourth

# はじめに

マルチスケールシミュレーション特論の講義メモです.講義メモのインデックスは[コチラ]()

# チャート式 Ruby

授業内容変更のため,今回は以下の Ruby 開発周辺環境にまとめています.

# Ruby 開発周辺情報

## rake

> rake -v

> emacs Rakefile

> rake

Rake は make ruby のことARGV[0]でなくARGV[1]である理由

> rake hello hoge

ARGV[1]でなくARGV[0]を指定すると第1引数の hello が出力されてしまう.

-T の部分は system call と呼ばれる.

colorizeで色付け

“`ruby
require ‘colorize’

.green
“`

ls -1 ../**/README.org

“`ruby
desc ‘make list’

元記事を表示

[Ruby]例外処理基本

# はじめに

今回は例外について改めて勉強しましたので
忘れないように記述していきます。
今回は少しずつ理解して行こうということで第1回目:ok_woman:

# 例外処理とは

コード実行時にエラーが発生したときにする処理のことです。
原因の調査がしやすくなるなどのメリットがあります。

# 使用するメイン機能

– **begin** 例外が起こるであろうコードを指定して処理の問題を検索する。

– **rescue** 問題が発生したときに対応する内容を記述する。

– **raise** 意図的にエラーを発生したいときに記述する。

– **ensure** エラーが発生してもしなくても実行する。

# シンプルなものを書く

流れが分かりやすいように”puts” で番号をふっています。

“`Ruby
puts 1
begin # エラーが起きそうなところをbeginで囲む
number = 0
answer = 100 / number
puts 2 # ↓ エラーが起きたら対応する内容をrescueに記述
rescue

元記事を表示

【Rails】楽天APIを用いた検索機能にvalidationを設定(楽天APIの実装から~)

###実装内容
楽天APIを用いて検索機能を実装すると、検索フォームが空白 or 1文字で検索すると**keyword is not valid**とエラーが出ます。
コントローラーの該当アクション内で文字数をカウントして条件分岐したり、入力フォームをJavascriptで制御すれば手っ取り早いですが、それでは文字数にしか制限をかけられません。
通常のmodelのようにvalidationを設定する処理を記事にしました。

###楽天商品検索APIについて
[楽天商品検索API]
(http://webservice.rakuten.co.jp/api/ichibaitemsearch/)

###楽天APIを使用した検索機能の実装
[筆者が参考にした記事を参考にしてみてください(他人任せですいません…)]
(https://freesworder.net/rakuten-api-rails/)
上記の記事の内容は、新しくアプリを作るところからになっていますが、皆さんの状況に合わせて参考にしてください。
筆者は既存のアプリの既存のコントローラー(searchs_controller

元記事を表示

Ruby で ? の付くメソッドは true/false を返す,とは限らない

Ruby のメソッドは,名前が `?` で終わっていてもよいことになっています。

実際,組込みクラスには [String#empty?](https://docs.ruby-lang.org/ja/3.0.0/method/String/i/empty=3f.html) とか [Array#include?](https://docs.ruby-lang.org/ja/3.0.0/method/Array/i/include=3f.html) といったメソッドがあります。
述語メソッド,つまり返り値の真・偽を利用するためのメソッドにこのような命名をする慣習があります。これはルールではなく慣習です。

ところで,
[Ruby の真/偽と true/false は違う – Qiita](https://qiita.com/scivola/items/1dbb6f7d0b04dda4a633)
にも書いたのですが,Ruby では真・偽を表すのに,必ずしも `true`/`false` を使うわけではありません。

実際,組込みの述語メソッドで,`true`/`false` 以外を返すものも

元記事を表示

Assert&rubular

\![Mac OS X-10.15.7]() \![ruby-2.7.1p83]()

# assert\_equal

equalかどうかを判定する関数を書いてみる

“`lisp
def assert_equal(expected, result)
return expected == result
end

p assert_equal(1,1)
p assert_equal(1,2)
“`

実行結果

“`lisp
$ ruby assert_equal.rb
true
false
“`

# Colorize

出力に色を付けてみることができる

“`lisp
require ‘colorize’

def assert_equal(expected, result)
if expected == result
puts

元記事を表示

Ruby のクラスは定数,じゃない

Ruby の初心者向け記事にときどき,クラスが定数であるかのような記述が見られます。
これは,

“`rb
class Hoge
end

p defined? Hoge # => “constant”
“`

というところから来ているのでしょうね。
`defined?` のあとに定数名を書くと `”constant”` という文字列を返す仕様ですが,そのとおりになっているので,`Hoge` が定数であることが分かります。

でね,上の例で

* `Hoge` はクラスである
* `Hoge` は定数である

はまあ正しいんだけれども,

* クラスは定数である

と言っちゃうとおかしなことになります。
だって,クラスは一つのオブジェクトだし,定数はオブジェクトを指すものでしょ。

では正確にはどういうことなのか?
こうです。

“`rb
class Hoge
end
“`

というクラス定義式を実行すると,「`Hoge`」という名前のクラスが定義され,それが同名の定数に代入された状態になる,ということなんです。

だから `Hoge` はクラス名であり,それを指す定数の名でも

元記事を表示

Ruby on Rails でnewコマンドにてアプリを作成するとbundler: failed to load command: spring (/Users/ユーザー名/アプリを作成するディレクトリ名/アプリ名/vendor/bundle/ruby/2.6.0/bin/spring)と出た話

こんばんは。Miyayanと申します。今回初めてQiitaにて記事をあげます。
ゆえに拙い部分もあるかと存じますが、どうぞよろしくお願いいたします。

# 目次

– 環境
– 参考記事
– 概要
– 仮説
– 試したこと
– 解決方法
– まとめ

# 環境

**OS** : macOS Big Sur ver.11.1
**Ruby** : 2.6.5p114
**Rails** : 6.0.0
**bundler** : 2.1.4, default: 1.17.2
**gem** : 3.0.3

# 参考記事

・[【Rails6】rails new で bundler: failed to load command: spring が出た。問題はbundler2.1.4かRuby2.7にあるようだが…..](https://qiita.com/chabudai/items/4051c21ca9161a301bfb#%E7%99%BA%E7%94%9F%E3%81%97%E3%81%9F%E3%82%A8%E3%83%A9%E3%83%BC)

・[bundler

元記事を表示

Railsチュートリアル 14章 FactoryBotでRelationshipのテストデータの作成

#はじめに
Railsチュートリアルをrspecに対応させながら取り組んでいたところ、14.2.3のリスト14.28のユーザのRelationshipテストデータをFactoryBotで作ろうとしたときにハマってしまったので、備忘録として投稿します。

#環境
– ruby 2.7.2
– rails 6.0.3
– factory_bot_rails 6.1.0
– rspec-rails 4.0.1

#やりたいこと
①下記ようにrelationshipのテストデータを作成するfixtureをFactoryBotで定義する。
②userのテストデータも同時にFactoryBotの定義内で作成する。

“`ruby:test/fixtures/relationships.yml(リスト14.28)
one:
follower: michael
followed: lana

two:
follower: michael
followed: malory

three:
follower: lana
followed: michael

four:
fol

元記事を表示

rubyでapplication/pdfのレスポンスをFileで扱う

外部APIのレスポンスがapplication/pdfだったときの対応

“`ruby

response = http_client.get url
response.headers
# {
# “content-type”=>”application/pdf”,
# }

# シンプルに書き込めばok
file = ::File.open(“path/to/pdf”, “wb”) do |f|
f.write resp.body
f
end

# AWS::S3.upload file.path
# みたいな
“`

“`bash
$ file path/to/pdf
# path/to/pdf: PDF document, version 1.4
“`

元記事を表示

Rubyのネイティブ拡張でメソッド呼び出しをキャッシュさせる簡単な方法

## 概要

[RustのHashMapをRubyから使えるようにしてみたが……](https://qiita.com/irxground/items/16be01872ee88acec013) の続きです。

前回、以下のように書いた。

> ハッシュ値を取得するのに、Rubyのメソッドが動的に呼び出され、Rustのhash関数も実行されている。
さらに Eqの時もRubyのメソッドが動的に呼び出されている。
Rubyからメソッド呼び出しする場合は普通はメソッドをキャッシュしておくので次の呼び出しは速くなるが、CやRustから呼ばれる場合は毎回メソッドテーブルから探しに行く必要があって、とても遅い。

今回、メソッドをキャッシュさせることで find, insert, delete が速くなることを確認できた。

## 結果

before:

“`
$ ruby benchmark.rb –rust –seed 1
Hash: Rust
Seed: 1
user system total real
values 1.896433

元記事を表示

授業資料 & 自分用メモ

\![Mac OS X-11.1]() \![ruby-2.7.2p137]()

# 授業別メモ

| date | lecture number | memo for lectures |
|:—————-|:—————|:——————|
| <2020-10-14 水>| No.1 | hogehoge |
| <2020-10-21 水>

元記事を表示

【Ruby】「オブジェクトへの参照」と「変数の中身」

#はじめに
Rubyを使用していると、「オブジェクトへの参照」という概念が出てくると思います。

例えば、以下のようなコードがあったとします。

```ruby:sample.rb
# 渡された文字列を破壊的に大文字に変換するメソッドを定義する
def replace!(str)
str.upcase!
end

str = 'sample'
# 変数strにreplaceメソッドを適用する
replace!(str) #=> "SAMPLE"
```

この時、replaceメソッドの引数であるstrに渡されたのは、「変数strに格納されているStringオブジェクト'sample'への参照である」いうような説明がよくされると思います。

しかし、この説明を聞いても

- **「オブジェクトへの参照とはそもそも一体どういうことなのか?」**
- **「変数に格納されているオブジェクトへの参照とはどういうこと?」**

と思っている人は多いのではないでしょうか?

今回はそのような方へ向けて、

- **オブジェクト

Ruby の attr_accessor はアクセッサーじゃない

Ruby の初心者向け記事の定番間違いの一つに,`attr_accessor` のことを「アクセッサー」と呼ぶ,というものがあります。
単に言葉の表現が間違っているだけの場合と,そもそも正しく理解していない場合とがあるように思われます。

Ruby の場合,アクセッサーというのは,

* インスタンス変数の値を読み出すためのメソッド(ゲッターと呼ぶ)
* インスタンス変数に値をセットするメソッド(セッターと呼ぶ)

の総称です。
以下の典型的な例を見ましょう

```rb
class Person
def name
@name
end

def name=(name)
@name = name
end
end

a_person = Person.new
a_person.name = "Kaoru"
puts a_person.name # => "Kaoru"
```

二つのメソッドを定義していますが,`name` がゲッターで,`name=` がセッターです。この二つを合わせてアクセッサーと呼ぶわけです。
慣習として,

* ゲッターのメソッド名

Ruby 3でRBS、TypeProf、Steep(型注釈・型検査)を体験してみる!

Ruby3がリリースされました。
Rubyコミッターの皆さん、お疲れ様です。

待ち望んでいた、Rubyの型注釈をやってみる!!

# Ruby3をインストール!

rbenvをインストールする。

```
brew install rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
source ~/bash_profile
```

rbenvからRuby3をインストールする。
インストールできるリストを確認すると、3.0.0があるのを確認。

```
% rbenv install --list
2.5.8
2.6.6
2.7.2
3.0.0
jruby-9.2.14.0
mruby-2.1.2
rbx-5.0
truffleruby-20.3.0
truffleruby+graalvm-20.3.0

Only latest stable releases for each Ruby imple

【Java ~真偽値~】勉強メモ2

Java学習中。
復習に見返せるようにメモしていきます。
ほぼ自分の勉強メモです。
過度な期待はしないでください。

真偽値
-

- 真偽値とは

真偽値とは、「true」と「false」という2つの値がある。
trueは真(正しい)、falseは偽(間違っている)を意味する。
真偽値のデータ型は`boolean型`です。

- 比較演算子

比較演算子とは、値を比較するための記号で、比較した結果は真偽値(trueかfalse)になる。
「x == y」は、xとyが同じかどうかを比較し、同じであればtrue、違っていればfalseとなる。
また「x != y」はその逆になる。

```.java:例
// ①「==」を用いて、値を比較した結果を出力
System.out.println(12 / 4==3);

// ②「!=」を用いて、値を比較した結果を出力
System.out.println(12 / 4!=3);

// boolean型の変数boolを定義し、「3 * 9 == 27」を代入
boolean bool = 3 * 9 =