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

Ruby関連のことを調べてみた2021年08月08日
目次

rails6で超シンプルなCRUDの実装

# はじめに
railsの環境構築で苦戦しどうにかこうにかrailsのトップページが表示できた後、達成感と同時に「で、どうやってWebアプリ作ればいいの?」という気持ちになりましたので、CRUD実装までをまとめました。

# 前提
本記事ではrails環境の構築は取り上げません。
database.ymlの設定なども済んでいる状態で進めます。

# 環境

“`zsh

$ sw_vers
ProductName: macOS
ProductVersion: 11.4
BuildVersion: 20F71
$ ruby -v
ruby 3.0.1p64 (2021-04-05 revision 0fb782ee38) [x86_64-darwin20]
$ rails -v
Rails 6.1.4
$ rbenv -v
rbenv 1.1.2
$ ruby-build –version
ruby-build 20210611
$ mysql –version
mysql Ver 8.0.25 for macos11.3 on x86_64 (Homebrew)

“`

元記事を表示

【Mac】Ruby、Railsの環境構築について

# 概要

この記事では、MacでRuby、Railsを使用してアプリ開発をする度に必要となる環境構築の流れについて説明します。
なお、「Homebrew」と「rbenv」のインストールについては、アプリ開発をする度に必要となる作業ではないため本記事での説明は省略し、すでに「Homebrew」と「rbenv」のインストールが完了していることを前提に環境構築の流れを説明します。

# Ruby, Railsのバージョン

今回構築する環境は、以下のバージョンです。

– Ruby 2.6.6
– Rails 6.0.3.6

# Rubyの環境構築

### 「rbenv(アールビー・エンブ)」とは

複数のバージョンのRubyを管理することができ、簡単に切り替えることができるツールです。
例えば、1台のPCで複数のRailsアプリを作成する場合、アプリごとに使用するRubyのバージョンが異なることがあります。そういった場合に、rbenvを使用することでRubyのバージョンを簡単に切り替えることができます。

### 1. 現在インストールされているRubyの一覧を確認する

まず、現在

元記事を表示

【チャットボット風】Interactiveな対話形式Slack Botを作ってみる

![Untitled Diagram(20).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688854/31a747b2-89c5-2b76-9182-a00635810658.png)

## 背景

業務効率化のため、何か知りたい事があった場合にSlackのスラッシュコマンドで呼び出せるチャットボット的な存在が欲しいと思いました。

たとえば、組織の仕組みや開発・運用ノウハウといった情報をそこにまとめておき、質問に対して適宜レスポンスをしてくれるようにしておけば、新入社員さんなどに「もし困ったら一旦このSlack Botに聞いてみてくださいね」といった感じである程度の部分は任せてしまう事ができるため、教育コストといった面でも相当楽になるんじゃないかなと。

世は大リモートワーク時代。業務のほとんどがオンラインで行われるようになった事で、「隣に座る同僚に対してラフに質問を投げかける」といったオフラインならではの行為が難しくなってしまいました。

どんな些細な疑問であってもわざわざかしこまった質問メッ

元記事を表示

【Ruby on Rails】Rubyで売上単価の計算結果を表示しよう

#対象者

* 売上の計算結果を表示したい方 
* どこに計算式をかけばいいのかわからない方

#目的

* 計算結果をViewに表示させること

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

* 商品の注文の合計額を表示します
* モデルはorder(注文)
* 注文詳細ページに計算結果を表示します

###2.モデルに記載

注文商品の計算結果を表示します。

““order.rb
def sum_of_order_price
total_price + shipping
end
““`
sum_of_order_priceで計算の合計額を定義し、
中でtotal_priceとshippingカラムを足し算します。
どちらのカラムもOrderモデルのカラムです。

かけ算にしたい場合は *
割り算にしたい場合は %
引き算にしたい場合は -

をモデル内に記載すればOK!

###3.Viewでの表示設定

““order/show.htnl.erb

ご請求額 <%= @order.sum_of_order_price %>
元記事を表示

アプリの左上に表示されるmsという表示について

# rack-mini-profilerについて
railsを起動したときに画面の左上にmsという表示がされることがあるのですが、これは
`rack-mini-profiler`というgemがインストールされているから表示されているということがわかりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1403010/3d7be657-f91d-3311-573a-8132a7ecf159.png)
このmsというのはサーバー側の処理の合計時間を示していて、クリックするとその内訳を見ることができます。サーバー側だけではなく、クライアント側の計測やsqlの処理なども確認することができます。
さて、これがあるとアプリのデザインがわかりにくいので非表示にしたいと思います。

“`ruby:Gemfile
group :development do
# Access an interactive console on exception pages or by calling ‘co

