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

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

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.png

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

# 1. はじめに

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

元記事を表示

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

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

元記事を表示

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

元記事を表示

Rubyを3.1系から2.7系にバージョン変更した際に起きたエラー

初めに

バージョン変更をする必要があった理由はロリポップマネージドクラウドを使い、自作アプリのデプロイを考えたからです。

バージョン変更前はRuby 3.1.1を使用し開発していましたが、ロリポップマネージドクラウドでは2.7系の開発環境が必要なようです。(念の為問い合わせました)

バージョン変更

バージョン変更方法に関しての詳細は省略しますが、参考にしたサイトとしてこちらを挙げさせていただきます。

[Ruby 3.0.0 から 2.7.2 にダウングレードさせる。](https://qiita.com/wonderglot/items/93cbfc7cb961c5ceb7a7)

私はこのサイトを参考にし、3.1.1から2.7.0にバージョン変更を行いました。

発生したエラー

バージョン変更後に発生したエラーのログはこちらです。

`/Users/tamio/.rbenv/versions/2.7.0/lib/ruby/2.7.0/net/protocol.rb:66: warning: already initial

元記事を表示

【Rails】AppleMusicを投稿して埋め込む方法

# 1:概要

**apple musicのリンクを投稿し、サイトに埋め込む方法**を2つを紹介していきたいと思います。
サイト上で試聴も可能なため、音楽投稿系サイトを作りたい方々にはおすすめ:relieved:
使いたい方法に応じて選んでいただけたら幸いです。spotifyでも応用できるかと思います。

方法はこの二つです!
①埋め込みリンクを投稿する方法
②普通の共有リンクを投稿して埋め込む方法

使い分け方法は以下を参考に!
①`曲・アルバム・プレイリストのカラムを分けずに投稿できる`
②`携帯のMusicアプリからリンクをコピーして投稿できる`

### 完成図イメージ

![GIF 2022-06-14 5-15-46.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1373315/c87bbb5c-6c0a-7e66-f0d6-1b8fc459ffcf.gif)

### 前提
基本的なCRUD機能に関してはすでに実装出来ているものとします。コントローラー名はpostsで記述しています。

元記事を表示

Rails6 Heroku デプロイで発生したエラーとその対処法

RubyとRailsの最新の安定版(2022年6月14日現在での最新の安定版)でherokuへのデプロイを行なった。
その際に発生したエラーをまとめてみました。

## 環境
– mac OS
– ruby 3.1.2 (2022年6月14日現在での最新の安定版)
– rails 6.1.6 (2022年6月14日現在での最新の安定版)
– node 16.13.0 (12以上にしといたほうがいいらしい)
– yarn 1.22.19 (1以上にしといたほうがいいらしい)
## 発生したエラー

### ****Failed to install gems via Bundler****

このエラーは`git push heroku main`コマンドを実行したときに発生。
下記記事の通りでうまくいく。
(https://qiita.com/m6mmsf/items/fb8a8672df98bdb59c9c)

### you don’t have net-smtp installed in your application. please add it to your gemfil

元記事を表示

has_manyとbelongs_toを完全に理解した。

最近railsチュートリアルを完走した22卒エンジニア(男)です。railsのアソシエーションについてです。

railsチュートリアルでhas_many、belongs_toを理解した(つもりだった)のですが実務で全く使いこなせませんでした。で、改めて勉強して**初学者が理解しやすいような表現**がなんとなく分かった気がしたので記事に残します。

※ 私の表現が間違っていたりすることもあるかもしれませんのでその際はご指摘いただければ幸いです。

# 対象者
– has_many、belongs_toが既存の記事であまり理解できない。
– 私のようにhas_many、belongs_toを完全に理解した(つもりの)人

# has_many、belongs_toの正体
## 公式リファレンス
まずrailsガイドの[has_many](https://railsguides.jp/association_basics.html#has-many%E9%96%A2%E9%80%A3%E4%BB%98%E3%81%91:~:text=%E3%81%AB%E3%81%AA%E3%82%8A

元記事を表示

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

## 今日は総合問題を解いてみた!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2632394/beea3a45-205a-d32c-9bda-79e0771f72a3.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2632394/53f05493-88f2-9be4-7541-7599ba1bdd16.png)

## 今日の備忘録

### ハッシュが値の配列でeachを使う場合
* ハッシュが値の配列でeachを使うと指定した変数にハッシュ要素が順番に代入される
* 例:usersをuserに代入してnameキーのみ出力したい場合
* `users=[`
* `[name:”Yamada”,age:21]`
* `[name:”Tanaka”,age:24]`
* `]`
* `u

元記事を表示

アンカーとエイリアスを使っているYAMLの処理がfedora 36で失敗

備忘

# 発生事象

以前は動いていた vagrant up が失敗。

“`
$ vagrant up
Vagrant failed to initialize at a very early stage:

There was an error loading a Vagrantfile. The file being loaded
and the error message are shown below. This is usually caused by
a syntax error.

Path: /foo/bar/molecule/default/Vagrantfile
Line number: 0
Message: Psych::BadAlias: Unknown alias: platform
“`

# PD

PDの結果、YAMLファイルから情報を読み取って使用していたVagrantfileが失敗するようになっていた。

具体的には以下の樣なYAML.load_file箇所が失敗。

“`ruby
require ‘yaml’
foo = YAML.lo

元記事を表示

対象となる文字列からn番目の文字を削除するメソッド

任意の文字列の先頭からn番目の文字を削除するメソッドを紹介します。

例えば下記のように郵便番号111-1111を入力するが間のハイフンを削除して出力したいときなど削除したい文字が何番目にあるかわかっている時などを想定した時

“`
def address(number)
number.slice!(3)
puts number                 #1111111が出力されて”-“が削除されている
end

number = “111-1111”
address(number)
“`

slice!の後ろの()内は配列と同じように0から始まる数字を入れます!

:::note info
slice!メソッドは配列や文字列から指定した要素を削除して返します
:::

元記事を表示

OTHERカテゴリの最新記事