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

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

【Ruby】二桁の整数問題

二桁以上の整数を入力すると、十の位と一の位の数字の足し算、十の位と一の位の数字の掛け算をそれぞれ行い、最後に2つの結果を足し合わせて出力するプログラムをRubyで作成する。

という問題で私の最初の回答がこちら。

“`
puts “二桁の整数を入力してください”
sum = gets.to_i

if sum >= 10
num1 = sum / 10 % 10
num2 = sum % 10
total = (num1 + num2) + (num1 * num2)
puts total
end
“`

実行して数値を入力すると確かに要件通り動くように思われますが…
記述のスマートさがありません。

よって下記のようにするといいみたいです。

“`
def addition(a, b)
a + b
end

def multiplication(a,b)
a * b
end

def slice_num(num)
tens_place = (num / 10) % 10
ones_place = num % 10
return tens

元記事を表示

`require’: cannot load such file — rexml/document (LoadError)の対処法

メイラーの機能をつけるためrails g mailerを実行して
その後の工程を進めていき
rails s
サーバー起動しようと思い実行すると
なんだか果てしないエラー文がお出まし^^;

***ターミナルエラー文一部抜粋***

“`sh
#~省略~
`require’:cannot load such file — rexml/document (LoadError)

#~省略~

“`
長文を読み解くと多分ここが原因かな…?と

その後もいろいろrails コマンドを試しても
全てrailsコマンドは死亡(全部エラー吐く

これでエラーが出るようになるという事は
毎回追加しないといけないgemっぽいのでメモ

***参考サイト***
[記事](https://stackoverflow.com/questions/65479863/rails-6-1-ruby-3-0-0-tests-error-as-they-cannot-load-rexml)
[gemサイト](https://rubygems.org/gems/rexml)

Gemファイルに追記
>g

元記事を表示

ruby on rails Windows10 64ビットインストール Railsサーバー起動までlocalhost:3000

ruby on railsの設定方法について色々ぐぐったりしたけどほとんど間違っている内容だったので、正しいやり方を書きます。

rubyのダウンロード
https://rubyinstaller.org/downloads/
![Downloads.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/987832/27620a27-9adc-1ccf-f140-f0f5e0275483.png)

# インストール#
「Ruby+Devkit 2.7.4-1 (x64)」 です。
最新版をインストールするのは辞めました。
最新版が良いという方は最新版でやってみると良いかもしれません。

WITH DEVKITを選ぶ理由はツールがまとめられてるからです。
自分が使ってるWindows10が32ビットか64ビット数を間違えないように注意します。
自分が使っているWindowsのビット数の確認方法は
Windowsのシステムからビット数を確認できます。

確認方法
コントロール パネル\すべてのコントロール

元記事を表示

[テスト]FactoryBotにimageを記述する

# はじめに
本記事は、テストコードに関するもので、
FactoryBotにimageを記述する方法(factoriesディレクトリ)を記述します。

本日、何時間も悩んだものになるので、
短いですが、アウトプットしたいと思います。

単体テストコードに関する記事は、以下も参照してください。
内容的には、ターミナルにて以下を記述後のこととなっております。

“`
% rails g rspec:model テーブル名
“`

https://qiita.com/mkato1013/items/5236f16b03854b0cec0e

# FactoryBotにActiveStorageの記述をする
## 例
早速ですが、例文です。

“`ruby
FactoryBot.define do
factory :tweet do
content {Faker::Lorem.sentence}
association :user

after(:build) do |tweet|
tweet.image.attach(io: File.open(

元記事を表示

[Ruby] AtCoder 過去問 B – 200th ABC-200

##はじめに
AtCoderのB問題 200th ABC-200を解いてみました。
他のやり方やもっと容量の良いやり方などあれば教えてください!

問題はこちらからご確認ください!

https://atcoder.jp/contests/abc200/tasks/abc200_b

それではよろしくお願いします。

##B – 200th ABC-200

まず入力の受け取りです。

“`ruby
n, k = gets.split(‘ ‘).map(&:to_i)
“`

まず、問題文にそって条件分岐をしていきます。
Nが200で割り切れたら(200の倍数であれば)、200で割ってNに代入します。

“`ruby
n, k = gets.split(‘ ‘).map(&:to_i)

if n % 200 == 0
n /= 200
“`

続いて割り切れなかった場合、Nの後ろに200を付け足して、Nに代入します。
ここで注意したいのは、これは数値の計算ではないということです。ただ単にNの後ろにNを付け足すだけです。
例えばNが1だったら1200になるのです。

要する

元記事を表示

【Rails】Refinery を導入する時に発生したエラー対応

# はじめに

Railsエンジン“`Refinery“`というCMSが便利そうだと思ったので、すぐ使えるように試しに使ってみました。

その時に発生したエラーの解消方法を載せてみましたので、お困りの方は一読してみてください。

## エラー1: LoadError: incompatible library version

### 実行コマンド

“`bash
$ rails new rickrockstar -m https://www.refinerycms.com/t/edge
“`

### エラー内容

“`bash
rake aborted!
LoadError: incompatible library version – /Users/user/.rbenv/gems/2.6.0/gems/ffi-1.15.3/lib/ffi_c.bundle
“`

### 対応策

“`ffi“`のバージョンが不整合なため、“`gem install“`を実行する。

“`bash
$ gem install ffi
“`

## エラー2

元記事を表示

[Ruby on rails]記事の下書き保存実装 enum使用Ver. とboolean使用Ver. 2パターンやってみた

やりたいこと

記事の下書き保存をできるようにしたい。

今回はenumを使用した記事の下書き保存と、
enum使用せずBooleanのみを使用した場合の実装2パターンを行います。

enumを使えば、公開・下書き以外にも、非公開とか色々追加できます。
一方、Booleanは trueかfalseなので、公開か下書きの2択です。
実装自体は、Booleanの方が、ほんの少しだけ簡単だと思います。

enum使用の場合、こうなる

![スクリーンショット 2021-08-08 15.34.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633266/2cb5d514-b8ce-b074-b046-59359dcba708.png)

Booleanのみの場合、こうなる

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

元記事を表示

【2021年版】Herokuデプロイ時に “Refile.secret_key was not set” というエラーが出た場合の対処方法

## はじめに

[refile](https://rubygems.org/gems/refile) gemを使っているRailsアプリケーションをHerokuにデプロイすると、以下のようなエラー画面(”We’re sorry, but something went wrong.”)が出る場合があります。

![Screen Shot 2021-08-08 at 13.39.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7465/a9929bf1-2c40-7d5f-bd32-2a5bb3428b6b.png)

そしてログを確認すると、以下のようなエラーメッセージが表示されていることがあります。

“`
Completed 500 Internal Server Error in 177ms (ActiveRecord: 30.7ms)

ActionView::Template::Error (Refile.secret_key was not set.

Please add the

元記事を表示

[Ruby on rails]いいねの一覧表示 member doとcollection doの違い・plunkについて

初めに

以前、いいね機能&非同期通信を行いました。
今回いいねの一覧を作成したいと思います。

前回の記事はこちらから。

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

調べてみると色々とやり方があるみたいでした。

今回は、ルーティングでのcollectionやmember、plunkについても学べました!

ルーティング作成

“`perl:routes.rb

resources :users, only: [:show,:index,:edit,:update] do
member do
get :favorites
end
end
“`

どういうルーティングにしたいかというと、
ユーザーのマイページから、そのユーザーのお気に入りしてる記事に飛びたいので、
users/1/favorites というルーティングにしたい。
となると“`member do“`を使用します。

member do / collectio

元記事を表示

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)

元記事を表示

OTHERカテゴリの最新記事