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

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

値に名前をつけて平均点を求める

基礎からまた復習するため、メモ。

# 問題
国語が80点、英語が50点、数学が70点の場合のテストの平均点をターミナルに出力しろという時。

# 回答
“`practise.rb
japanese_score = 80
english_score = 50
math_score = 70

average = (japanese_score + english_score + math_score) / 3

puts “3教科の平均点は、#{average}点です。”
“`

各教科の変数に点数の値をそれぞれ代入し、今度は各教科の平均を求めた計算結果をaverageという変数に代入。
ターミナルに出力する際は文字列と数値の組み合わせだから式展開で記述しとく。

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlのデバッガ(デバッグ)の比較

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

Python,Ruby,PHP,Java,JavaScript,Perlのデバッガ(デバッグ)の比較

# Python

https://qiita.com/kaitolucifer/items/dc58efebd72d72a8feb2

# Ruby

https://qiita.com/port-development/items/5ea6448eb2b45c70ef65

https://qiita.com/suketa/items/52c60d79332c9a24f973

# PHP

https://qiita.com/ryouya3948/items/0055c1935b7bd62ba3b9

# Java

https://qiita.com/gatchan03/items/3c43b674e2b7c4b5c5cb

# JavaScript

https://qiita.com/a_

元記事を表示

Dateクラスで日時の取得

## 日付に関わる処理に使えるのでメモ

### Dateクラスとは
Rubyの標準ライブラリの機能で日付を扱うためのクラスとして用意されている。
使うためにはまず下記の記述をする
“`
require “date”
“`
todayメソッドを使えば今日の日付を取得出来る
“`
Date.today
“`

他にもたくさんのメソッドがある
“`
today = Date.today
today.year # 作成したDateオブジェクトから年を取得
today.mon # 作成したDateオブジェクトから月を取得
today.mday # 作成したDateオブジェクトから日を取得
today.wday # 作成したDateオブジェクトから曜日を0(日曜日)から6(土曜日)の整数で取得
“`

wdayメソッドは曜日ごとに処理が変わるようなコードに使える
“`
day = Date.today.wday
days = [“日曜日”, “月曜日”, “火曜日”, “水曜日”, “木曜日”, “金曜日”, “土曜日”]
if wday == 5
puts “今日は#{days

元記事を表示

FactoryBotの導入と使い方の基本 [RSpec]

FactoryBotの使い方や導入方法をメモしておきます。
# FactoryBotを使うには
### 1, gemのインストール
“`
gem “factory_bot_rails”
“`
bundle installを実行する。
### 2, ジェネレートする
“`
rails g factory_bot:model モデル名
“`
`spec/factories`というディレクトリが生成される。その中に`モデル名s.rb`というファイルが生成される。このファイルにテストデータを作成していく。
# FactoryBotの使い方(例としてUserモデルを扱う)
### サンプルデータの作成
“`ruby
FactoryBot.define do
#この中に書いていく
factory :user do
first_name { “aaa” }
last_name { “aaa” }
email { “aaa@example.com” }
password { “password” }
end
end
“`
### サンプルデータを呼び出す
“`

元記事を表示

ActionController::RoutingErrorの凡ミス

# ログイン機能のつけている最中に。
今回は、ログイン機能を実装しようとしたところ、ログインボタンを押しても、画面も動かず、ターミナルにしれっとエラーが出てくるだけで、意外と時間を食ってしまいました。

## 読まずに進めるのは危険
エラーが出てしまうと、どうしても拒否反応が出てしまって、読む気にならない時ありますよね。私もそうでしたし、たまにそうです。
しかしながら、エラーが出るということは、後で大きなエラーになる前に気づけたということなので、ポジティブに行きましょう!笑

