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

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

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

## 今日は引数を学んでみた!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2632394/6b8687ef-9abb-d0fd-5542-b26af57437f0.png)

## 今日の学び

### メソッドの使い方

* メソッドは何度も同じような処理を書く必要があるときに有効
* 例
* `def introduce(name)`
* `puts “こんにちは”`
* `puts “私の名前は#{name}です” `
* `end`
* `introduce(“山田太郎”)`
* `introduce(“鈴木花子”)`
* `introduce(“田中二郎”)`

* 引数は文字列だけでなく数値も渡せる
* 例
* `def introduce(age)`
* `puts “こんにちは”`
*

元記事を表示

インストール不要!ブラウザだけではじめるRubyゲームプログラミング環境「rbCanvas」の紹介(DXRubyスタイル)

rbCanvas
[https://rbcanvas.net](https://rbcanvas.net)

rbCanvas_公式HP.gif

([rbCanvas公式ページ](https://rbcanvas.net) より)

# 1. はじめに

[Ruby](https://www.ruby-lang.org/ja/)でゲームプログラミングによく使われるライブラリに、[DXRuby](https://dxruby.osdn.jp)があります。また、DXRubyと互換性のある統合開発環境として、[Nyle-canvas](https://spoolkitamura.github.io/nyle-canvas/dev2/site/index.html)や [DXOpal](https://yhara.gi

元記事を表示

【完全自分用】Rubyの問題を解いて知識をアウトプットする。

# はじめに
今回は完全に自分用アウトプットです。
Rubyの問題を解いて、プログラムの知識や考え方を深堀りするために記述します。

# Q1 ハッシュの基礎
まずはハッシュの基礎
“`
puts hash.keys
puts hash.values
“`
のメソッドを実行した際に英語と数字で123が表示されるように記述。
“`
hash = {one: 1, two: 2. three: 3}
“`
これは簡単。
“`
hash = { キー: 値}
“`
基礎中の基礎。
# Q2 二重ハッシュ
続いて二重ハッシュ
“`
user_data = [
{user: {profile: {name: ‘George’}}},
{user: {profile: {name: ‘Alice’}}},
{user: {profile: {name: ‘Taro’}}},
]
“`
ユーザーの名前だけが出力されるようコーディングする

“`
user_data.each do |u|
puts u[:user][:profile][:name]
end
“`
抑える

元記事を表示

対象の文字列から指定した文字を取り出すscanメソッド

対象となる文字列や、文字列を代入した変数から指定した文字を取り出し、その数を出力する方法を記述していきます。

“`
comment = “great good bad good good”
“`
例として上記のような形でcomment変数に入ったgoodの数を知りたい時は次のようにscanメソッドが使用できます。
“`
comment.scan(“good”).length

=>3
“`

scanメソッドは文字列を配列の形で取り出します。
“`
comment.scan(“good”)

=> [“good”, “good”, “good]
“`
なのでlengthを用いて要素の数を取り出しています。

元記事を表示

【paiza】論理演算を用いた計算のまとめ Ruby

表題のものについてRubyの回答がなかったため、まとめてみました。
不備等あればご連絡ください。

■ド・モルガンの法則とビット演算子を使用した回答
“`
a,b,c,d = gets.split.map(&:to_i)

puts (((a | b) & c) ^ d)
“`
■if文を使用した回答
“`
a,b,c,d = gets.split.map(&:to_i)

if a == 0 && b == 0
e = 1
else
e = 0
end

if e == 0 && c == 1
f = 1
else
f = 0
end

if f + d == 1
puts 1
else
puts 0
end
“`

【参考】
https://www.javadrive.jp/ruby/num/index6.html

元記事を表示

rails コントローラ別 アクション別に別々のlayoutを読み込む方法(自分用)

https://www.javadrive.jp/rails/template/index3.html#section3

元記事を表示

「まだRailsでstrftime使ってるやついる?」「いねえよなぁ!!?」【日時のフォーマットをja.ymlで管理する】

※ 結論だけ知りたいという人は[解決法](#解決法)から見てください

「まだRailsでstrftime使ってるやついる?」

「いねえよなぁ!!?」


はい、使ってます。

`strftime`を使用して、日時をフォーマットする際
“` erb:View

<%= @model.time.strftime('%Y年%m月%d日 %H時%M分') %>

“`
のように毎回記述する必要があり
「いちいち指定しなくても同じ形式でフォーマットしてほしい」
「フォーマットをまとめて管理したい」
といった悩みに苦しめられてきました。

「仕方ない」と諦めていたこの悩み…解決する方法を実は見つけてしまったのです。

私みたいに諦めてstrftimeを使っているそこの貴方、今まさにstrftimeを使おうとしているそこの貴方。
「もっと早く気づいていれば、もっといい感じにプロダクトを作れた」
と思うその前に、是非参考にしてみてください。

# strftimeとは?
strftimeは、日時のデータを指定したフォーマット文字列に変換で

元記事を表示

URLパラメータ(クエリ文字列)は文字列で取得されますよ。

先日会社でサービスの開発をしている時、URLパラメータを取得しているのに読み込まれていない事案が発生しました。
案外ミスしがちなポイントだったので記事に残します。(タイトルが結論ですが。)

# やりたかったこと
URLパラメータをインスタンス変数に入れてviewで表示内容を変えるというものです。

“`controler.rb
@user_type = params[:id] # URLパラメータの値を取得
“`

“`view.rb
<% if @user_type == "1" %>
<%= link_to %>
<% end %>
“`

# はまりポイント
はまりポイントというほどでもないですが、ちょいはまりくらいです。
URLパラメータは文字列型で取得されることです。
ですので「よし、id=1のパラメータを取得したぞぉ」といって“`if @user_type == 1“`と書いても認識されないわけです。

# まとめ
「URLパラメータは全て文字列で取得される。IntegerやArrayで使用したい場合は都度、変更する必要があ
る。」
URLパラメー

元記事を表示

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

## 今日はメソッドを学んでみた!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2632394/cd7e40ec-c3b8-cb20-8128-0245c59fcab5.png)

## 今日の学び
### メソッドの作り方(定義の仕方)と呼び出し方
* メソッドとは複数の処理を1つにまとめたもの
* 「def メソッド名」と「end」の間にまとめたい処理を書くことでメソッドをつくることができる
* `def メソッド名`
* `処理1`
* `処理1`
* `end`
* 定義したメソッドを「メソッド名」で呼び出すことができる
* `メソッド名`

### 引数
* 引数(ひきすう)とはメソッドに与える追加情報
* メソッドを呼び出すときに一緒に引数を渡すことでメソッドの中でその値を利用することができる

### 引数を受け取るメソッドの定義
* 「def メソッド名(引数名)」とすることで引数を指定することができる

元記事を表示

テックキャンプ現役受講生のアプリ開発1日目

みなさんこんにちは!今日は要件定義とDB設計をやっていました(+読書)。学んだことのアウトプットします。本日は2つです。

# 起業家の思考法(平尾著)を読んで学んだこと
起業アイデアの出し方について書かれた本です。アプリ開発のアイデア出しに応用できるかなと思って読んでいました。主に応用できるアイデアは2つ。

1、目的を見つけ、現状を分析して、それらの差分が解決すべき課題である。
上記の文脈に合わせて、一つアイデアを出してみます。
例えば、フードロスは0の方がいいよね(目的)。⇨日本ではフードロスが年間○千万トンある(現状)。⇨賞味期限ギリギリの食材を廉価で流通させる市場を作ればいい(課題&解決アイデア)。というような感じです。今回は何らかの問題の解決を、アプリでしようと思います。

2、自分らしさ、優秀な手法、逆説(意外性)の3つを掛け合わせたものが、素晴らしい解である。
上の3要素が合わさらないと、素晴らしい解決策にはならないということです。
・自分らしさとはそのまま個性のこと。
・優秀な手法とは、世に認められている素晴らしいやり方やこと。
・逆説はそのまま
自分らしさだけを全面

元記事を表示

ActiveRecord オブジェクトを dup メソッドでコピーする場合は、インスタンス変数もコピーすることに注意する

# バージョン情報

“`shell
$ ruby -v
ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [arm64-darwin21]

$ bin/rails -v
Rails 7.0.3
“`

# 内容

ActiveRecord オブジェクトの属性 (attributes) を引き継いだ別のオブジェクトを作成し、データベースに保存したい場合に [ActiveRecord::Core#dup](https://api.rubyonrails.org/classes/ActiveRecord/Core.html#method-i-dup) を使用することがある。この場合、たしかに属性は引き継がれるが、同時に [Object#dup](https://docs.ruby-lang.org/en/3.1/Object.html#method-i-dup) の振る舞いにより**インスタンス変数の値も引き継ぐ**。

https://docs.ruby-lang.org/en/3.1/Object.html#method-i-dup よ

元記事を表示

MySQLの “The server quit without updating PID file” エラーの対処法

以前rails sをしようとしたときに、The server quit without updating PID file のエラーにハマったので対処法を紹介します。
自分の場合は、mysqlを再インストールし、パスワードを設定したら無事に解消できました。
## 1.mysqlを再インストール
再インストールについては、下記の記事を参考にしました。
https://gonzaemon.site/posts/2019/10/04/_2.html

基本的には、
“`
brew uninstall mysql
brew install mysql
which mysql
“`
すれば、再インストールできます。
そして、再インストールしたらいけるかと思いきや
“`
‘Access denied for user ‘root’@’localhost’
“`
と言うエラーが出てしまいました。
この対処法としては、パスワードを設定すれば解消できると思います。

## 2.パスワードを設定

自分の場合は、この記事を参考にしました。
https://webkaru.net/mysql/mys

元記事を表示

インストール不要!Rubyでゲーム、ビジュアルアート開発ができる新環境「rbCanvas/p5」の紹介

rbCanvas/p5
[https://rbcanvas.net/p5/](https://rbcanvas.net/p5/)

rbCanvas_p5_公式HP.gif

([rbCanvas/p5公式ページ](https://rbcanvas.net/p5/) より)

# 1. はじめに

[Ruby](https://www.ruby-lang.org/ja/)でゲームプログラミングというと、[DXRuby](https://dxruby.osdn.jp)ライブラリが多く使われてきました。また、DXRubyと互換性のある統合開発環境として、[rbCanvas](https://rbcanvas.net/index.html)や [DXOpal](https://yhara.github.io/dxopa

元記事を表示

【Selenium】Dockerコンテナ内でSeleniumを実行すると起きるエラーの解決: Selenium::WebDriver::Error::UnknownError【ruby】

ソースコード

だいぶはしょってますが、クロールするための、Crawlerクラスです。

“`ruby
require ‘selenium-webdriver’

class Crawler
def execute
driver.navigate.to start_url
driver.find_elements(:xpath, ‘//*[@id=”tabular-buybox”]/div[1]/div[4]/div/span/a’)
# 以下略
end

private

def driver
@driver ||= begin
options = Selenium::WebDriver::Chrome::Options.new
options.add_argument(‘–headless’)
Selenium::WebDriver.for(:chrome , options: options).tap do |driver|
driver.manage.timeou

元記事を表示

Ruby で開発する時に、少し助けになる(かも知れない)小ネタ

はじめまして。
Qiita は読み専だったのですが、アウトプットも行いたいと思い、投稿をすることにしました。
よろしくお願いいたします。

# 概要
Ruby でより良いコードを書くための話題**では無いです。**(すみません)

開発時、特に動作確認(不具合修正を含む)を行う時に実施すると
**少しだけ作業に掛かるコストが低減される**
というお話しです。

### 1. デバッグ目的の出力処理などは行頭に書くと良い(理由:あとで探しやすいから)
(これは Ruby に限った話しではありませんが)
簡単な動作確認のために、中身を見たいオブジェクトの内容を
出力させて目視する、という手段は一般的かと思います。
そのような(最終製品には含まれない)目的で使うコードは行頭から書くと良いです。
このような感じです:
“`rb
def hoge(arg)
if arg.class != Hash
print “arg の class は? : “; pp arg.class
end

end
“`
このように書いておくと、後で(必要なくなってから)削除する時に
`^p(p

元記事を表示

Railsのテストコードの書き方について

## 概要
こんにちは。shunです。前職ではテストコードを書いたことがなかったため、今回は自分用のメモもかねてRailsでのテストの書き方について説明していきたいと思います

## 前提
– テストを書いたことがない
– Ruby 2.6.6
– Rails 6.0.5
– Rails標準のテスティングフレームワークであるMinitest(後述)を使います
– テストを書いたことない人向けなので今回はRspecは使いません
(今後Rspecについての記事も書いてみたいです)

## そもそもテストって何?なんでテストが必要なの?
テストはプログラムが想定通りの動きをするか確認するためのものでここでは3種類のテストを取り上げます
– Unit test(単体テスト)=モデルのテスト
– Controller test(機能テスト)=コントローラのテスト
– Integration test(結合テスト)=全体の動作の流れのテスト

また、テストコードを書く理由としては主に

– リファクタリングを実施しやすくするため
– コードの品質を高めるため
– テストを自動化するため
– バグを

元記事を表示

6月末までにオリジナルアプリケーション開発します。

# アプリ開発を公開しようと思った経緯
皆さんこんにちは。harukiと申します。早速ですが、当方の簡易な経歴とアプリ開発の過程を公開するに至った経緯を記述しようと思います。

#### 私の経歴
・20年卒の元地方銀行員。約2年で退職。⇨テックキャンプに入校⇨カリキュラムが大方終了し今日からオリジナルアプリ作成
となっております。

#### アプリの開発過程を公開する目的
・過程をアウトプットすることで、自分の学びになると思ったため
・今後、初めてアプリ開発する人何かの参考になるかもしれないため
・開発過程を公開することで、モチベーションを高めるため
・期日を決めるため

上記のような目的で、テックキャンプ受講生のアプリ開発過程を公開しようと思ったわけです。一言でまとめると、自分にプレッシャーをかけるためにアプリ開発過程を公開します。

# 使用する言語
・ruby 2.6.5
・HTMLやCSS、Javascript

# 開発するアプリ内容
ここからが本題です。
初めて開発するアプリは「議論するための場所を提供するプラットフォーム」にしようかと思います。
付ける機能大まかに

元記事を表示

クラスメソッドとインスタンスメソッドの違い

# メソッドとは
Rubyではdefを使ってメソッドを定義します。
“`ruby
def # メソッド名(引数)
# 必要な処理
end
“`
“`ruby
def add(a, b)
puts a + b
end
add(1, 1)
#=>2
“`

# クラスとは
Rubyではクラスを次のように定義します。クラス名(例:Addition)は必ず大文字で始めます。
“`Ruby
class Addition
end
“`

# インスタンスとは
Rubyでは以下のようにクラス名.newと書くことでインスタンスを生成することができます。
“`ruby
Addition.new
“`

# インスタンス変数とは
インスタンス作成時に実行されるinitializeメソッドを利用して「@がついたインスタンス変数」に代入します。インスタンス変数はインスタンス内であればどこでも呼び出すことができます。
“`ruby
class Addition

def initialize(a, b)
@a = a
@b = b
end

end

元記事を表示

【Ruby】LINEbotの作り方をまとめてみた

# はじめに
RubyでLINEbotを制作した際、「RubyでLINEbotを作る」という記事やサイトが少なく非常に困りました。そこで、これからRubyでLINEbotを動かしたいという人に少しでも参考になればと思い、この記事を書くことにしました。
その中で「もっと簡単に書けるよ」というのがあるかもしれません。
そのときは教えていただけると嬉しいです。

# 前提
LINEbotのサンプルコード(Ruby)を動かせることが前提です。
以前の記事で詳しく書いているので[こちら](https://qiita.com/Yuzu_Ginger/items/18edc58bd039fc19ad53)をご覧ください。

https://qiita.com/Yuzu_Ginger/items/18edc58bd039fc19ad53

# 目次
[応答メッセージについて](#応答メッセージについて)
[サンプルコード](#サンプルコード)

[メッセージタイプの種類](#メッセージタイプの種類)
  [1. テキストメッセージ](#1-テキストメッセージ)
  [2. スタンプメッセージ](#2-

元記事を表示

「超初心者向け」MacにRubyを最速でインストール(更新)

# Mac Ruby インストール備忘録

いらないこと書く記事が嫌いなので、最小の内容だけ書きます。自分が手順を正確に踏めている自信がない場合は、調べてください。すいません。

## rbenv インストール

`brew install rbenv`

`rbenv -v`で確認可能。

## 次に、rbenv で目標の Ruby バージョンをインストール

`rbenv install -l`で、最近のバージョンを表示。`rbenv install -L`で全てのバージョンを表示。
ここで確認した`3.1.2`や、`truffleruby+graalvm-22.1.0`などを次のコマンドで使用します。

`rbenv install 3.1.2`を実行。この時、`3.1.2`をインストールします。

## rbenv で、最新版 Ruby を有効化

次に、`.zshrc`を編集します。
`code .zshrc`などで開き、

“`
[[ -d ~/.rbenv ]] && \ export PATH=${HOME}/.rbenv/bin:${PATH} && \ eval

元記事を表示

OTHERカテゴリの最新記事