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

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

Herokuへのデプロイがfatal: the remote end hung up unexpectedlyで失敗した件

いつも通りRailsアプリをHerokuにデプロイしようとすると、以下のようなエラーが出た。

“`
>> git push heroku master
Enumerating objects: 67, done.
Counting objects: 100% (67/67), done.
Delta compression using up to 16 threads
Compressing objects: 100% (50/50), done.
Writing objects: 100% (54/54), 23.86 MiB | 311.00 KiB/s, done.
Total 54 (delta 17), reused 22 (delta 4), pack-reused 0
error: RPC failed; HTTP 504 curl 22 The requested URL returned error: 504
send-pack: unexpected disconnect while reading sideband packet
fatal: the remo

元記事を表示

【備忘録・Ruby】to_○メソッドまとめ

## 初めに
こんにちは、だいごです。
今回はRubyのto_○メソッドをまとめていきます。
よかったらご覧ください。

## to_○メソッドまとめ
今回まとめていくto_○メソッドは以下に記すものになります。
– to_sメソッド
– to_iメソッド
– to_aメソッド
– to_fメソッド
– to_hメソッド
– to_symメソッド

今回はまとめないメソッドはこちらになります。
– to_cメソッド(=複素数に変換)
– to_rメソッド(=有理数に変換)

### to_sメソッド(s:string)
文字列以外のオブジェクトを文字列に変換するメソッド。

“`ruby
オブジェクト.to_s

# 使用例
10.to_s
=> “10”
nil.to_s
=> “”
hoge.to_s
=> “hoge”
“`

### to_iメソッド(i:integer)
文字列を整数に返すメソッド。
また、小数を整数に変換することもできる。
もし、文字列に整数と認識できないものがあれば、その場合は0を返す。

“`ruby
文字列.to_i

# 使用例
“10”

元記事を表示

【rails】chartkick導入ガイド

# はじめに
個人開発の過程でkickchartを利用する機会があったのですが、日本語の記事でわかりやすいものがあまり見つからなかったので公式ドキュメントを日本語化&個人的に役に立った内容を記載しておきます!kickchartを利用する際の参考にしてください!!

# 導入

まずはkickchartの導入からです。rails のバージョンによって導入方法が違うので注意してください!
どのバージョンであってもまずはgemファイルに以下の記述を書き加えてください!!

“`ruby:gemfile.rb
gem “chartkick”
“`

## rails7の場合

configのimport.rbに以下の記述を追加してください。

“`ruby:config/importmap.rb
pin “chartkick”, to: “chartkick.js”
pin “Chart.bundle”, to: “Chart.bundle.js”
“`

また、app/javascript/application.jsに以下の記述を追加してください。
“`ruby:app/j

元記事を表示

【Ruby】あるメソッド内で別のメソッドを呼び出す時に意識すること

こんにちは。
早く駆け出したい @iloveomelette です。

突然ですが、みなさんはあるメソッド内から別のメソッドを呼び出したい時のインスタンスメソッドとクラスメソッドの使い分けはできますでしょうか。
恥ずかしい話ではありますが、私はあやふやでよく`NoMethodError`を出していました。

今回、勉強したことをここにアウトプットしていきますので、
私と同じく使い分けが曖昧な方はサラッとでも良いので、参考にしてくださると幸いです。

尚、ご指摘箇所がございましたら
ご教授いただけますと幸いです。

## 問題

いきなりですが、問題です。
以下の`Actress`クラスにある`yoshioka`メソッドはブロック内にある`arimura`メソッドを呼び出すことはできるでしょうか。

“`ruby
class Actress
def self.yoshioka
arimura
end

def arimura
puts ‘Hello World!!’
end
end

Actress.yoshioka
“`

正解は…

“`zs

元記事を表示

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

## 前置き

前回の記事に引き続き、今回もRubyでAPIを作成していきます。
Docker Desktop,SequelAce, Rubyがインストールされている方は同じように作ることができます。

https://qiita.com/KentaroYoshizumi/items/f8c6d002972b61e10001

参考記事:

https://qiita.com/mokio/items/7d36a7aa79a4bf5066e9

今回は前回よりも少しだけ難易度をあげて、
①ローカルにMySQLコンテナを作る。(アクセスできることを確認する)

②ローカルでAPIを作る。(DBに値を登録する。)

③コンテナ内のDBを参照してみる。

といった流れで進めようと思います。

## ①ローカルにMySQLコンテナを作ってアクセスしてみる。

まずは今回作成する一連のファイルを配置するためにディレクトリを切っていきます。

“`
$ mkdir API_sample
“`
作成したディレクトリに移動します。

“`
$ cd API_sample
“`

このディレク

元記事を表示

Rubyではメソッド名と同じ名前のローカル変数を宣言しないようにしよう

## はじめに
問題です。次のプログラムを保存して実行したとき、ターミナルにはどのような結果が表示されるでしょうか?

“`ruby
# fromからtoまでの連続した整数を配列として返す
def numbers(from: 0, to: 10)
(from..to).to_a
end

def main
p numbers

numbers = numbers(from: 3, to: 7)

p numbers
p self.numbers
p numbers()
end

main
“`

はい、答えはこうです。

“`
$ ruby sample.rb
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[3, 4, 5, 6, 7]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
“`

予想は当たっていたでしょうか?

## 簡単に解説

`main`メソッドの振る舞いにコメントを付けていきます。これで理屈がわかるでしょうか?

`

元記事を表示

Ruby 変数のスコープ レキシカルスコープ

## はじめに
RubyとJavaScriptの違いに手間取ったので備忘録

**JavaScriptのコード**
“`js
let sample = “tee”

const hello = () => {
if(sample === “tee”) {
return “teeです”
} else {
return “該当しません”
}
}

console.log(hello()) //出力結果 “teeです”
“`

**Rubyのコード**
“`rb
sample = “tee”

def hello
if sample == “tee”
return “teeです”
else
return “該当しません”
end
end

puts(hello())

# 出力結果
# undefined local variable or method `sample’
“`

`JavaScript`では関数の外側(レキシカルスコープ)の変数を参照可能です。
`Ruby`ではできない。これちょっとひっかりました・・・
初めて

元記事を表示

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のバージョンが古いと今回のようなエラーが発生するそう。 ## 解決方

元記事を表示

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

元記事を表示

OTHERカテゴリの最新記事