### ソースコード
“`ruby:config/routes.rb
Rails.application.routes.draw do
get ‘/login’, to: “sessions#new”
post “/login”, to: “session#create”
namespace :admin do
resources :masters
end

get ‘master/index’
root to: ‘top#index’
resources :users

e

元記事を表示

mimemagicのbundle installに手間取った件

## 起きたこと
しばらく昔に触っていたローカルでそのまま動かしていたRuby on Railsプロジェクトを久々に動かそうと`bundle install`したら、以下のエラーが。

“`terminal
Gem files will remain installed in /Users/hoge/projects/hogehoge/vendor/bundle/ruby/2.7.0/gems/mimemagic-0.3.9 for inspection.
Results logged to /Users/hoge/projects/GitHub/hogehoge/vendor/bundle/ruby/2.7.0/extensions/x86_64-darwin-21/2.7.0/mimemagic-0.3.9/gem_make.out

An error occurred while installing mimemagic (0.3.9), and Bundler cannot continue.
Make sure that `gem install mimemagic -v

元記事を表示

【初心者向け】moduleの使い分け

# 執筆経緯
moduleは色々な使い方ができるのは知っていたのですが具体的にどうやって使えばいいのかを
勉強していて気付いたことを共有したいと思い執筆に至りました。

# 対象の読者
– ruby初心者の方
– moduleの使い方がわからない方

上記の方たちに向けて記事を書いていこうと思います!

# moduleの使い方その1
moduleは色々な使い方がありますがまず紹介するのは名前空間としての使い方です!

“`ruby:
class OtukaTakashi
def initialize(from,age)
@from = from
@age = age
end
end

class OtukaTakashi
def initialize(job,talent)
@job = job
@talent = talent
end
end
“`
上記の様に別々に定義されて使い方も異なるclassがあります。
それぞれ違うところで1個のclassのみが使われている内はいいですがある日一緒に使うことになったら
どうやって区別すれば

元記事を表示

randとshuffleメソッドを使って運勢を表示するプログラムを作る

問題
誕生日を入力すると、今日の運勢を表示してくれるプログラムを作る。
占い結果については、以下のアルゴリズムにて判定する。
必ず、メソッドを作成しそれを呼び出すように記述。

・引数として誕生日の数字を受け取る(例:4月3日なら403、11月15日なら1115と入力)
・誕生日の数字に、乱数で生成された0 ~ 9の数字のいずれかを掛け算し、その後4で割った時の余りを算出
・シャッフルした占い結果を格納した配列から、上記の数値の順番の値を取り出す
 [“凶”,”中吉”,”吉”, “大吉”]

自分の答え
“`ruby
def divination(birthday)
`num = rand(10)`
calc = birthday*num%4
results=[“凶”,”中吉”,”吉”, “大吉”].shuffle
puts results(calc)
end

