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

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

sliceメソッドを使ったプログラムの備忘録

今日も学んだことを忘れないためにメモします。

## sliceメソッドとは
配列や文字列から指定した要素を取り出すことができるメソッド。
“`
array = [0,1,2,3,4,5,6]
puts array
#=> [0,1,2,3,4,5,6]

# 配列から引数で指定した要素を取得
ele1 = array.slice(1)
puts ele1
#=> 1

# 配列番号-4から4つ分の要素を取得
ele2 = array.slice(-4,4)
puts ele2
#=> 3, 4, 5, 6
“`

文字列だけでなく、配列、ハッシュからも取り出せる(ハッシュの場合はActiveSupportという外部ライブラリーを使う)

“`
# 配列からslice
array = [“Ruby”,”Python”,”Java”]
puts array.slice(0)

# 出力結果
#=> Ruby

# ハッシュからslice
require ‘active_support’
hash = {“Ruby”:”Rails”,”Python”:”Django”,”PHP”

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlの文字コードの比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,Perlの文字コードの比較

# Python

https://qiita.com/ny7760/items/d9c247781a790210936d

# Ruby

https://qiita.com/ima1zumi/items/28ef13f5af3d9afdeaf3

# PHP

https://qiita.com/suin/items/3edfb9cb15e26bffba11

# Java

https://qiita.com/motoki1990/items/cee6a4a75c0320b79ec4

# JavaScript

https://qiita.com/weal/items/3b3ddfb8157047119554

# Perl

https://perlzemi.com/blog/201610061475

元記事を表示

本番環境でFailed to upgrade to WebSocketエラー

### 状況
ローカルでは投稿に対してのコメントができる(ajax)のに、本番環境ではできていなかった。

### 原因
本番環境でactioncableが使えない状況だった

### 解決方法
“`ruby:EC2内
$ sudo vim /etc/nginx/conf.d/rails.conf
“`
以下を貼り付ける。
“`ruby:/etc/nginx/conf.d/rails.conf
upstream app_server {
server unix:/var/www/アプリケーション名/shared/tmp/sockets/unicorn.sock;
}

