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

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

Rubyのテスト(Minitest)を初めて使ってみた

Rubyのテストフレームワークを使ってみました。

テストを書くことについて

前提として、テストを書くことは非常に重要で、
環境が壊れていないこと、コードが記載通りに実行できることの確認をすることができます。

環境が壊れていなくても、
バージョンの違いなどによって、動くはずのコードが実は動いていない!!など、起こり得ることです。

基本的に、以下の順序で行うものだと学びました。
① 意図的にエラーが起こることを確かめる(異常系)
② ①を変更して、正常に動作することを確かめる(正常系)

今回は、RubyのテストフレームワークのMinitestについてです。
上記の、①、②の順序でテストを実行してみます。

テストの実行と解説

コードをまずは書いてみましょう。
“`
require ‘minitest/autorun’

class RubyTest < Minitest::Test def test_ruby assert_equal 1, 1 + 1 end end ``` まずは、以下でMinitestライブラリを呼び出

元記事を表示

Anitage+

https://bitsend.jp/

元記事を表示

Ruby on Rails 6.1.5 を Ruby 2.7.6 から Ruby 3.0.4 にあげるときにやること

掲題の作業を実施したところ、色々とハマったので、備忘録として残しておきます。

## 環境

* Ruby 2.7.6 -> 3.0.4
* Ruby on Rails 6.1.5

## Ruby 3.0.4 にあげるときに必要なこと

### (WEBrick 以外を使っていない場合) WEBrick をインストールする
#### 理由

Ruby 3.0.0 より WEBrick が標準ライブラリから削除されました。そのため、Ruby 3.0.0 以降で WEBrick を使いたい場合は、別途インストールが必要になります。

https://www.ruby-lang.org/en/news/2020/12/25/ruby-3-0-0-released/

### bootsnap 1.9.3 以上にする

Ruby 3.0.4 で `rails s` を実行すると以下のエラーが発生します。
“`
% bundle exec rails s
$RUBY_HOME/3.0.0/gems/bootsnap-1.9.1/lib/bootsnap/compile_cache/iseq

元記事を表示

Ruby 配列の中にあるハッシュをeachで回す方法

## 実現させたこと
![a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1248903/bf5eb9a1-d8fd-7661-7bad-b195478d4bd1.png)
上の写真の左側は画像、右側はaタグでそのアカウントに飛ぶようになっている。
ここまでやったこと順番に解説する。

## 実装手順
### データ取得
“`
apps/controllers/application_controller.rb

insta_accounts = LvtInstaAccount.all
@insta_info = []
insta_accounts.each do |insta_account|
data = {}
data[“screen_name”] = insta_account.screen_name
data[“profile_picture_url”] = insta_account.profile_picture_url

元記事を表示

インフラエンジニアがRubyでAPI作ってみた

## 自己紹介
はじめまして。
普段はインフラエンジニアとして業務に当たっております。
未経験からエンジニア転職をした身なので、業務の中でこんなにもコードを書かないものかと、転職前とのギャップに驚いています。
あまりにコードを書かなくて成長を実感しなくなったため、業務外でAPIを作って遊んでみることにしました。
どうぞお付き合いください。

## 今回作るAPI
バンド名とバンドID,曲の名前を返す簡単なものを作成したいと思います。
ただし最初はローカルにサーバーを立てて実行しますが、次回にはDB側をコンテナに、最終的にはAPIもDBもコンテナで動かすという風に、徐々に難しくしていけたらと思います。

## 手順(1)
①railsプロジェクトを立ち上げる

②modelを作る

③仮のデータを流し込む

④ルーティングを設定する

⑤コントローラを記述する

⑥実際に叩いてみる

シンプルですがこの手順でいこうと思います。
のちに難しくしていきます。
あくまで作って動かしてみることを目的としていますので。

### railsプロジェクトの立ち上げ

ターミナルから以下を実

元記事を表示

【初心者】Ruby on Railsでブログを作る

# 概要 :feet:

Ruby on Railsの学習をしています。
1日1つRailsで練習アプリを作る生活3日目です。

明日から、アプリ開発をしようと思っているので最終チェックですね!

