Ruby関連のことを調べてみた2023年07月19日

Ruby関連のことを調べてみた2023年07月19日

deviseの導入

https://github.com/heartcombo/devise
公式サイトより、Getting startedを参考にしながらdeviseを導入してみました。

gemファイルに追記、bundle installを実行
“`
gem ‘devise’
“`
次に、以下のコードを実行
“`
rails generate devise:install
“`

以下のファイルが作成される
“`
create config/initializers/devise.rb
create config/locales/devise.en.yml
“`

ファイルを作成すると、ターミナルに以下のようなメッセージが表示される。
“`

===============================================================================

Some setup you must do manually if you haven’t yet:

1. Ensure you have defined default ur

元記事を表示

RubyでAtCoder ABC231(A, B, C)を解いてみた

# はじめに
Webエンジニアを目指して、RubyやRailsをいじってます。
今回は、RubyでAtCoder ABC231のA, B, Cを解きました。備忘録として解き方をまとめていきたいと思います。

# A – Water Pressure
https://atcoder.jp/contests/abc231/tasks/abc231_a
“`ruby:a-231.rb
puts gets.to_i.fdiv(100)
“`

# B – Election
https://atcoder.jp/contests/abc231/tasks/abc231_b
“`ruby:b-231.rb
n = gets.to_i
hash = Array.new(n){ gets.chomp }.tally
puts hash.key(hash.values.max)
“`
## 解説
`tally`メソッドで同じkey同士をくくった後のvalueが最大となるkeyが答えとなります。(`max_by`を使った書き方もできると思います)

# C – Counting 2
https:/

元記事を表示

RubyでAtCoder ABC232(A, B, C)を解いてみた

# はじめに
Webエンジニアを目指して、RubyやRailsをいじってます。
今回は、RubyでAtCoder ABC232のA, B, Cを解きました。備忘録として解き方をまとめていきたいと思います。

# A – QQ solver
https://atcoder.jp/contests/abc232/tasks/abc232_a
“`ruby:a-232.rb
puts gets.split(“x”).map(&:to_i).inject(:*)
“`

# B – Caesar Cipher
https://atcoder.jp/contests/abc232/tasks/abc232_b
“`ruby:b-232.rb
s = gets.chomp.chars
t = gets.chomp.chars

u = s.zip(t)
k = (t[0].ord – s[0].ord) % 26
puts u.all?{ (_1.ord + k) % 26 == _2.ord % 26 } ? “Yes” : “No”
“`
## 解説
`ord`メソッドと`all?`メ

元記事を表示

現場で使えるRuby on Rails5速習実践ガイドを読んで感じたこと

Railsの学習に際し、インプット教材にRuby on Rails5速習ガイドを選び今回読み終えたので全体の感想をまとめていきます。

# 初の実践には持ってこいの辞書

一通り読み終えて感じたのは、これは参考書であると同時に辞書引きができるようになっているものであると感じました。

どうしてそう思ったのかは以下の点を感じたからです。

– 開発の全体像を掴むことができる
– アプリケーションの作成から機能追加や削除を一通り学べる
– Rspecでのテスト技法が記載されている
– 概念への理解
– JSへの理解度の追求
– チーム開発の流れ
– バージョンアップへの対応の姿勢

Railsアプリケーションを作るのは簡単ではありませんし、今後ECサイトをHCの課題で制作していくわけですが、根本的な部分の理解度がないとそもそもアプリケーションを作れないでしょう。

どういう手段を用いて開発へ取り組むべきなのか、

またどういったステップで次へ行っているのかを明確にする時、

本書は開発経験がヒヨコな私のような駆け出しには必要な書籍であると感じました。

わからない

元記事を表示

SQLite3::BusyException: database is locked を解決した方法

# 背景
railsチュートリアルをやってる途中で `rails s` でサーバーを起動し、seedファイルの最初のユーザーでログインしようとしたら以下のエラーが発生しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3515182/e48be9fd-8722-9dfc-dd92-39b69d6e4a87.png)

# 原因
`rails s` でサーバーを起動する前に `rails c –sandbox` でコンソールを開き、
“`
> user = User.first
“`
と、最初のユーザーに対する操作を行っていたためでした。
sandboxオプションをつけると、操作したレコードにロックがかかってしまうみたいです。
今回はsandboxオプションをつけて開いた、コンソールを閉じずに、サーバーを起動させたため、
最初のユーザーのレコードにロックがかかり、ログイン時にレコードの操作ができなかったのだと思われます。

# 解決方法
`exit`または`quit`でrail

元記事を表示

【Ruby】 ハッシュ、シンボルの基礎

# 概要
– ハッシュ、シンボルについて復習をしたので、自分の中で整理しておくことにした
– 学習したことの備忘録

# 主な内容
– ハッシュ
– シンボル
– keysメソッド、valuesメソッド
– ハッシュのキーワード引数

# ハッシュ
##### {}は、Hashクラスのオブジェクト
“`ruby
a = {}
puts a.class => Hash
“`

まずは基礎の基礎

##### ハッシュの要素を追加する場合
“`rb:要素の追加
# ハッシュ[キー] = バリュー