server {
#省略
# ——————-ここから——————-
# /cableのパスに対してwebsocketの仕組みを用いるための設定
location /cable {
proxy_pass http://app_server/cable;
proxy_http_version 1.1;
proxy_set_header

元記事を表示

【Rails基本編】美少女と学んだ気になれる講座

この講座は、Web業界未経験の**吉野 桜**と、その先輩である**堀切 あやめ**のかわいさをお楽しみいただくため、邪魔にならない程度の差し障りのないWeb技術の話を、お楽しみいただく番組です

## キャラクター

![20220920_resize.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208060/de425bd4-b556-4140-4e9f-52c22fdcd657.png)
吉野 桜: Web業界未経験

![20200920_resize.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208060/8e061b61-cc55-072c-118d-f5f86c2b61ed.png)
堀切 あやめ: Web業界三年目

## 本編

桜「うちのバックエンドってRuby on Railsですよね?」
あやめ「うん、そうだね」
桜「桜、実はRuby on Railsからっきしで……」
あやめ「そうな

元記事を表示

【入門】Ruby eachメソッドの様々な使い方を具体的に紹介

# はじめに
今回は、Rubyに標準で組み込まれている`eachメソッド`について、備忘録としてまとめます。

※おことわり※
基本的に学習内容のアウトプットです。
初学者であるため、間違い等あればご指摘いただけますと嬉しいです。

# この記事の目的
Rubyに標準で組み込まれている`eachメソッド`についてアウトプット

# この記事の内容
1. each_with_index
2. each.with_index
3. eachの入れ子
4. each_slice
5. each_key
6. each_value

# 1. each_with_index
eachメソッドと同様に、要素の繰り返し処理を行いつつ、その要素が何番目に処理されたものなのか表示するメソッドです。
eachでループを回しつつ、それぞれのデータ(要素)に番号を振りたい時などに使います。

– 書き方
“`ruby
配列名.each_with_index do |item, index|

end
“`
– 基本的な書き方
“`ruby
#書き方①
foods = [“あんぱん”, “メロンパン

元記事を表示

getsメソッドを利用したプログラムの備忘録

今日も学んだことを忘れないてためにメモします。

## getsメソッドの種類
getsメソッドが実行されるとターミナルがコマンド入力待ちの状態に変わりユーザーがエンターキーを押すまで文字を入力できる。
送られてきた文字列オブジェクトの後には改行が入る。
gets.chompとすることで改行が入らない。
getsとgets.chompは「数字」を入力しても「文字列」の扱いにしてしまう。
gets.to_iとすることで「数字」として扱える

## プログラム内容
getsメソッドを利用しての位と一の位の数字の足し算、十の位と一の位の数字の掛け算をそれぞれ行い、最後に2つの結果を足し合わせて出力するプログラムになります。
“`
> 二桁の整数を入力してください
> 15

# 1 + 5 と 1 × 5 をそれぞれ計算

> 足し算結果と掛け算結果の合計値は11です
“`

10の位は整数を10で割ったものを更に10で割った計算結果、
1の位は整数を10で割った計算結果の余りで求められる。

Rubyの性質上、整数同士(integer型)の計算だと返り値は整数になるので、小数点以下

元記事を表示

【Rails】【JavaScript】Ajaxを用いてメモ帳の様なアプリをフォームで作る方法

大阪でRailsを中心に学習している薬剤師エンジニア(初学者)こと、ヨマ(@yoma_2003)です!
**Ajaxを用いてメモ帳の様なアプリをフォームで作る方法**をまとめます。

※おことわり※
断定口調でまとめますが、初学者であるため間違い等あればご指摘頂けると嬉しいです。

# はじめに
### やりたいこと
以下の様な**自動更新機能のあるメモ帳(追加・削除できる)アプリ**を作りたい。

![fyj9o-w9rr8.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711042/42ed6ece-62d4-4ab8-5d90-3d0b5e097e24.gif)

### アプリの要件
具体的には以下の様な要件を満たすアプリを作成します。
– ページ遷移がない(index.htmlのみ)
– フォームに入力すると、自動で更新される
– 新規ボタンを押すと、フォームが追加される
– 削除ボタンを押すと、フォームが削除される
– 操作後に更新日時が更新される

# 本記事のポイント

**・データ更

元記事を表示

プログラミング教材の模範解答が模範的でない件

Qiita の新着記事を眺めていると,ときどき同じお題に取り組んだ結果を書いたものをいくつも目にすることがあります。
「模範解答」があったりするので,おそらく何らかの教材に取り組まれたのだろうと思います。
その「模範解答」のコードを見て首を傾げることがしばしばあったので,本記事で具体的に指摘してみたいと思います。
取り上げるのはすべて Ruby のものです。

たいがい出典が書かれていないので,原典を参照することができないのですが。

※本記事は,そういった記事および著者を批判する意図を微塵も持っていません。むしろ応援したい気持ちで書いています。
※また,取り上げた教材およびその提供者を侮辱したり非難したりするつもりもありません。不遜かもしれませんが改善に役立てば幸いです。

なお,教材によってはお題そのものがおかしかったりしますが,今回は取り上げません。

今回,三つのお題を取り上げました。引用したのは,それぞれのお題について,見つけることのできた最も新しい記事です。

# 例:Ruby の each の入れ子

お題は

“`rb
fruits_price = [[“apple”

元記事を表示

git-secretsでコミットができなくなった場合の対処法

### 環境
ソースツリー

### 概要
git-secretsによって、コミットできなくなった場合の対処法の記事はたくさんあるが、
それでは対処できなかったので、備忘録として残しておく。今回は、一旦git-secretsを完全に取り除いてコミットさせるようにする。

### エラー内容
“`
git: ‘secrets’ is not a git command. See ‘git –help’.
“`

## 解決手順
### ①git-secretsをアンインストールする。
“`
$ brew uninstall git-secrets
“`
これでコミットできるようになったかと思いきや、またしても以下のエラーが出る。
“`
git: ‘secrets’ is not a git command. See ‘git –help’.
“`
調べていくうちに、各リポジトリの「.git/hooks」にある「commit-msg, pre-commit, prepare-commit-msg」の3つを消さなければいけないらしい。

## ② 削除する
該当のリポジトリに

元記事を表示

【Rails】render :json に modelメソッドの返り値を追加する方法

# きっかけ
`controller`の返り値を`json`形式で返却する時、モデルで定義されている`attributes`しか返すことができません。そんな時、他の`attributes`を追加する方法が分からず困ることがあったので、備忘録として残します。

# attributeを追加する
`render json:` に、`methodsオプション`をつけ、`model`で定義したメソッドを呼び出す。

# 使い方
例えば・・・
以下のようなモデルがあったとする。
“`ruby
create_table “users”, force: :cascade do |t|
t.string “first_name”, null: false
t.string “last_name”, null: false
t.datetime “created_at”, precision: 6, null: false
t.datetime “updated_at”, precision: 6, null: false
end
“`

で、以下のようにで`ActiveRecor

元記事を表示

真偽値による条件の組み合わせ

本日アウトプット練習2回目。

以下の条件を満たすメソッドを実装。

・第一引数のnumが1以上かつ10以下の範囲であればTrueを出力すること
・第二引数のoutside_modeがTrueの場合は、第一引数numが条件範囲外でもTrueを出力すること
・それ以外はFalseを出力すること

“`rb
def in1to10(num, outside_mode)
# ここに条件式を記述する
end

# 呼び出し例
in1to10(5,false)
in1to10(11,false)
in1to10(11,true)

# 出力例
#in1to10(5,false) →True
#in1to10(11,false) →False
#in1to10(11,true) →True
“`

#### 最初自分で書いたダメな例
“`rb
def in1to10(num, outside_mode)
if num >= 1 && num <= 10 puts "True" else puts "False" end end in1to10(5,fal

元記事を表示

システムスペックではvisit hoge_urlではなくvisit hoge_pathと書かないとNet::ReadTimeoutエラーが発生する

## 発生した問題
Hello worldレベルのごく簡単なRailsアプリを作成し、rspec-railsをインストールして次のようなシステムスペックを書きました。

“`ruby
require ‘rails_helper’

RSpec.describe “Home”, type: :system do
before do
driven_by(:selenium_chrome_headless)
end

example do
visit root_url
expect(page).to have_content ‘Home#index’
end
end
“`

テストを実行すると・・・あれ?

“`
$ bundle exec rspec
DEBUGGER: Attaching after process 28722 fork to child process 28745

(何も起きない)
“`

この状態が何十秒も続き、最終的には以下のエラーが出て終了しました。

“`
$ bundle exec rspec
DEBU

元記事を表示

eachの入れ子

またサボり気味だったアウトプットの練習。
でも3日坊主を何回も続けていれば完全にサボったことにはならない(言い訳)

# 問題
配列の中にある果物の名前と値段の合計金額を出力しろという問題。

“`
fruits_price = [[“apple”, [200, 250, 220]], [“orange”, [100, 120, 80]], [“melon”, [1200, 1500]]]
“`

“`
(出力)
appleの合計金額は670円です
orangeの合計金額は300円です
melonの合計金額は2700円です
“`

#### 自分の回答

“`practise.rb
fruits_price = [[“apple”, [200, 250, 220]], [“orange”, [100, 120, 80]], [“melon”, [1200, 1500]]]

fruits_price.each do |item, price|
puts “#{item}の合計金額は#{price.sum}円です”
end
“`
自分は配列内の全要素の合計を出すためにs

元記事を表示

Ruby の構造体的・ハッシュ的データ構造についての考察 (1)

いや,まあ「考察」なんて立派なものじゃないんだけどさ。

とりあえず長文にはなっちまったわい。

# はじめに

プログラミングで扱うデータは,単一の数値だったり文字列だったりという単純なものもあるけど,もっと複雑なものもある。
例えば書誌情報の場合,一つのデータが「書名が〇〇で,著者が〇〇で,出版元が〇〇で,発行年が〇〇」といった複数の情報からなっている。以下のように。

|属性名|属性値|
|:—-|:—-|
| 書名 | Ruby on Fails |
| 著者 | ルビ子 |
| 出版者 | 譜露蔵民具社 |
| 発行年 | 2023 |

本記事では,このように「◎◎が〇〇で,◎◎が〇〇で」といった情報(のカタマリ)を表すデータ型について考える。

# どんな方法があるか

このようなデータを表す方法はたくさんあるが,大きく分けて

* 汎用のクラスを使う方法
* (書誌情報なら書誌情報専用の)クラスを作る方法

がある。

前者の代表としてハッシュを使う方法が考えられるし,後者の代表としてはクラス式でクラスを定義する方法が考えられる。

この節では,いくつかの方法を

元記事を表示

rails で slack command の request を受け取る

# 概要
– slack command など request end point を 設定する
– slack command request から data を取得
– slack command が投入された channel へ応答を返す
– 別記事にて記述

# request end point の設定
– slack app 設定画面を開く
– https://api.slack.com/apps/
– [ slash command ] を開く
– [ Create New Command ] を選択し, 以下を埋める
“`
– Command : command 名を設定
– Request URL : rails の url path を設定 # http://rails.path/ など
– Short Description : command の簡易説明を設定
– Usage Hint : command の使用方法などを設定
“`
– [

元記事を表示

【Ruby on Rails】Railsチュートリアルを参考にログイン機能実装の流れをおさらい

# ユーザの作成

Userモデルにパッと必要そうなカラムを
まず入れてみる。
“`:terminal
rails g model User name:string email:string
“`

一旦migrationする。
“`:terminal
rails db:migrate
“`

ログイン機能とかがないのであれば、
もしかしたら、これでも足りる(?)のかもしれないが、
ログインするためには、
passwordが必要であろう。

セキュリテイーとかをガン無視するのであれば、
単にpasswordカラムをUserモデルに追加して、
そのまま平文で保存すればいいと思うが、
流石にそれはまずいということで、
has_secure_passwordを使うことにする。

そのためには、password_digestカラムが必要になるので、
password_digestをUserモデルに追加する。
“`:terminal
rails generate migration add_password_digest_to_users password_digest:string

元記事を表示

blastengineのRuby SDKを使ってテキストメールを一括配信する

[blastengine](https://blastengine.jp/)はエンジニアフレンドリーなメール配信サービスです。APIとSMTPリレーの両方をサポートしており、手軽に素早くメール配信ができるようになっています。

今回はRubyでblastengineのAPIを簡単に使えるSDKを開発しましたので、使い方を紹介します。現在はトランザクションメール(即時発信メール)とバルクメール(一括配信)をサポートしています。この記事ではバルクメールの使い方を紹介します。

## インストール

インストールはgemコマンドやbundlerで行ってください。

“`
# Gemfile
gem ‘blastengine’
“`

または

“`
gem install blastengine
“`

## インポート

SDKをインポートします。

“`ruby
require “blastengine”
“`

## 初期化

Blastengineを初期化します。ユーザ名とAPIキーを使います。

“`ruby
# 初期化
Blastengine.initialize

元記事を表示

blastengineのRuby SDKを使ってテキストメールを即時配信する

[blastengine](https://blastengine.jp/)はエンジニアフレンドリーなメール配信サービスです。APIとSMTPリレーの両方をサポートしており、手軽に素早くメール配信ができるようになっています。

今回はRubyでblastengineのAPIを簡単に使えるSDKを開発しましたので、使い方を紹介します。現在はトランザクションメール(即時発信メール)のみサポートしています。

## インストール

インストールはgemコマンドやbundlerで行ってください。

“`
# Gemfile
gem ‘blastengine’
“`

または

“`
gem install blastengine
“`

## インポート

SDKをインポートします。

“`ruby
require “blastengine”
“`

## 初期化

Blastengineを初期化します。ユーザ名とAPIキーを使います。

“`ruby
# 初期化
Blastengine.initialize api_key: “API_KEY”, user_name: “USE

元記事を表示

ruby から slack へ message を送信する

# 目的
– ruby から slack channel や個人へ message を送信する
– 送信者は bot 扱いとなる

# 概要
– 使用 gem
– token の取得
– channel id, user id の取得
– ruby code sample
– token 設定
– dm
– message
– block

# 使用 gem
“`
gem ‘slack-ruby-client’
“`

– repository
– https://github.com/slack-ruby/slack-ruby-client

# bot auth token の取得
– [ 使用する slack app の設定画面 ] を開く
– https://api.slack.com/apps/
– [ OAuth & Permissions ] を開く
– [ Bot User OAuth Token ] を控える

![スクリーンショット 2022-09-25 21.11.16.png](ht

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlの数値計算の比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,Perlの数値計算の比較

# Python

https://qiita.com/Sunset_Yuhi/items/fa6e97867ac46a604780

# Ruby

https://qiita.com/u651601f/items/52af880d1569c6c1066f

# PHP

https://qiita.com/mpyw/items/346c535ade9dcf6e1b12

# Java

https://qiita.com/takahirocook/items/748990882f2de7a630a1

# JavaScript

https://qiita.com/daikw/items/663bc0b5a4c025694974

# Perl

https://perlzemi.com/blog/20161

元記事を表示

OTHERカテゴリの最新記事