Ruby関連のことを調べてみた2021年10月30日

Ruby関連のことを調べてみた2021年10月30日

【RSpec】Railsチュートリアル 第3章~第5章

#はじめに
Railsチュートリアル第6版ではテストフレームワークとして**Minitest**が採用されているが、実際に現場で使われることの多い**RSpec**を用いて、第3章から第14章において作成するsample_appのテストを書いていく。
テストする内容自体は基本的にはチュートリアルの内容に沿って進めていく。
また、RSpecの書き方については、[『Everyday Rails – RSpecによるRailsテスト入門』](https://leanpub.com/everydayrailsrspec-jp)という書籍を参考にしている。

#事前準備
Gemfileにrspecとcapybaraを追加

“`rb:Gemfile
group :development, :test do
gem ‘rspec-rails’
end

group :test do
gem ‘capybara’
end
“`

RSpecをインストール

“`
$ bin/rails generate rspec:install
“`

ジェネレーターの設定を変更

“`conf

元記事を表示

プログラムにおける数字の操作!

#①.数値

前回の続きです!

今回は文字ではなく数を扱うための値について学習します!

数値は、数を表現する値です。文字列とは異なり、計算などを行うことができます!

数値は文字列とは違って、ダブルクォーテーション”やシングルクォーテーション’も必要ありません!

以下は数値を使った数の表し方の例です!

“`php
# 整数
10

# 負の値
-10

# 小数
3.14
“`

数をダブルクオーテーションで囲むと数値ではなく文字列として扱われてしまいます!

プログラミングでは文字列の”10″と数値の10は別物です!

数値は計算ができますが、文字列は計算ができません!

irbでRubyの数値を記述し、実行してみましょう!

“`php
# 数値を書いてエンターキーで実行
irb(main):001:0> 12345

# 続けてこのように表示されれば成功
=> 12345
“`

#②.数値で計算

数値は文字列とは異なることを学びました。数値は計算できることが特徴です!

ここからは、メソッドと同じくプログラムでよく使われる演算子について学びましょう!

*代数

元記事を表示

【Rails】validateはカスタムメソッド

よく使用する“`validates“`とめちゃくちゃ似てるカスタムメソッド
モデルの状態を確認し、無効な場合にerrorsコレクションにメッセージを追加するメソッドを作成できる

“`model.rb
class Invoice < ApplicationRecord validate :expiration_date_cannot_be_in_the_past private def expiration_date_cannot_be_in_the_past if expiration_date.present? && expiration_date < Date.today errors.add(:expiration_date, ": 過去の日付は使えません") end end ... end ``` ###RSpecでテストする際 expiration_date_cannot_be_in_the_pastメソッドがprivateだった場合、 モデルの単体テストではなく、リクエストテストで期待するエラーが返るかのテストを

元記事を表示

【Rails初心者】Chart.jsの使い方

グラフ(折れ線グラフ、棒グラフ、レーダチャートなど)を書くのに優れているrubyライブラリを学習しましたので、記録のために残します。

#公式ドキュメント
[Chart.js公式サイト](http://www.chartjs.org)

#使い方

##① rails newしてアプリ作成

“`
% rails new chart
“`

まず学習用のファイルを作成します。

## ② controllerとroutesの設定

コントローラーを作成します。

“`
% rails g controller home
“`

続いてコントローラーにindexメソッドを作成します。

“`ruby:app/controllers/home_controller.rb
class HomeController < ApplicationController def index # 追記 end end ``` コントローラーの記述が終わったらルーティングを作成します。 ```ruby:app/confing/routes.rb Rails.application.ro

元記事を表示

【Rails】Herokuでのお問い合わせフォームの作成方法

## お問い合わせフォームの実装

利用環境
・ruby 2.7.3
・Rails 6.1.4

## 前提
お問い合わせフォームでメールを受信するためのメールアドレスを作成
ここではGmailを登録する前提で進めます。

## Gmailアカウントの設定
・2段階認証に設定する
・アプリで利用するためのパスワードを作成
 リンク先:https://myaccount.google.com/u/3/security

## ActionMailerの設定
本番環境のみでの設定とします。
開発環境でのメール確認に興味がある方はこちらを参考にしてみてください。
https://github.com/fgrehm/letter_opener_web

“`terminal:ターミナル
touch config/initializers/mail.rb
“`

“`ruby:config/initializers/mail.rb
if Rails.env.production?
# 自身のドメインに置き換えてください
host = “Herokuのサブドメイン.herokuap

元記事を表示

文字列と数値を使う!

#①.irbコマンド

ターミナルを用いたプログラムの記述と実行をします!

プログラムを実行する際、「逐一ファイルに記述し、実行」という手順は踏まないこととします!

代わりに、irbというコマンドで起動する簡易プログラム実行機能を利用します!

irbコマンドは、ターミナルから直接Rubyのプログラムを動かすことができる機能を起動します!

ちなみに、irbは「Interactive Ruby」の略です!

今回はirbコマンドという機能を使って、ファイル無しでプログラムを実行します!

“`php
(例)ターミナル
# irbを起動
% irb
“`

irbではエンターキーを打つたびに、そこまでの記述を実行して結果を表示する!ということが分かります!

irbを終了するときは、exitと記述して実行します!

“`php
# irbを終了
irb(main):001:0> exit

# 問題なく終了すれば、プロンプトが表示される
%
“`

値を簡単に確認するときはirbを使います!

#②.Rubyにおける値

数や文字をはじめ、プログラムで扱うデータを「値」と言

元記事を表示

【Rails×LIFF】 モテたい人向けのマッチングアプリ完全攻略サービス 「マッチングアプリマスター」 を作りました。 (男性向け) 【個人開発】

# サービス概要
![マッチングアプリマスター トップページのコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840723/5b55db01-0083-8a4f-1a8a-a2c37478f7c7.png)
対応端末は`iPhone X 以降(スマホ)`を推奨しております。
LIFFアプリ(LINEで動くWebアプリ)なのですが、外部ブラウザ(SafariやChrome)からも開くことが出来ます。
※ 二極化

URL:https://dating-apps-master.com/top
Github:https://github.com/ryuki7/dating-apps-master

マッチングアプリを利用しているが女性と上手くいかない、女性の扱い方がわからない、女性との出会いが無くて困っている人に
目的別に適したマッチングアプリを導き出し、そのアプリごとのテクニックやコツを全て指南して、モテ男(マッチングアプリマスター)への道標となる
マッチングアプリ完全攻略サービスです。

元記事を表示

【備忘録】git pushでのerror “src refspec main does not match any”

rails学習中につき、よくやってしまうので備忘録として残しておきます。
私と同じような初学者の方の参考になれば幸いです。

“`
% git push -u origin main
“`

を実行したときにこのようなエラーが出たら

“`
error: src refspec main does not match any
error: failed to push some refs to ‘https://github.com/[githubアカウント名]/[githubリポジトリ名].git’
“`

mainをmasterに変えて

“`
% git push -u origin master
“`

を実行すればよい!

元記事を表示

【Ruby on Rails】よくあるエラー集

# Routing Error
まずはrailsの中でroutingがどのような役割をもっているか理解する必要があります。
・[Routingとは](https://railsguides.jp/routing.html)
![S__29761599.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2165607/6dbee024-2cdc-4f25-5c83-6078c4cdee79.jpeg)
それではエラーについて解説します。
**Routing Error**
routes.rbで定義したルーティングに存在しないURLにアクセスされた場合に起きるエラーです。

**原因**
routes.rbに記述されているものが間違っている。

**解決策**
routes.rbに記載されているものが、コントローラー名とアクション名とマッチしているか確認する(スペルミスなどが考えられます)

# Syntax Error
**SyntaxError**
コードの中にRubyの文法エラーがあるときに発生します。S

元記事を表示

【Rails】コントローラーの処理を共通化したい

##環境
Ruby 3.0.2
Rails 6.1.4.1

##共通化する前

UsersControllerとHomeControllerともに同じコードがあるので共通化したい。

“`posts_controller.rb
class PostsController < ApplicationController def index @post = current_user.post end end ``` ```home_controller.rb class HomeController < ApplicationController def index @post = current_user.post end end ``` ##共通化した後 共通化したいコードをconcerns下にメソッドとして定義する。 ```concerns/common_action.rb module CommonAction extend ActiveSupport::Concern def set_posts @posts = c

元記事を表示

Sonic PiからLogic Proのソフトウェア音源を使う

# まえがき
こんにちは。最近Sonic Piを触り始めてライブコーディングを楽しんでいます。
Sonic Piはとても有能なソフトウェアですが、ひとつだけ不満な点があります。それは、synthの種類少なくない…!?という点です。というわけで、今回はその問題を解決するために、Logic Proの豊富なソフトウェア音源をSonic Piから呼び出してみようと思います。

# 環境
OS: macOS Big Sur 11.4
Sonic Pi: v3.3.1
Logic Pro: 10.7.0

# 方針
具体的な設定手順を説明する前に、ざっと方針を説明しようと思います。
まずはSonic Piの出力先として仮想MIDIデバイスを設定します。(ちなみにMIDI Outに対応していることを利用するとポケットミクを歌わせることもできるらしいです[^1])
次にLogic Pro側でMIDI入力のチャンネルを各トラックに割り当てます。
基本的には以上の2ステップです

[^1]: [Sonic Piでポケット・ミクを演奏する](https://kuwamai.hatenablog.com/

元記事を表示

CSV.parse で空のフィールドを必ず空文字に変換する

## バージョン情報

“`rb
RUBY_VERSION #=> “3.0.1”
CSV::VERSION #=> “3.1.9”
“`

## 内容

CSV.parse で CSV 文字列をパースした場合、空のフィールドは場合によって nil を返したり空文字を返したりする。

“`rb
require ‘csv’

CSV.parse(%(?,,?\n,”?”,””))
#=> [[“?”, nil, “?”], [nil, “?”, “”]]
“`

空のフィールドを空文字に統一したい場合は `nil_value` オプションを使用するとよい。

“`rb
require ‘csv’

CSV.parse(%(?,,?\n,”?”,””), nil_value: ”)
#=> [[“?”, “”, “?”], [“”, “?”, “”]]

# もちろん nil_value オプションに空文字以外の値を指定することもできる。
CSV.parse(%(?,,?\n,”?”,””), nil_value: ‘?’)
#=> [[“?”, “?”, “?”], [“?”

元記事を表示

ユーザー管理機能初期手順②!

#①.deviseのビュー作成!

前回の続きです!

deviseを使用してログイン機能を実装すると、自動的にログイン画面とサインアップ画面が生成されます!

deviseでログイン機能を実装すると、ログイン/サインアップ画面が自動的に生成されますがビューファイルとしては生成されません!

これは、deviseのGem内に存在するビューファイルを読み込んでいるためです!

deviseのビューファイルに変更を加えるためには、deviseのコマンドを利用して、ビューファイルを生成する必要があります!

#②.rails g devise:viewsコマンド

deviseに用意されたビューファイルをコピーし、app/viewsの配下に配置してくれるコマンドです!

HTMLを修正できるため、カスタマイズ可能になります!

deviseのコマンドで、devise用のビューファイルを生成します!

下記がコマンドです!

“`php
ターミナル
% rails g devise:views
“`

上記の作業でdevise用のビューファイルを生成することができました!

#③.ストロン

元記事を表示

Railsチュートリアル2週目を終えて

#概要
Railsチュートリアル2週目を終えたので、感想を書こうと思います。

##かかった期間
10/10 ~ 10/27 (24~26を除く、約2週間)
合計:約63時間

1週目では約48時間かかったので、2週合計で110時間ほど費やしました。

##開発環境
1週目からクラウドIDEではなくローカル環境で開発に挑戦しました。

– Macbook Pro(13-inch, M1, 2020)
– Mac OS Big Sur 11.6
– VSCode (Visual Studio Code – Insiders 1.62.0)
– Ruby 3.0.2p107
– Rails 6.1.4.1

##1週目と2週目の間にやったこと
1週目を終えた時点で「Rubyのコードが読めない」「なにが書きたいのかわからない」と気づきました。恥ずかしながら。Rubyの基礎力がかなり不足していたのです…。Rubyの力を養うために、「たのしいRuby」で文法をメインに勉強しました。

# 2週目で心がけたこと
1週目では上記の通りコードを読めないことに加え、**コードに対するコメント**を全然

元記事を表示

【Ruby】case whenによる条件分岐

##環境
Ruby 3.0.2
Rails 6.1.4.1

##case whenとは

thenは省略可

“`weather.rb
weather = 0
case weather
when 0 then
puts ‘晴れ’
when 1 then
puts ‘くもり’
when 2 then
puts ‘雨’
else
puts ‘雪’
end

#=> 晴れ
“`

putsを省略するとより可読性が上がり、コード量も減らせる

“`weather.rb
weather = 0
case weather
when 0 then ‘晴れ’
when 1 then ‘くもり’
when 2 then ‘雨’
else ‘雪’
end

#=> 晴れ
“`

case文をif文で書き直すとこんな感じ
“`===“`は、左辺が単独のStringやIntegerオブジェクトの場合“`==“`と同じ動作をする

“`weather.rb
weather = 0
if weather === 0 then
puts ‘晴れ’
elsi

元記事を表示

Rubyではシンボルと文字列ならシンボルの方が早い

## 概要
Rubyで、大量の文字列とシンボルを比較する際にはシンボルの方が早い。

## シンボルの特徴
####Ruby内部で文字列でなく整数として扱われるので、早い。
比較検索の際に、有利なのでハッシュのキー、メソッドへの引数に使える。

####イミュータブルなオブジェクトである。
破壊的変更を意図したくない場合に使える。

## 計算
“`ruby
require ‘benchmark’

Benchmark.bm 10 do |r|

fruits = [‘apple’,’orange’,’lemon’]

r.report ‘string’ do
target = ‘orange’
fruits.each {|fruit| fruit == target}
end

r.report ‘symbol’ do
target = :orange
fruits.each {|fruit| fruit == target}
end
end
“`

##結果
“`linux
user

元記事を表示

VS Code で自動的に RuboCop を実行する (rbenv, asdf 対応)

# はじめに
この記事の通りに設定すると、VS Code 上で Ruby ファイルを保存した際に、自動的に RuboCop が実行され、以下のようにエディタ上にリアルタイムで結果が反映されるようになる。

![](https://raw.githubusercontent.com/noraworld/developers-blog-media-ja/master/vscode-rubocop/Screen%20Shot%202021-10-26%20at%2018.50.17.png)

RuboCop のルールに従っていない箇所に波線が表示され、そこにマウスオーバーすると具体的な警告内容が表示される。

## 便利な点
* `git commit` するたびにいちいち `bundle exec rubocop ` を実行する必要がない
* リアルタイムで修正していけるので、あとから RuboCop の警告修正のためだけの時間を取られることが少なくなる
* `.rubocop.yml` の内容が反映される
* プロジェクトごとにルールが異なる場合にも

元記事を表示

【Ruby on Rails】簡単なAPI作ってみた

##はじめに
どうも、27歳未経験からエンジニア転職を目指しているもきおです。

現役エンジニアに入社してから初期段階でどう言ったことをするのかを聞いたら「まずはAPI開発をやったよ」と言われ、APIってどうやって作るの?と思うと同時に作ってみたい!思いました。

今回は簡単なAPIをRailsで作成したのでここに記載したいと思います。

##そもそもAPIとは?
APIに関しては以下記事で概要を掴みました。
[WebAPIについての説明](https://qiita.com/busyoumono99/items/9b5ffd35dd521bafce47)

本当にざっくりしたイメージだとWEBアプリのViewがないバージョンみたいだなーと感じました。もちろんViewがあるのもありますし、本当にざっくりとしたイメージなのですが。
あとはリクエストに対して返却値を返すという点では関数とかのイメージにも近いかもしれません。

##作成物概要
今回はカテゴリーとアイデアという二つのテーブルを用意しアソシエーションはカテゴリ:アイデア=1:多の関係で作成しております。

リクエストに対する一覧

元記事を表示

CRUD処理 Ruby on Rails(データベース編集方法)

データベースにおけるデータの編集や削除の方法まとめ

***
railsのデータベースについて学んでいる時にCRUD処理について学びましたが、なかなか理解ができずまとめてみました。
※本記事では、ageとnameが保存してあるUsersテーブル上で,データの作成、編集方法を記しました。
***
・Create処理(データの追加)

“`terminal:
$ User.create(name:”A”,age:100)
“`

・Read処理(データを読み込み)

“`terminal:
$ User.all #Usersテーブルのすべてのデータを参照
$ User.find(3) #id名からの読み込み
$ User.find_by(name:”C”)  #古いものから1つ
$ User.where(age:12)  #複数の検索
“`
・Update処理

“`terminal:
$ user = User.find(1) #id(1)のデータをuserに代入
$ user.age = 22 #ageを22に変更
$ User.save #保存
“`
・D

元記事を表示

`Bio::GenBank` なオブジェクトをファイルに書き出す

# `Bio::GenBank` なオブジェクトをファイルに書き出す

`bioruby` で起動したシェルでは、 [`getent` したデータを `savefile` することができる。](http://bioruby.org/doc/Tutorial.rd.ja.html)

`biopython` だと `SeqIO.write()` で書き出すことができる。

しかし、 `bioruby` ではなく Ruby のプログラム内で `Bio::NCBI::REST::Efetch` で取得し、パースして `Bio::GenBank` になったオブジェクトをファイルに書き出したかったので調べた結果を記録する。

## できた方法

`Bio::DB` に実装されている `tags()` と `get()` を使う。

“`ruby
obj = … # Bio::GenBank のオブジェクトが入っている

File.open(“sample.gbk”, “w”) do |f|
obj.tags.each do |tag|
f.puts obj.get(tag)

元記事を表示

OTHERカテゴリの最新記事