参考サイトのを簡略化して実装しているだけなので、詳しくしたり方はそちらをご覧ください。

# 新規アプリを作成 :feet:

“`shell
ubuntu@ubuntuv:~/デスクトップ/projectX$ rails new blog
ubuntu@ubuntuv:~/デスクトップ/projectX$ cd blog
ubuntu@ubuntuv:~/デスクトップ/projectX/blog$ bundle update
ubuntu@ubuntuv:~/デスクトップ/projectX/blog$ bundle install
“`

# Hello Ruby on Rails :feet:

`GET`した`articles`リクエストを`ArticlesController`の`index`アクションに対応付ける
つまり、`/articles`にアクセスが来たら、`hel

元記事を表示

API 経由で起動する Shopify Flow のトリガーを自作してみた

## 概要

**Shopify Flowとは**
Shopify のエンタープライズプラン「Shopify Plus」 を利用すると使えるようになるオートメーション機能。Shopify で構築した自身のストア上における顧客の行動をトリガーに様々なアクションを自動で行ってくれる。

`Trigger → Condition → Action`

– Trigger(トリガー)
– ワークフローを開始させるイベント
– Condition(条件)
– アクションを実行するかどうかの条件
– Action(アクション)
– 条件が満たされた時に行われる内容

“`:ex.
・ ある商品の在庫数が◯個以下になった際に Slack 通知を飛ばす
・ ○円以上の買い物をした顧客に対して特別なタグを付与する
・ 顧客が新規登録されるたびにそのデータをスプレッドシートに記録する
“`

> ![スクリーンショット 2022-04-21 23.46.54.png](https://qiita-image-store.s3.a

元記事を表示

Rails+docker環境構築でyarnが上手くインストールできない

## 概要
Rails6系とdockerで環境構築する際に詰まったので、その原因と解決方法についてを書いています。

## 事象
– dockerfileを使って、docker環境にRailsサーバを立てようとした。
– その際、Railsを使う際の環境要件としてYarnが必要となるが、上手くインストールできなかった。

webpackerをインストールしようとすると…
“`
RUN bundle install && rails webpacker:install
“`
バージョン1以上2以下のyarnが必要ですという下記エラーが発生。
“`
Webpacker requires Yarn “>=1 <2" ``` apt-get installでインストール済みと想定したが、上記エラーにより上手く入っていないことが分かった。 ``` RUN apt-get install -y yarn ``` ## 原因 - yarnのバージョンが古い エラー文の内容をヒントにして原因をググってみたところ、yarnのバージョンが古いと今回のようなエラーが発生するそう。 ## 解決方

元記事を表示

コーディングテスト対策に向けて勉強します!!

##コーディングテストに向けて勉強していきます!!

僕は今までRubyを書いてきたのですがコーディングテストとなると標準入力から値を受け取ったり、またアルゴリズムなども勉強していかなくてはならず今までの開発に対する勉強だけだと足りないのでこれから頑張ります!

元記事を表示

Railsの {OO: :OO} これ何⁇ {OO: OO} とどう違う?

# Railsによく出てくるシンボル、ハッシュについて
## 結論
`{OO: OO}`は、ハッシュのキーとしてシンボルを用いた形である。
そして、
`{OO: :OO}` は、キーがシンボルで値もシンボルであるハッシュのことを指している。
これについて以下で詳しく調べてみる。
## シンボルって何?
文字列の先頭に`:(コロン)`がついているオブジェクトのことを指す。
Stringオブジェクトが文字列を表すのに対して、Symbolオブジェクトは名前を表すものと理解しておく。
##### 1 シンボルは書き換えられない
文字列は書き換えることができるが、シンボルは変更不可である。
##### 2 同じobject_idが割り当てられる
シンボルは同じobject_idが割り当てられるので、以下の通り2つのオブジェクトは同一である。しかし、文字列は2つのオブジェクトは等しいが同一ではない。
“` ruby:ruby
# 文字列
“foo1” == “foo1” #=> true
“foo1”.equal? “foo1” #=> false

# シンボル
:foo1 =

元記事を表示

【Rails】データベースを元に戻す方法

# はじめに
Railsでアプリを開発しているときに、、
やっばっ!!間違って「rails db:migrate」しちゃった!!:cloud_lightning:

ってときありますよね。

そんな時に使える「元に戻す方法」を伝授します:older_man::sparkles:

# 元に戻す方法

### マイグレーションの変更を元に戻す
“`
$ rails db:migrate
# を元に戻したい場合は、、