元記事を表示

時刻の表示の変更

こんにちは
今日は時刻の表示の変更について
メモしたいなあと思います。

# 最初にやったこと

![スクリーンショット 2021-08-07 11.24.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1435543/59ceb52c-9030-f1f8-f2bd-56001b897d8d.png)

上の画像が実装前の表示です。

config/application.rb

“`rb
config.i18n.default_locale = :ja
config.time_zone = ‘Tokyo’
“`

config/locales/ja.yml

“`rb
ja:
time:
formats:
default: “%Y/%m/%d %H:%M:%S”
“`

“`rb
<%= l.event.event_date %>
“`

これを実行すると

![スクリーンショット 2021-08-07 16.58.25.png](https://qii

元記事を表示

【Ruby】SeleniumでPDFをダウンロードする

RubyつかってPDFを自動でダウンロードしたい。
自動でやるにはSeleniumというライブラリをつかう。

つかってみて、ExcelやCSV、HTMLから直どりでデータを取得することができた。

しかし、PDFだけはChromeがViewrモードになって、いっこうにダウンロードできない…。

立ち上げるブラウザのoptionの「always_open_pdf_externally」をtrueにして、
Viewerモードでなく、常にダウンロードできるようにしているはずなのに…!

それが解決できたので、記事として残す。

こんな設定でやってた。

“`ruby:
@driver = Selenium::WebDriver.for :chrome

prefs = {
prompt_for_download: false,
default_directory: File.absolute_path(“./dl”)
}

plugins_prefs = {
always_open_pdf_externally: true
}

options = Selenium::W

元記事を表示

[Ruby on rails]グループ作成機能③グループ管理者/作成者の表示 class_nameオプション

初めに

①②の記事で、グループ作成、参加、退会を実装してきました。
今回その続きです。
:sunny:注意①②と③④で作ってるアプリが違います。
①②は本の投稿(bookモデル)サイトでの、グループ作成機能。
③④は記事の投稿(postモデル)サイトでの、グループ作成機能です。
①②と③④でGroupのカラムが若干違います。
グループ名(name)、
グループ紹介(introduction)
オーナーid(owner_id)は共通ですが、
①②では、t.string :image_idがあるのに対し、
③④では、image_idが無く、t.string :status(参加条件)を
付け足しています。

行う作業自体は変わりませんが、少しややこしいかもしれません…

やりたいこと

以下のように、グループ管理者を表示させたいです。
今回の場合は、山田たお さんです。

![スクリーンショット 2021-08-03 22.41.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaw

元記事を表示

【Ruby】【Java】特定の文字列を数える

 新しく「Java」を勉強するにあたり、これまで「Ruby」を勉強する過程で作っていたプログラムを「Java」で作ってみることにしました。

 今回作るプログラムはこちらです。

“`ruby
def count_hi(str)
puts str.scan(“hi”).length
end

count_hi(‘abc hi ho’)
count_hi(‘ABChi hi’)
count_hi(‘hihi’)
“`

 「Ruby」で作っていた 「hi」という文字列を数えるプログラムです。出力結果は以下のようになります。

“`
1
2
2
“`

##Javaで作ると
 「Java」で作るとこのようになりました。初めに自分で作ったコードは無駄が多かったため、下記の記事を参考にして書き直しました。

 [文字列の中から特定の文字を数える](https://teratail.com/questions/210227)

– メソッドを定義したクラス

“`java
package example;

public class Count {

void countHi

元記事を表示

Heroku本番環境でのエラー

# はじめに
前回の記事に続き
またHeroku本番環境でエラーが出たので、記録します。

# エラー内容
いいね機能追加し、Herokuに入ろうとすると以下の表示

![スクリーンショット 2021-08-06 18.11.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1699260/78a4af5f-3d0d-46e0-93f9-c09c1dc5eacf.png)

前回と同様にまずは`heroku logs –tail –app <<アプリケーション名>>`でログ確認すると

2021-08-07T03:26:44.401836+00:00 heroku[router]: at=info method=GET path=”/”
host=bouldering-395.herokuapp.com request_id=c039e379-8060-42fe-ae08-
77a73b141372 fwd=”180.147.68.165″ dyno=web.1 con

元記事を表示

新規登録画面実装③エラー解消:デバイスのエラーメッセージが出ない

はじめに

新規登録画面に、別モデルのdepartmentの選択を追加したところ、
deviseのエラーメッセージが出なくなってしまいました:frowning2:
その実装は②でやっています。

https://qiita.com/ki_87/items/d62fe7dd0c94b491a2fd

パスワードを空で送ると、、
NoMethodErrorが出てくる。あーーーーーー!

![スクリーンショット 2021-08-07 11.05.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633266/a1ecb86d-1604-4287-673f-ccc12e2de240.png)
![スクリーンショット 2021-08-07 11.05.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633266/ba8a4249-7374-e2cf-8a77-267a78d194b6.png)

元記事を表示

Rubyで優先度つきキューを実装

競技プログラミングをやっていて、きちんと準備しておかないとキツいと感じたので。

Rubyでの優先度つきキューは、検索すればたくさんの人の実装が見つかるので自作する必要は無いのだが、練習も兼ねて自分ならどう実装するか考えてみることにした。

## 欲しい機能
要素の追加 `#<<` と先頭要素の削除 `#shift` が O(log N) で実行できること。 あとは O(1) で実行できる簡単で非破壊的な処理 `#first`, `#size`, `#empty?` も念のため入れておく。(メソッド名は `Array` に合わせたもの) --- 加えて、 `queue << [priority, value]` のように **`Array` のデータを入れる**ことがあるため、それに対応したい。 - キューに `Array` を入れても動作すること - `#<=>` はあるが `Comparable` ではない[^array-comp]ため、多くの比較演算子が使えない
– 昇順・降順など、優先度の定義を好きに決められること
– 些細な違いのために一々コードを書き換えたくない

元記事を表示

[Rails]deviseを使ったTwitter認証でログイン

今回は、Twitter APIを利用して、deviseのログインでTwitterアカウントでログインできるようにしていきます。

APIを使うことで、かんたんにTwitterと連携ができます。

では、さっそくいきましょう!

#完成イメージ

完成イメージはこちらです
TwitterアカウントでログインをクリックするとTwitterアカウントでログインできます。

![スクリーンショット 2021-08-06 11.19.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1554142/34458491-5e23-de98-43a4-a5d8f8a3e88e.png)

動作確認したい方は、ぼくの[ポートフォリオ](https://oogiri-legendroad.com/users/sign_in)に実装してますので、確認してみてください。

#開発環境

> ruby 2.6.3
> Rails 5.2.6

#前提

今回のTwitterでのログインは、deviseを使用しますので、devi

元記事を表示

【Ruby on Rails】NO FILEと表示されているマイグレーションファイルを削除する方法

#対象者

* NO FILEと表示されたマイグレーションファイルを削除したい方
* modelを削除したけど、マイグレーションファイルだけ残ってしまた方

#目的

* up状態のマイグレーションファイルをdownに戻して削除すること

#実際の手順と実例
###1.状況確認

“`
$ rails db:migration:status
“`

上記を実行すると下記の表示が出ます

““`

Status Migration ID Migration Name
————————————————–
up 20210915023701 Create articles
up 20210915065320 ********** NO FILE **********
down 20210915080932 Devise create users
““`

###2.ダミーファイル作成

真ん中のup状態のダミーファイルを作成します。
Migration I

元記事を表示

CSVファイルのみを取り込むボタンをrailsで作る

CSVファイルの取り込みはできたのですが、CSVファイルのみを指定する挙動のコードの部分で躓いてしまったため、記事に残したいと思います。

まずはviewです。ここではファイルのimportに関するボタンを作成しています。

“`erb
index.html.erb

<%= form_tag import_users_path(format: :csv), multipart: true do %>
<%= file_field_tag :file, class: "btn btn-default" %>
<%= submit_tag "CSVをインポート", class: "btn btn-md btn-primary btn-width" %>
<% end %>

“`

次にusers_controllerに次の記述を行いました。
ここでファイルの末尾に”.csv”と入っているファイルとそれ以外の挙動を書きます。

`

元記事を表示

Cửa hàng bán lẻ điện thoại chính hãng uy tín – PAD Store

https://padstore.vn/
![1iphone-11-pro-max.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660887/24f0e569-96ed-b6b9-0cf9-d7be56e18a2f.jpeg)

元記事を表示

Rspecのchangeマッチャーを使う時、初期状態の設定をsubjectでやるのってありですか?

# はじめに

普段はC++とかTypeScriptのように型がある言語が好きな私。

最近業務でRubyとRailsとMySQLとRspecとかいう全部わからないし、しかもRubyって型がない。そんなものを使うことになって苦戦しつつも勉強して仕事しています、たのしい。

# 問題提起

突然ですが下のRspecのコードを見てみて下さい(疑似コード)

“`ruby
# frozen_string_literal: true

require ‘spec_helper’

describe “test” do
def put_value(v)
# なにかside effectを起こす
end

subject do
put_value “before”
lambda do
put_value “after”
end
end

it { is_expected.to change { some_value }.from(“before”).to(“after”) }
end
“`

意図としては、`subject`の中で

元記事を表示

HerokuでWe’re sorry, but something went wrong.とエラー出た場合の対処法

#  はじめに
Herokuに追加機能を実装した後、サイトを開くと下記のエラー表示が出たので
その時の対処法を記録します。

![スクリーンショット 2021-08-06 18.11.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1699260/18eb933d-a0be-490f-efef-b1d3fe5827e7.png)

これだけでは何のエラーが出ているのか分からないので、原因を探るためにエラーログを確認します。

## エラーログの確認
まずはアプリケーションの内容を確認するために
ターミナルで以下のコマンド入力

$ heroku apps:info

=== sample-123456
Addons: cleardb:ignite
Auto Cert Mgmt: false
Dynos: web: 1
Git URL: https://git.heroku.com/sample-12345

元記事を表示

PV数実装時のsession_hashでのエラー【impressionist】【Ruby on Rails】

# {TypeError の改善方法}
![スクリーンショット 2021-08-06 18.41.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1730386/e5e433cb-c953-3810-2834-72fad49d416a.png)

## はじめに
impressionist gemを使用して、PV数の表示を実装しました。
その際に、エラーにぶつかったため共有します。

## エラー内容
![スクリーンショット 2021-08-06 18.42.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1730386/346441c8-cba3-36e1-89c4-268b4ade04cc.png)

ここのuniqueにて、session_hashを値として、閲覧数をカウントすると規定しました。
ですが、サーバーを立ち上げてると、typeErrorが出現しました。
## 原因
調べてみると、sessio

元記事を表示

MultiParameterAssignmentErrorsは複数の属性でエラーが発生した際に出力される

[API dock](https://apidock.com/rails/ActiveRecord/MultiparameterAssignmentErrors)や[公式Github](https://github.com/rails/rails/blob/main/activerecord/lib/active_record/errors.rb#L364)に書いてあることを訳すとまんまタイトルになる

`いやもう全くもって(ハァ・・・)おっしゃる通りです・・・!!!(わーわー`

Rails6.1.4にて検証

# 経緯
対象となるModelは以下の通り

“`rb
class TestModel < ActiveRecord::Base validates_datetime :column_datetime validates_date :column_date end ``` RSpecのエラー調査をしている時にこんなソースを見た ```rb it "short params is nil" do expect(TestModel.new("colum

元記事を表示

OTHERカテゴリの最新記事