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

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

redmineのアップデート3.1から4.2

ダメ元でやってみようと思ってやってみたらできた。笑

# 環境(移行元、移行先)

| # | 移行元 | 移行先 |
|:-|:-|:-|
| Redmine | 3.1.0 | 4.2.2 |
| Ruby | 2.0.0 | 2.7.4 |
| Rails | 4.2.3 | 5.2.6 |
| Webサーバ | Apache2.4 | Apache2.4 |
| Appサーバ | passenger 5.0.30 | Unicorn 6.0.0 |
| OS | Amazon Linux2(x86_64) | Amazon Linux2(ARM64) |
| DB | RDS/MySQL8.0 | RDS/MySQL8.0 |

※プラグインは、[view_customize](https://github.com/onozaty/redmine-view-customize)のみ
※Themeは、[bleuclair](https://github.com/farend/redmine_theme_farend_bleuclair/blob/ma

元記事を表示

Rails form_select が急にsyntax error になった時のデバッグ

こんにちは。
今まで普通に動いていたform_selectが急にシンタックスエラーを吐いたのでデバッグしました。

![エラー画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1430116/171ace52-d203-01b0-449b-c51f80eff0a4.jpeg)

原因は直前までdeviseの日本語化のため、i18Nの設定をいじっていたことらしいです。
ということで config/locals/ja.yml に日付も対応させてあげようということで…

“`yml:config/locals/ja.yml
ja:
date:
formats:
default: “%Y/%m/%d”
short: “%m/%d”
long: “%Y年%m月%d日(%a)”

day_names: [日曜日, 月曜日, 火曜日, 水曜日, 木曜日, 金曜日, 土曜日]
abbr_day_names: [日, 月, 火, 水, 木, 金, 土]

元記事を表示

orderメソッドを使用して順番を入れ替える!

# 結論!

orderメソッドを使用すれば投稿順を最新や古い物など並べ替えられるという事!

もっと細かく具体的にいうと、そもそもorderメソッドは、ActiveRecordメソッドです!

テーブルから取得してきた、複数のレコード情報を持つインスタンスの並び順を変更するメソッドのことです!

# orderメソッドの記述!

複数のレコード情報を取得する文に続けて以下のように記述します!

“`
インスタンス = モデル名.order(“並び替えの基準となるカラム名 並び順”)
“`

では、この並び順とは?

ASC(昇順)とDESC(降順)の2種類があります!

ちなみに2種の略は、

ASC = Ascending  (小さいものから大きいものになる。古いものから新しいのものになる)

DESC = Descending (大きいものから小さいものになる。新しいのものから古いものになる)

となります!

 新しい投稿から表示させていのであれば、DESCを使用するという事です!

下記は詳しい記述例です!

“`php:controller.rb
def ind

元記事を表示

ユーザー登録(devise)と同時に別モデルにデータを同時保存したい場合の話。

# はじめに
オンラインスクールにてRuby on Railsの学習をはじめ5ヶ月が経ちました。
リリースを前提に現在開発予定のアプリに実装した機能のアウトプットになります。
「Deviseのユーザー登録と同時に別モデルにデータを保存する方法」です。

具体的なユースケースの例は、下記のような場合です。
・ユーザー登録と同時に銀行口座が開設される。
・ユーザーは1つの銀行口座しか持つことができない。
・銀行口座IDとユーザーIDは紐付く。
・登録時の口座残高の初期値はnullではなく0円。

ユーザー登録と同時に何か一つ、自動で生成されるモノ。を実装する際はお役に立てるかと思います。

:::note warn
※今回は、バリデーションについては触れません。
※今回は、アプリ作成・Devise導入・基本的なユーザー管理機能の説明は省きます。
:::

# 導入
ユーザー管理機能の実装が終わっている前提。
最低限、ユーザー新規登録とログインはできる状態でこちらをお読み下さい。

まず前提として、deviseは基本的にGemで動くものなので、通常のMVCの流れとは違います。
”ユーザー登録

元記事を表示

シンボルでよく間違える事…

◼️突然ですが、私はシンボルをハッシュ内でシンボルを書く際よく間違えることがあります。
それは : :point_left: の位置です。

普通はハッシュ内にシンボルを書く時、上の様な書き方が普通だ。

(https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/982443/a7154a07-8e48-134a-7e77-d36d2e4cb15b.png

だが、私は下の様な記述をたまにしてしまう:frowning2:

今後、この様なミスをなくすため少しでもいいからコードを書く様努力していきたいと思う。
宜しかった応援の方オネシャース!

今日の投稿は以上です。
wagaでした!

元記事を表示

パスワードの表示/非表示の切り替えボタンを作成

# パスワードの表示/非表示の切り替えボタンを作成する

## やりたいこと
簡易的なパスワードの表示ボタンを作成したい
HTMLのみに記述

## 概要
調べまくった結果、JavaScriptを使用しないと厳しい…
が、記述としてはあまり良くないかもしれないがHTMLに記述しても作成できる。
deviseのパスワードに追加して記述していく。

## 具体例
“`
<%= f.password_field :password, ... , id: "pass" ←追加(好きな名前で)
パスワードを表示する
“`
パスワードはtype=”password”からtype=”text”に変換させれば表示することができるので、onChangeを使用して変換させる。
その際、ById(‘この部分’)をパスワードのidと同じにしておく。

## 結果
![](http

元記事を表示

【Rails】いいね機能の作り方

プログラミングスクールの最終課題でオリジナルアプリを作成するにあたり、
いいね機能を実装したので、アウトプットしていきます。
Qiitaへの投稿に不慣れなため、稚拙な部分もありますがご容赦ください。

**前提条件**
・Rubyバージョン2.6.5
・Railsバージョン6.0.0
・「gem ‘devise’によるUserモデル」と「投稿に関するPostモデル」は作成済みとします。

# いいね機能作成の流れ

下記の6ステップに分けていいね機能を実装していきます。

①いいね機能を管理する**「Favoriteモデル」**を作成する。
②各モデルに**アソシエーション**を記述する。
③URIパターンに**「:post_id」を含めたルーティング**を設定する。
(どの投稿に紐付くいいねか分かるようにするため、postsコントローラーのルーティングに
 ネストさせる)
④favoritesコントローラーでアクションを定義する。
⑤Postモデルに**「ログイン中のユーザーがその投稿に対していいねをしているか」**
 を判断するメソッドを定義する。
⑥投稿詳細のビューファイルに**

元記事を表示

プログラミングスクールでの学習と今後の展望

1、私の色々
2、プログラミングを学ぼうとしたきっかけ
3、テックキャンプでの学習
4、転職活動と今後の展望

1、私の色々
・秋田県出身(1992年生まれ)
・大学では野球部に所属。法学部に在籍するも野球漬けの毎日で学業は置き去りに
・大学卒業後、ガス会社に入社する(2014年4月)
・プロ野球選手になる!という夢をもう一度追うべく、四国にあるプロ野球球団のトライアウトを受験(2014年10月)
・トライアウトに合格したので、会社を退職。もう一度プレーヤーとして奮起することに(2015年1月)
・2年間(2015,2016年)プレーしたものの、自身の実力に限界を感じ引退。
・2017年3月に球団からの紹介で都内の企業に入社。
・4年間、営業や販売業務に従事。2021年3月に退職。
・2021年7月~テックキャンプ105期生としてプログラミング学習をすることに←ここ急だねって思った:thinking:

2、プログラミングを学ぼうとしたきっかけ
端的に説明すると以下の3点です。
・今までやった事のない仕事をしたい!
・世の中に自分が出した結果、成果を残したい。より多くの人々の目に届

元記事を表示

【Rails】Google Mapの表示

#はじめに
Ruby on Rails で ユーザーが入力した住所から、経度と緯度を取得して、Google Map を表示する方法。

#開発環境
・Ruby: 2.6.6
・Rails: 5.2.6
・Windows10

#APIキーの取得
Google Map Platformにアクセスし、Google Mapを表示させるためのAPIキーを取得。
取得方法はこちら↓の記事を参考に。
https://qiita.com/tiara/items/4a1c98418917a0e74cbb

#アプリの作成
Ⅰ.Google Mapを表示させるための簡単なアプリを作成します。

“`
$rails new Map_application
“`
Ⅱ.Gemgfileにgeocoderを追加
今回、住所・緯度・経度のカラムを持つmodelを作成するが、ユーザーが住所を入力すれば緯度・経度が自動的に取得され、Google Mapが表示されるようにする。

“`ruby:Gemfile
gem ‘geocoder’
“`
“`
$bundle
“`
Ⅲ.modelの作成
名前

元記事を表示

【Ruby】2つの配列で、和集合・積集合・差集合を取得したい。

# 概要
Rubyの操作の学習として、「和集合・積集合・差集合」の取得方法をまとめました。

# 和集合(A∪B)
![和集合.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/594740/7698037c-916c-4145-e1b1-d02669a01b60.png)

2つの配列の和集合をとるには`Aeeay#|`メソッドを使用します。

“`ruby
# 和集合(A∪B)
array1 = [1,2,3]
array2 = [4,5,6]
array3 = [2,3,4]
array4 = [“A”,”B”,”C”]
array5 = [“B”,”B”,”C”,”D”]

array_result1 = array1 | array2 #=> [1, 2, 3, 4, 5, 6]
array_result2 = array1 | array3 #=> [1, 2, 3, 4]
array_result3 = array4 | array5 #=> [“A”, “B”, “C”, “D”]

p

元記事を表示

[Ruby] AtCoder過去問 C – Count Order

##はじめに
AtCoder過去問のC問題を解いてみました。
よろしくお願いします。

問題はこちらから確認してください↓

https://atcoder.jp/contests/abc150/tasks/abc150_c

##C – Count Order
とりあえず入力を受け取ります。

“`ruby
n = gets.to_i
p_ary = gets.split.map(&:to_i)
q_ary = gets.split.map(&:to_i)
“`

さて、どうしたもんかと、組み合わせの配列をどうやって作ろうかめちゃめちゃ悩みました。
しかし、しっかりrubyには便利なメソッドが準備されていました。
それがpermutationメソッドです。

配列の組み合わせを返してくれます。“`array.permutation(n).to_a“`という形で記述すると配列の中にそれぞれのパターンが配列として出来上がります。
例“`[[1, 2, 3], [1, 3, 2], [2, 1, 3]…]“`
こんな感じです。

引数に対象とする数を指定します。今回の場合

元記事を表示

【Ruby on Rails】頻出しそうなFormHelperをまとめる

#対象者

* form_with, form_forを使っている方へ

#目的

* FormHelperにどんな種類があるか把握して、引き出しを増やすこと

#実際の手順と実例
###1. 前提

form_withの基本構文は下記の通りです。

https://qiita.com/nao0725/items/e5685d4851d8329d9e73

###2. よく使用するFromHelper一覧

| 1 | 2 |
|:-:|:-:|
| check_box | チェックボックスタグを生成 |
| file_field | ファイルアップロード用のタグ生成 |
| hidden_field | 特定の属性にアクセスするための、隠されたinputタグを返す |
| label | フォームに属した名前(ラベル)を返す|
| password_field | パスワードのためのタグ生成 |
| radio_button | ラジオボタンをタグを生成|
| text_area|長文用テキストを生成|
| text_field | 短文用のテキ

元記事を表示

Ruby Kaigi Takeout 2021に参加した

#概要
[Ruby Kaigi Takeout 2021](https://rubykaigi.org/2021-takeout)に参加しました。
今回は、9月9日〜9月11日の三日間開催です。

配信内容はRubyKaigi 公式チャンネルにて現在閲覧することが可能です。
https://www.youtube.com/channel/UCBSg5zH-VFJ42BGQFk4VH2A

# PRK Firmware: Keyboard is Essentially Ruby / Hitoshi HASUMI
特に印象深い[こちらのセッション](https://youtu.be/5unMW_BAd4A)について感想を書きます。
セッションで言及されている DIYキーボードは実質Ruby という角谷さんのLTは[こちら](https

元記事を表示

RubyKaigi Takeout 2021 参加レポート

「RubyKaigi Takeout 2021」に初参加したので、そのレポートを簡単に書きました!
私の経歴ですが、Javaを5年近く経験した後、Ruby on Railsでの開発を1年半ほど経験、という流れです。

https://rubykaigi.org/2021-takeout/schedule#day1

# Day1

## TypeProf for IDE: Enrich Dev-Experience without Annotations

– RBS
– Rubyの型を定義するための公式言語
– TypeProf/Steep/Sorbet
– 静的型解析ツール
– TypeProfとはRubyコードを型レベルで実行する
– TypeProfの弱点としては解析に時間がかかる
– require先のライブラリも解析しに行くのが主な原因
– TypeProf for IDEは1秒以上かかる解析は打ち切るという割り切った設計にした
– TypeProfを高速化するにはgemのRBSを書く必要があ

元記事を表示

byebug ユーザ(staff)モデルのテスト作成のエラー

ユーザ(staff)モデルのテスト作成のエラー

学び:どうしてエラーなのかが全然わからない….byebugを使う

“`ruby:
Failures:

1) Staff バリテーション name,email値が設定されていれば、OK
Failure/Error: expect(@staff.valid?).to eq(true)

expected: true
got: false

(compared using ==)

Diff:
@@ -1 +1 @@
-true
+false

# ./spec/models/staff_spec.rb:15:in `block (3 levels) in

Finished in 0.38805 seconds (files took 2.01 seconds to load)
4 exa

元記事を表示

Paiza スキルチェックで必要な基礎知識をまとめてみた

#記事内容
Rubyの基礎を学ぶため、以前から気になっていたPaizaでRuby入門を学習。
その後、学んだ知識を試すべくスキルチェック問題に挑戦したときに感じた最低限必要な知識をまとめてみました!

#前提
言語:Ruby

##標準入力・出力について
まず最初に立ちはだかる**標準入力**についてご説明します。

**標準入力**とは、シンプルに言うと`値を受け取る`ことです。
**標準出力**とは、`受け取った値を画面に出力する`ことでです。

**ruby**では`getsメソッド`を使用することで、入力された要素を受け取ることができます。

“`ruby
foo # 入力された要素

line = gets # 入力された要素を受け取り、line変数に格納
puts line

出力結果
foo
“`

上記のプログラムでは、入力された要素をgetsメソッドで受け取り、受け取った要素をputsメソッドで出力しています。

**スキルチェック**では**予め入力されている要素**を`getsメソッド`で受け取っていく形になり、その要素をもとに問題を解ていきます。

また、

元記事を表示

Railsのroutesでネストさせる3つの方法

[1.はじめに](#1-はじめに)
[2.Railsのroutesにおける、namespace, scope, module](#2-内容い)
[3.まとめ](#3-内容ろ)

#1. はじめに
stack overflowで親切な人がネストの仕方を教えてくれたのでまとめます。
namespace以外でネストさせる方法を知らなかったので勉強になりました。
#2. Railsのroutesにおける、namespace, scope, module
**namespace**

“`Ruby
Rails.application.routes.draw do
namespace :admin do
resources :movies
end
end

“`
URLを“`admin/movies“`に変更したい。
同じくファイル構成も“`admin/moviesにしたい“`
(よくaoiモードでやるやつ“`api/v1/movies“`)

**scope**

“`Ruby
Rails.application.routes.draw do
scope

元記事を表示

【Ruby】RubyでCSV形式のデータを読みこみや書きこみをしたい時

# 概要
Rubyでcsvファイルを読み込んで新たに書き出せるようにしたかった。
Gemを利用しても実装できるが、あえてRubyのみで実装した。

# 手順
## 1.テストデータの取得
テスト用に郵便番号データの「東京」のcsvファイルでテストします。

### ◇郵便番号データ
https://www.post.japanpost.jp/zipcode/download.html

## 2.使用するライブラリ
CSV形式ファイルを使うには、標準ライブラリcsvを利用するのが便利です。
◇csvライブラリ
https://docs.ruby-lang.org/ja/latest/library/csv.html

今回、使用する`13TOKYO.csv`はShift-JISでエンコードされているため、その後の処理で不都合があるかもしれないので、`Shift-JIS`から`UTF-8`に変更します。
◇kconvライブラリ
https://docs.ruby-lang.org/ja/latest/library/kconv.html

## csvファイルを読み込んで別のcsvファイ

元記事を表示

rails6で、Stripe Connectでプラットフォームでオンライン決済の導入方法

###今回初めて投稿することになったきっかけ
stripeに日本語の情報が少なかったので、少しでも誰かの役に立てばと思いシェアさせていただきます。
間違っている箇所・改良点などあれば教えていただければ幸いです。

###Stripeとは

オンライン決済(今回はクレカ)を提供しているグローバル企業

インターネット向け決済インフラ
スタートアップから大規模企業まで、あらゆる規模の多数の企業が Stripe ソフトウェアと API を使用して支払いを受け付け、入金し、オンラインでビジネスを管理しています。
Stripe はサンフランシスコとダブリンに本社を置き、ロンドン、パリ、シンガポール、東京などにオフィスを開設しています。
[Stripe公式サイト(日本語)](https://stripe.com/jp)

####サポート
日本語のサポートは、メール(24h以内の返信)のみ。現在電話サポートはなし
英語でならチャットサポートがある
※[Stripe公式API](https://stripe.com/docs

元記事を表示

[Ruby] AtCoder過去問 B – Trained?

##はじめに
AtCoderの過去問B問題をRubyで解いてみました。
よろしくお願いします。

問題はこちらから確認してください↓

https://atcoder.jp/contests/abc065/custom_test

##B – Trained?
問題のシチュエーションに理解が苦しみましたが、、、w

とりあえず入力を受け取ります。

“`ruby
n = gets.to_i
a = readlines.map(&:to_i)
“`

続いて、答えとなる変数countと、光っているボタンを表す変数on_btnを用意します(変数の名前をつけるのが本当に苦手です)

はじめに光っているボタンは必ずボタン1なのでon_btnには1を代入しておきます

“`ruby
n = gets.to_i
a = readlines.map(&:to_i)

on_btn = 1
count = 0
“`

on_btnが2になったら処理を終了させるwhile文を書きます。
実際に配列aで光っているボタンを表すときは“`a[on_btn-1]“`となります。
添字(インデックス数

元記事を表示

OTHERカテゴリの最新記事