$ rails db:rollback
# とすればOK!
“`

ちなみに、最初の状態に戻したい時は
“`
$ rails db:migrate VERSION=0
# とすれば戻ります!
“`

## その他、元に戻す方法

### コントローラー
“`Ruby
$ rails generate controller StaticPages home help
# 生成したコントローラーを元に戻すには

$ rails destroy controller StaticPages home help
# として削除すればOK!
“`
コントローラー名、アク

元記事を表示

Gitでコミットする前にRubocopを自動で実行する方法

# はじめに
RubocopのCIを導入しているRuby開発の現場ではRubocopの実行を忘れてpushし、
CIで弾かれてから「忘れてたぁぁ」と言うシーンをよく見ます。
はい、私もそんなことによく出くわしている一人です。
そこでcommitコマンドの実行と同時に毎回Rubocopを回してやろうと思い,
動くものができたので記事にしました。

**※環境**
OS => macOS Big Sur
シェル => zsh
# 結論、以下の手順で設定を行えばコミット時に毎回Rubocopが実行される!!
**1. 「git init」したディレクトリ内の「.git/hooks」に移動**
**2. pre-commitファイルを作成**
**3. 以下の内容をpre-commitファイルに記述する**
“` pre-commit
# 対象のファイル名を取得
function getfilenames() {
git diff –cached –name-only –diff-filter=AM | grep ‘\.rb$’
}

# NGフラグ
ISNG=0
if getfi

元記事を表示

【備忘録】Herokuでのデプロイの流れ

こんばんは、だいごです。
今回は、Herokuでのデプロイの流れを簡単にまとめていきます。
Herokuのコマンドがメインなので省力するところもあります。
よかったらみてください。

## 予備知識
デプロイ
ネットワークを通じてWebアプリケーションなどのシステムを公開し、利用可能な状態にすること。

CLI
コンピュータに対してキーボードからコマンドという文字を打ち込んで操作を行う仕組み。

– **credentials.yml.encファイル**
Railsにて、外部に漏らしたくない情報を扱う際に用いるファイル。
通常時は、英数字の文字列で構成された暗号文が表示され、ファイル内に何が書かれているのか分からない。
master.keyが存在する場合、ファイル内の記述を確認できる。

– **master.keyファイル**
credentials.yml.encファイルを復号する鍵の役割を持ったファイル。
特定のcredentials.yml.encファイルと対になっているので、その他のファイルでは効果を発揮しない。
また、重要なファイルである

元記事を表示

saved_change_to_{カラム名}?について

## saved_change_to_{カラム名}?
あるカラムの値が変更されたときに何らかのメソッドをコールバックする際によく使われるメソッドです。

例えば、以下のように書くとします
“`
validate :validate_change_name, if: :saved_change_to_name?

def validate_change_name
p “名前が変更されました”
end
“`
このようにすることによって、“`name“`カラムの変更されたあとの処理を書くことができます

【参考資料】

https://masarufuruya.hatenadiary.jp/entry/2020/05/08/093857

元記事を表示

FFIやFiddleで自動生成したメソッドをYardドキュメントに掲載させる

不完全な情報だが、ググっても出てきにくい情報だと思うので、忘れる前にメモする。

Rubyは動的な性質の強い言語で、動的にメソッドを定義する機会は多い。Ruby-FFIやFiddleはC言語の関数をRubyから呼び出すためのライブラリで、メソッドをモジュールに動的に追加する。そのため生成されたメソッドはYardドキュメントに掲載されない。(ユーザーはFFIやFiddleで追加されたメソッドを直接呼び出すべきではなく、きちんとエラー処理などを施したラッパーメソッドを作成してそれを呼び出すべきだ。だからYardで生成したドキュメントにそういったメソッドは載せるべきではない、という話があるが、今回それはおいておく。)