birthday=gets.to_i
divination(birth_day)
“`
模範解答
“`ruby
def result_of_uranai(birthday)
results = [“凶”,

元記事を表示

学生4人でチーム開発を行ってみる!

# はじめに
某企業のインターンで4人チーム開発を行い、約2週間でしたがとても有意義な経験をさせていただきました。
せっかく開発力のあるメンバーと出会えたのを、この機会だけで終わらすのは勿体ないと思い、この学生4人で何か作ろうということで、その過程を記録していこうと思います。
初めての記事作成ということで、優しく見守ってくれるとありがたいです。

# 私のことを少し紹介
某大学の法学部で法律を勉強中。ド文系(笑)
縁あってIT企業のインターン、アルバイトを通して、Web開発を学んでいます。
現在は、自社開発志望で就活をしています。
趣味は、映画、アニメ、漫画、憲法、プログラミングです。

# 第一回開発会議にて

### まずはアイディア出し
– 文字ランダム生成アプリ
– 勤怠管理アプリ
– シフト管理アプリ
– プログラミング書籍情報サイト
– お年寄り特化アプリ
– ToDoリスト
– 時間割アプリ
– カレンダーアプリ
– 文字数制限ブログ
– タイピングゲーム
– アップローダー

### Webサイトにするのか、アプリにするのか
ひとまず、チームとして何かを作るということを

元記事を表示

【Rails チュートリアル】AWS Cloud9でRails Serverが起動できないときの対処法【個人的なメモ】

# やりたいこと

・AWS Cloud9で「Rails Server」を起動したい

# エラー内容

ターミナルでRails Serverを実行したが下記のエラーが出てサーバーが起動しなかった。

“`ruby
Cannot render console from 000.000.00.000! Allowed networks: 127.0.0.0/127.255.255.255, ::1
“`
※「000.000.00.000」はIPアドレス

# 調査

・「Rills Cannot render console from」で検索した

・config/environments/development.rb に下記を追加した

“`ruby
Rails.application.configure do

config.web_console.permissions = ‘000.000.00.000’

end
“`
※「000.000.00.000」はIPアドレスなのでターミナルのエラー文で出たアドレスをコピーする

結果として「Cannot render con

元記事を表示

Sinatra環境で簡易ログイン機能を実装

# はじめに
掲示板を作成する中でログイン機能を実装する必要がある場合があるので、初心者でも理解しやすい簡易的なログイン機能の作り方をまとめることにした。

# 開発の概要
アカウント作成時にusersテーブルにログインIDとパスワードを保存し、ログイン時に一致するものがあればログイン成功とする。ログイン情報はCookieに保存し、ページを切り替えてもログインが維持されるようにする。

# 必要なファイル
マテリアル内のbbsを複製し`bbs_login`として使用
これ以降、`bbs_login`をルートフォルダとして進める

# usersテーブルの作成
まず`config/database.yml`内のデータベース名を変更する(これをしないと、掲示板を既に作っている場合データベース名が被って正しくデータベースの作成ができない)

“`yaml:config/database.yml
default_env: &default
adapter: postgresql
encoding: unicode
database: bbs_login #変更

developm

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlのコマンドライン引数の比較

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

Python,Ruby,PHP,Java,JavaScript,Perlのコマンドライン引数の比較

# Python

https://qiita.com/taashi/items/07bf75201a074e208ae5

# Ruby

https://qiita.com/shiGira/items/44586bdc48c06e00d99f

# PHP

https://qiita.com/aic0o/items/91ca1ddc1fc6e025286f

# Java

https://qiita.com/takahirocook/items/ece64146015f702d0a83

# JavaScript

https://qiita.com/furusin_oriver/items/f030d1eaa9e7b54233c3

# Perl

https://perlzemi.com/

元記事を表示

herokuビルドでアプリがcrashしてしまった時の解決例

herokuにデプロイした際にビルドは成功したのですが、WEBページを開くと下記の画面になってしまいました。
1週間ほど嵌ったので備忘録として記載します。?
参考にしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2534058/3e3bc773-05ce-3a65-2112-ec106f64817d.png)

# 起点 「Application error」
ビルドが正常に終了したのに、WEBページに「Application error」画面が表示され、「heroku logs –tail」でログを確認してね!とあるのでターミナルで確認する。
以下のログが表示されていた。

“`zsh:heroku logs –tail
2022-09-12T03:32:48.194301+00:00 heroku[web.1]: Starting process with command `npm start`
2022-09-12T03:32:49.916104+00:00

元記事を表示

Ruby 3.2 で Struct がチョイ楽になる?

Ruby で構造体的なデータを表すクラスにはいろいろありますが,その代表格は,やはり組込みクラスの Struct ですよね。

たとえば,猿への給餌計画を表す `ApeFeed` クラスはこんなふうに:

“`rb
ApeFeed = Struct.new(:morning, :evening)

proposed_ape_feed = ApeFeed.new(4, 3)

p proposed_ape_feed.morning # => 4
p proposed_ape_feed.evening # => 3
“`

しかし,どうも私は Struct を多用する気になれないでいます。
理由の一つは,`Struct.new` が Struct のインスタンスではなくサブクラスを返す,という謎仕様。
えっと,クラスに `new` したらインスタンスを生成して返すでしょ,ふつう。
なぜこんなワケの分からない仕様なのか理解に苦しみます。

もう一つは,上記のようなコードだと,`ApeFeed.new(4, 3)` の引数のどっちがどっちかすぐ分かんなくなっちゃうことなんですよね。
やっぱ

元記事を表示

Ruby 3.2 で Set が組込みクラスになる?

Array クラスの陰に隠れて存在感の薄い Set クラスですが,みなさん使ってますか?

Set クラスは文字どおり数学の「集合」を表すクラスです。標準添付ライブラリーなので(組込みではないので),`require` しないと使えません。

Set の影が薄い理由は,組込みクラスでないことに加え,集合にまつわるだいたいのことが Array で代用できてしまう,ということがあると思います。
これは,Array が「大クラス主義」的に設計されていて,他言語なら分けて設計するようなさまざまなデータ型の機能を Array に詰め込んでいるからですね。

しかし,「Set は要素の重複が無いことが確実」なのに対し,Array で集合を表すと要素の重複があるかもしれないので,最後に `uniq` をかます必要があったりします。
やはり集合のようなデータは Set クラスで表すのがよさそうです。
でも `require` が面倒。

なのですが,どうやら Ruby 3.2 で Set が組込みクラスになるようです。
https://www.ruby-lang.org/en/news/2022/09

元記事を表示

times文を用いた繰り返し処理問題

問題
times文を使って、以下のようにターミナルに出力されるプログラムを書く。

1回目の繰り返し
2回目の繰り返し
3回目の繰り返し
4回目の繰り返し
5回目の繰り返し
6回目の繰り返し
7回目の繰り返し
8回目の繰り返し
9回目の繰り返し
10回目の繰り返し

自分の答え
10.times do|i| 
  puts “#{(i+1)}回目の繰り返し”
end

正解
10.times do|i| 
  puts “#{i+1}回目の繰り返し” 
end

修正が必要な点
ブロック変数+1の式展開は、()が不要。

式展開
文字列の中に式を入れることができる機能。
式展開する場合は、文字列を””で囲む必要があり、’’で囲んでも機能しない。

元記事を表示

rails 7でdevice を使用するとusersモデルに独自で追加したカラムが保存されない。

先日の[watnow](https://github.com/watnows)のハッカソンでアプリを開発をした際にRails 7.0.3を利用して開発しました。
ハッカソンで作ったアプリでログイン機能をrails7かつdeviceで実装するという選択をしたところハッカソンにおいて貴重な2時間を失ってしまいました。その際に得た知識が誰かの役にたてばなと思い記事にさせていただきました。

### 環境
Rails 7.0.3
Ruby 3.1.2

## 状況
Rails 7でdeviceでアカウント登録する際に独自に追加したカラムが保存されないという状況にハマりました。form_withを使用して実装しており、deviceが用意してくれているemailやnameといったカラムは保存されます。

## エラー内容
deviceを使用してuserをcreateすると以下のようなエラーが出ました。
“` terminal:ログ
Started POST “/users” for ::1 at 2022-08-07 16:52:12 +0900
Processing by Devise

元記事を表示

[Rails]selectフォームにenumのリストを表示する2つの方法

すんごい基礎的な内容なのですが、2通りのやり方に出会ったので整理したかったのと、地味なとこでハマったので備忘録。

## やりたいこと
Postモデルにstatusというenumがあるとする。

“`ruby
class Post < ApplicationRecord enum status: { active: 10, inactive: 20 }, _prefix: true end ``` これをこういう感じ↓で表示したい。 ![スクリーンショット 2022-09-12 12.09.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/645077/b0e3c242-c7da-f570-f417-f87c24cf5242.png) htmlはこう。ブラウザで見える文字列とvalue属性を渡してあげたい。 ```html

OTHERカテゴリの最新記事