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

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

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

元記事を表示

Ruby標準入力あれこれまとめ

## 環境
Ruby `3.1.1`
Windows10
VScode

# 1. 1行で1個入力
## 文字列
##### 入力例
hello!
##### コード例
“`ruby
x = gets.chomp
p x # => “hello!”
“`
##### 解説
標準入力から`gets`でデータを受け取り、`chomp`で改行コードを削除

## 整数
##### 入力例
52
##### コード例
“`ruby
x = gets.to_i
p x # => 52
“`
##### 解説
`gets`は文字力として入力する。`to_i`メソッドで整数に変換

## 小数
##### 入力例
2.17
##### コード例
“`ruby
x = gets.to_f
p x # => 2.17
“`
##### 解説
`gets`は文字力として入力する。`to_f`メソッドで小数(浮動小数点数)に変換

# 2. 1行で複数個入力(スペース区切り)
## 文字列
##### 入力例
cat dog rabbit
##### コード例
“`ruby
x = ge

元記事を表示

ruby-build で openssl がインストールされちゃう話

## ruby-build で openssl がインストールされてしまうので調査した

自分でインストールした lib に強制可能か知りたかった

### 向き先を強制するなら RUBY_CONFIGURE_OPTS が良さそう

– ruby-build は定義に share ディレクトリを使ってそう

“`shell
$ ls /usr/local/Cellar/ruby-build/20211109/share/ruby-build | head
1.8.5-p52
1.8.5-p113
1.8.5-p114
1.8.5-p115
1.8.5-p231
1.8.6
1.8.6-p36
1.8.6-p110
1.8.6-p111
1.8.6-p114
$ cat /usr/local/Cellar/ruby-build/20211109/share/ruby-build/3.0.2
install_package “openssl-1.1.1l” “https://www.openssl.org/source/openssl-1.1.1l.tar.gz#0b7a3e5e59c3

元記事を表示

デジタルツールを使って仕事の課題を解決したい

便利なデジタルツールが、手軽に手に入るようになりました。
私は、小売業のネット販売の運営を仕事としておりますが、デジタルツールを使って解決できそうな仕事の課題と解決策を挙げ、身近なデジタルの有効活用方法を考えようと思います。

**1. 社内のお問い合わせ自動回答(実現性 50%)**

課題:システム使用方法、お客さまのお問い合わせなど対応方法が分からず、電話やメールで社内の人に問い合わせしたときに、確認を取った相手が取り込み中だと、対応が遅れてしまう。

改善:よくお問い合わせのあるものをLINEbotで入力すると答えが返ってくる。
技術的には可能だと思う。
実施には構想をつくり、ノウハウもつ各部署のメンバーから情報集約し、データベース化するかがポイントであり、この点が難しい。

**2.パソコン、スマートフォンがしゃべって教えてくれるアラーム機能(実現性 90%)**

課題:小売業の現場では、作業に忙殺され、打ち合わせの時間、冷蔵庫の温度チェックなどの固定されている業務開始時間を忘れてしまうことがある。

改善:時間が来たらパソコン、スマートフォンがしゃべって教えてくれると、忘

元記事を表示

whereやorderをモデルのscopeで書く方法

先日レビューで先輩エンジニアに教えてもらったことが勉強になったので備忘兼ねて投稿します。
whereやorderなどを使うときはモデルのscopeとして書くとスッキリするのと、使い回しもできて良いみたいです。

## controllerに書く方法

今回は商品(products)テーブルで開発日(development_date)降順で並べるとします。

“`ruby:products_controller.rb
def index
@products = Product.order(development_date: :desc)
end
“`

## modelのスコープとして書く方法

まずモデルに以下のようにscopeを定義します。

“`ruby:product.rb
scope: :development_order, -> { order(development_date: :desc) }
“`

コントローラで呼び出します。

“`ruby:products_controller.rb
def index
@products = Product.d

元記事を表示

rbenvでRubyのインストールにコケた話

## Ruby

自分はXcode開発においてパッケージマネージャとしてSPMばかり利用しているのでRubyを必要とする機会はあまり多くないのですが、今回たまたまGemfileを利用しているコードがあり、その対応のためにRubyをインストールしようとしてコケた話と解決方法を載せておきます。

## 環境構築

まずはhomebrewをインストールします。

“`zsh
/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
“`

その後、ruby-buildとrbenvをインストールします。

“`zsh
brew install ruby-build, rbenv
“`

で、ここまでは問題ありません。

### エラー内容

rbenvでRubyをインストールしようとすると以下のエラーが出てコケる人が対象です。

“`zsh
$ rbenv install 2.7.6
Downloading openssl-1.1.1n.tar.gz.

元記事を表示

Ruby Hashオブジェクト ハッシュの基礎知識

# ハッシュとは
Key(キー)とValue(バリュー)の組み合わせで関連付けを行うことができるオブジェクトです。

“`ruby
user1 = {id: 1, name: ‘Tom’} => { :id => 1, :name => “Tom” }
user2 = {id: 1, name: ‘Bob’} => { :id => 1, :name => “Bob” }

user1[:name] => “Tom”
user2[:name] => “Bob”
“`

`Key`をシンボル`:`で定義した場合・・・`変数 = { key: value, key: value, … }`

“`ruby
user1 = {id: 1, name: ‘Tom’} => { :id => 1, :name => “Tom” }
# シンボルで定義した Key を String で指定した場合、値を参照することはできない。
user1[‘name’] => nil

user3 = { ‘id’ => 3, ‘name’ => ‘Jon’ } => {“id”=>3, “name”=

元記事を表示

OTHERカテゴリの最新記事