Yardにはマクロ機能がついており、これを利用すれば、かなり高い完成度でFFIやFiddleのドキュメントを自動生成できる。

具体的には下記のように、`attach_function` メソッドを再定義し、そこにマクロを追加する。

(ここでは、目的の関数が見つからなくてもRubyが停止しないようにしているが、それはこの記事には関係ない)

“`ruby
module H

元記事を表示

Uncaught ReferenceError: $ is not defined Rails6

Rails6で非同期処理がうまくいかなかったので備忘録。

:::note alert
Uncaught ReferenceError: $ is not defined
:::

##### 原因としては
・jQueryがうまく読み込めていなかった。
・Rails6でのjQuery導入ができていなかった

:writing_hand:参考にした記事

Introducing jQuery in Rails 6 Using Webpacker

#### 導入方法

“`
$ yarn add jquery
““

config/webpack/environment.js
javascript/packs/application.js
に下記を追加

“`environment.js
const { environment } = require(‘@rails/webpacker’)

//追加部分
const webpack = require(‘webpack’)
enviro

元記事を表示

絶対はずさないお店を検索できるwebアプリケーションをリリースするまで②

実装したいこと
jsonデータ形式にすること

修正前
~~~
def index
@cooks = Cook.all
render json:@cooks
end

~~~
結果、jsonデータ形式をしたい場所が、indexではないため、変化なし

修正後
~~~
def show
@cook = Cook.find(params[:id])
render json:@cook
end
~~~
結果、json形式できた

元記事を表示

Rubyの配列の要素を変更するメソッド

# 配列の要素を変更するメソッド
配列の要素を変更するメソッド3つ紹介する
“`
[]=
fill
replace
“`

## `[]=`メソッド
指定したインデックスの値を書き換える。インデックスが配列の範囲を越える時には、配列の長さが自動的に伸長され、伸長された領域は nil で初期化される。
インデックスに Range オブジェクトを指定すると、その範囲にある要素を置換する。
また `[start, length] =` と指定すると、インデックス start から length 個の要素を書き換える。

“`ruby
ary = [1, 2, 3, 4, 5]
ary[0] = “a”
p ary # => [“a”, 2, 3, 4, 5]

ary[9] = 10
p ary # => [“a”, 2, 3, 4, 5, nil, nil, nil, nil, 10]

ary[1..3] = [“b”, “c”, “d”]
p ary # => [“a”, “b”, “c”, “d”, 5, nil, nil, nil, nil, 10]

ary[5, 4] =

元記事を表示

Ruby on Rails 投稿フォームでの改行を反映

この記事は学習中に実装した内容をアウトプットし、更に理解を深めるための記録用投稿になります。
投稿している内容と同じ箇所で躓いている方に少しでもお力添えできれば幸いです。


## 解決したい内容
入力フォームで入力した内容を表示させるときに改行が反映されずに空白が入り表示されるのを解決し、入力した時のレイアウトのまま表示したい。

### 実装前

![スクリーンショット 2022-04-21 19.45.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2608572/31a7846c-4c82-d5a2-d8a0-c4fe0a6b8e3c.png)

### 実装後
—-
![スクリーンショット 2022-04-21 19.44.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2608572/3689604c-c010-1127-7065-479162063a3f.png)

元記事を表示

【初心者】Ruby on Railsでメモ帳アプリを作成する

# 概要 :beers:

脱初心者に向けて、メモ帳アプリをつくっていく!
おなかすいた、絵文字使う練習を兼ねて….
かわいい :japanese_goblin:

# まずは新規アプリの作成から:beers:

“`shell
ubuntu@ubuntuv:~/デスクトップ/projectX$ rails new memo
ubuntu@ubuntuv:~/デスクトップ/projectX$ cd memo/
ubuntu@ubuntuv:~/デスクトップ/projectX/diary_app$ bundle install && bundle update
ubuntu@ubuntuv:~/デスクトップ/projectX/diary$ rails g controller memo index
“`

# 最初のページを作成する:beers:

トップページを作成する:pick:

“`html:app/views/memo/index.html.erb

Memo app

“`

設定ファイルでアプリにアクセスしてきたら、トップページに飛ぶ :air

元記事を表示

OTHERカテゴリの最新記事