colors = { “apple” => “red”, “orange” => “orange”, “melon” => “green” }
colors[“remon”] = “yellow”

puts colors => {“apple”=>”red”, “orange”=>”orange”, “melon”=>”green”, “remon”=>”yellow”}
“`

##### バリューを取り出したい場合
“`rb:バリューの取り出し
# ハッシュ[キー]

color

元記事を表示

【プログラミング勉強】完全無料のプログラミング習得ロードマップ【JavaScript】

私は大学3年生(2023年時点)で[Matcher株式会社](https://matcher.jp)のエンジニアインターンをさせて頂いております。

この記事では、**完全独学・費用を一切かけずにエンジニアになりたい**という方向けに書きました。「**プログラミングってよく聞くけど、何から始めればいいの?**」という気持ちを少しでも解決する手立てになれればと思っております。

# どのプログラミング言語を学ぶのが最適か
プログラミング言語を選定することが一番難しく感じる方も多いと思います。Python, JavaScript, Ruby, C++…挙げていけばマイナーな言語も含めてキリがないと思います。ではどの言語を勉強すればいいのか…

完全に私の主観ですが、結論**どれでもいい**です。理由は、一つでも言語をマスターすることができれば、他の言語でもほとんど融通が効くことが多いからです。大事なことは一つの言語を完璧に身につけることが大切だと思います。

どれでもいいと申したのですが、記事を書く上で一つの言語に絞ってロードマップ的なことを書いていきたいので、今回は**JavaScrip

元記事を表示

20%ルールは何分に該当するのか計算してみた

## 環境
Ubuntu 20.4
Ruby 2.6

## はじめに
Googleに20%ルールというものがあります。業務時間の20%を自分の好きなことに充ててもいいというものです。Googleのような大手が、こうしたエッジの効いたルールを導入して成果を上げているとのことで、日本でもわりと話題になりました。そして、Web業界の中にも、同じようなルールを導入し出している会社がちらほらとあるようです。

自分が所属する組織はSIerですが、社内にこのようなルールはありません。しかし、個人的に何%でも、わりと自由に設定できる、暗黙のカルチャーのようなもはあったりします。

自分の組織に20%ルールがあった場合、業務時間の何分を割り当てることになるのだろうか、気になったため、計算するプログラムを作ってみました。

## コード
“`rule.rb
def calc_time(rule)

require ‘time’

str_tm = Time.parse(“09:00”) # 業務開始時間
end_tm = Time.parse(“17:30”) #

元記事を表示

【Ruby】バブルソートで配列の並べ替え

Rubyを使ったアルゴリズムについて学習しています。
今回は数字の配列を並べ替える方法についてやっていきます。

# やりたいこと
sortメソッドを利用せず、数字の配列を昇順ソートして出力するアルゴリズムを作成する。

“`ruby
array = [6, 7, 3, 2, 5, 4, 1]
“`
これを、こうしたい。
“`ruby
array = [1, 2, 3, 4, 5, 6, 7]
“`

# バブルソートとは?

> 値を昇順・降順で並べ替えるアルゴリズムのひとつ
> pointデータを小さい順(大きい順)に並べ替えるよ
> point隣り合う要素の大小比較を繰り返すことで、全体を並べ替えるよ

引用:バブルソートとは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

# まずは数字の並べ替えるプログラムを作る

“`ruby
# 配列を定義
array = [6, 7, 3, 2, 5, 4, 1]
if array[2] > ar

元記事を表示

【Ruby】繰り返し処理の制御構造 (で遊んでみた)

# はじめに
– 繰り返し処理の動作を変更するための制御構造について、遊びながら学んでみた
– 学習したことの備忘録

# 主な内容
– break
– redo
– catchとthrow

# break(ひたすらラーメンを完食していくコード)
`break`:繰り返し処理を脱出できる
“`rb
ramens = [“豚骨ラーメン”, “醤油ラーメン”, “塩ラーメン”]
tastes = [“スープを飲む”, “麺をすする”, “完食!”]
ramens.each do |ramen|
tastes.shuffle.each do |t|
puts “#{ramen}, #{t}”
break if t == “完食!”
end
end
“`
shuffleで、「スープを飲む」, 「麺をすする」, 「完食!」がランダムに入れ替わり、「完食!」でbreakする。それを、「豚骨ラーメン」,「醤油ラーメン」,「塩ラーメン」のそれぞれについて繰り返す。

“`:実行結果例
とんこつラーメン, スープを飲む
とんこつラーメン, 麺をすする
とんこつラーメン,

元記事を表示

RubyでAtCoder ABC293(A, B, C)を解いてみた

# はじめに
Webエンジニアを目指して、RubyやRailsをいじってます。
今回は、RubyでAtCoder ABC293のA, B, Cを解きました。備忘録として解き方をまとめていきたいと思います。

# A – Order Something Else
https://atcoder.jp/contests/abc310/tasks/abc310_a
“`ruby:a-293.rb
n, a, b = gets.split.map(&:to_i)
d = gets.split.map(&:to_i).sort

discounted_price = d[0] + b
puts a <= discounted_price ? a : discounted_price ``` # B - Strictly Superior https://atcoder.jp/contests/abc310/tasks/abc310_b ```ruby:b-293.rb n, _ = gets.split.map(&:to_i) array = Array.new(n){ gets.split

元記事を表示

Boolean型カラムをpresence: trueで設定したらfalseで保存出来なかった

# 前提条件

Userテーブルにnullを許容しないBoolean型のhoge_flagというカラムがあるとする。

“`ruby
create_table :users do |t|
t.boolean :hoge_flag, default: true, null: false
end
“`

migration後にuser.rbにvalidatesを追加

“` ruby
validates :hoge_flag, presence: true
“`

# データ保存時にエラーが出る・・・

上記を踏まえて、hoge_flagをfalseにしてみた!

“`
user = User.first
user.hoge_flag = false
user.save!
“`

結果
“`
Translation missing: ja.activerecord.errors.messages.record_invalid (ActiveRecord::RecordInvalid)
“`

あらら・・・

もう少し確認してみると

“`
user.valid?
=>

元記事を表示

Railsで’application.css’以外のCSSファイルを作成する手順

## はじめに
#### 実装したこと
レスポンシブ対応のために新しいCSSファイルを作成と適用する手順を記事にします。

#### 動作環境
Ruby 3.1.2
Rails 6.1.7.3

## 手順
1\. まず app/assets/stylesheetsディレクトリ内に、’responsive.css’という名前の新しいCSSファイルを作成します。(ファイル名はなんでも問題ないです)

2\. responsive.cssファイルを開き、メディアクエリなどのレスポンシブデザインに必要なスタイルルールを記述します。例えば、以下のようなコードを追加します。
~~~ responsive.css
/* 例: スマートフォンサイズの場合に適用されるスタイル */
@media screen and (max-width: 520px) {
/* スタイルの定義 */
}

/* 例: タブレットサイズの場合に適用されるスタイル */
@media screen and (min-width: 521px) and (max-width: 960px) {
/* スタイルの定

元記事を表示

Rubyのライブラリoptparseについて調べてみた

## はじめに

個人学習でカレンダプログラムを作成するにあたり、Rubyのライブラリ`optparse`を使用しました。使用するにあたり、[Rubyの公式マニュアル](https://docs.ruby-lang.org/ja/latest/library/optparse.html)を読むだけでなく、実際にプログラムを動かして、調べてみましたため、その記録を残します。

## 本題

`optparse`の機能について簡単に申し上げますと、Rubyプログラムを実行する際に指定しているオプションを扱うためのライブラリです。

例えば、`ruby sample.rb -a foo bar -b baz`のように`-a foo bar -b baz`箇所をsample.rbの中で使用したい場合に使用するライブラリです。以下は[Rubyの公式マニュアル](https://docs.ruby-lang.org/ja/latest/library/optparse.html)から引用して、少しだけ内容を変えたプログラムになります。

“`ruby:sample.rb
require ‘o

元記事を表示

【Rails API】エラーハンドリング処理をJSON形式で返す

Rails APIについて学習しています。
今回は、Railsアプリケーションを使い、をAPIによる例外処理(エラーハンドリング)を実装していきます。

# 今回やること

– apiのエラーハンドリング処理を実装する。
– 404, 500のレスポンスを返す処理を実装する。
– apiのエラーをjson形式で返す処理を実装する。

# base_controller.rbに追記する

“`ruby:app/controllers/api/v1/base_controller.rb
module Api
module V1
class BaseController < ApplicationController include Api::ExceptionHandler end end end ``` # このコードの解説 - このコードでは、Ruby on Railsのアプリケーションにおけるコントローラの基底クラス`BaseController`を定義している。 - `module Api` `module V1`の部分で、「Api」

元記事を表示

AtCoder ABC310 解法(A ~ E) Ruby & Kotlin

# 解法

## [A – Order Something Else](https://atcoder.jp/contests/abc310/tasks/abc310_a)

|[公式解説](https://atcoder.jp/contests/abc310/tasks/abc310_a/editorial)|
|-|

| Difficulty | Solve Prob | Solve Time |
| :—: | :—: | :—: |
| 23 | > 99 % | 4 mins |

### Ruby

“`ruby:abc310_a.rb
N, P, Q = gets.split.map(&:to_i)
D = gets.split.map(&:to_i)
puts [D.min + Q, P].min
“`

### Kotlin

“`kotlin:abc310_a.kt
fun main() {
val (N, P, Q) = readLine()!!.split(” “).map(String::toInt)
val D = readLin

元記事を表示

共同開発 model作成 カラム追加

モデルの作成は 先頭大文字の単数形で作成します。
### :shamrock:モデルの作成とカラムの追加

“`
【顧客用】
$ rails g devise Customer
【管理者用】
$ rails g devise Admin
“`
“`
rails db:migrate
“`
Deviseというユーザー認証システム用のCustomerモデルが生成されます。モデルファイル、ビューファイル、データベースマイグレーションなど、Deviseを使うために必要なファイルが自動的に作成されます。

:star: cusutomers (顧客)ファイル
“`diff_ruby
create_table :customers do |t|
t.string :last_name, null: false
t.string :first_name, null: false
t.string :kana_last_name, null: false
t.string :kana_first_name, null: false

元記事を表示

Ruby 配列 ブロックについて 3

# はじめに
– Rubyの配列やブロックの復習用(3回目)
– 学習したことの備忘録
– 「[Ruby 配列 ブロックについて 2](https://qiita.com/takayuki91/items/ad9098a258c7927e1f98)」の続き

# 学習内容
#### ブロック
– with_indexメソッド
– each_with_indexメソッド

# 参考にした教材
– [プロを目指す人のためのRuby入門]( https://www.amazon.co.jp/%E3%83%97%E3%83%AD%E3%82%92%E7%9B%AE%E6%8C%87%E3%81%99%E4%BA%BA%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AERuby%E5%85%A5%E9%96%80-%E8%A8%80%E8%AA%9E%E4%BB%95%E6%A7%98%E3%81%8B%E3%82%89%E3%83%86%E3%82%B9%E3%83%88%E9%A7%86%E5%8B%95%E9%96%8B%E7%99%BA%E3%83%BB%E3%83%

元記事を表示

Next.jsとRuby on Railsを使ってアプリを作成してみた【フルスタックブログ】

## 1. プロジェクトを作成する(Ruby on Rails)
“`
mkdir <プロジェクト名>
cd <プロジェクト名>
rails new <プロジェクト名> –api -T
cd <プロジェクト名>
rails s
“`
※ Next.jsのローカルホスと競合するので、rails側のサーバーを3001にする
“`
rails s -p 30001
“`

## 2. modelを作成する

“`
//モデル作成コマンド
rails generate model [モデル名] [属性名:データ型 属性名:データ型 …][オプション]

//データベースへへの転送
rails db:migrate
“`

## 3. controllerを作成する

① controllerを作成する
“`
rails generate controller コントローラ名
“`
② config/routes.rbを編集する

“`config/routes.rb
Rails.application.routes.draw do
namespace :api do

元記事を表示

RubyのPolarsでデータフレームのすべての行を表示する

## はじめに

:::note warn
この記事は2023年7月16日時点の記事であり、半年後や1年後にはあまり役に立たない可能性が高いです。あくまで現時点での回避策だと思ってください。
:::

みなさん、[Polars](https://github.com/pola-rs/polars)はご存じですか?

Pandasを置き換えるかもしれないと言われている、Rustで実装された新しい高速なデータフレームライブラリです。PolarsにはRubyのバインディングもあって、Ankaneさんが開発・メンテナンスを行っています。

https://github.com/ankane/polars-ruby

このPolarsでCSVファイルを読み込むと次のようになります。

“`ruby
require “csv”

df = Polars.read_csv(“iris.csv”)
“`

“`
=>
shape: (150, 5)
┌──────────────┬─────────────┬──────────────┬─────────────┬───────────┐

元記事を表示

OTHERカテゴリの最新記事