Ruby関連のことを調べてみた2020年10月01日

Ruby関連のことを調べてみた2020年10月01日

【Ruby on Rails】更新日、作成日を好みの表記に変更する

# 目標
デフォルトの表記ではなく、
2020年09月◯◯日や2020/09/◯◯
11時05分や11:05と変更する

# 開発環境
ruby 2.5.7
Rails 5.2.4.3
OS: macOS Catalina

# 流れ
1 gem ‘rails-i18n’を導入
2 config/application.rbを編集
3 viewを変更

# gem ‘rails-i18n’を導入
“`rb:Gemfile
gem ‘rails-i18n’
“`
“`:ターミナル
$ bundle install
“`
# config/application.rbを編集
config.load_defaults以下4行を追記。

“`rb:config/application.rb
class Application < Rails::Application # Initialize configuration defaults for originally generated Rails version. config.load_defaults 5.2

元記事を表示

任意の3つの数字を、同じ値を除外して合計を出力する方法

【概要】
—————————————-
1.結論

2.どのようにコーディングするのか

1.結論
—————————————-
配列、eachメソッド、if文を使う!

2.どのようにコーディングするのか
—————————————-

“`ruby
def any_three_sum(array)
unique_nums = [] #—❶
array.each do |num| #—❷
count = 0
array.each do |i| #—❸
if num == i
count += 1
end
end
if count < 2 #---❹ unique_nums << num end end three_sum = 0 #---❺ u

元記事を表示

[Ruby on Rails]「〜を満たすまでループする」をやめる

#なぜ書くのか
実務スタートしてから本日でまる1ヶ月が経ちました。
同期と協力し、一つの機能をリリースし、正常に稼働させることに成功しました。
しかし実は一度、本番環境で処理を完了できないという不具合を起こしてしまいました。
2度と同じことを起こさないための備忘録としアウトプットさせていただきます。

#なぜ起きたのか
簡単に言えば「無限ループ」に陥ったことが原因です。
Sidekiq上で走っているジョブを監視するという機能で、ジョブがダブったり喪失したりするのを検知しSlackにアラートを出すというのが、今回の実装内容でした。

まずぶち当たったのが、
・予定から実行
・実行中から予定
この双方の行き来のタイミングでジョブを取得してチェックに入ってしまうと、度々エラーとして検知してしまうということです。

行き来のスピードは1秒から最大5秒ほどのラグがありました(ローカル環境でのチェックでは)。
そのタイミングで新機能の監視用のジョブが動いてしまうと、正常にジョブが動いていたとしてもエラーとして検知してしまうということです。

これに対し私が行った対策は
**ジョブを取得する際にル

元記事を表示

CodeWarでの勉強(ruby)⑥ inject

##この記事について
最近始めたCodewarを通じて学べたことを少しずつアウトプット

##問題
>If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.
Finish the solution so that it returns the sum of all the multiples of 3 or 5 below the number passed in.
Note: If the number is a multiple of both 3 and 5, only count it once. Also, if a number is negative, return 0(for languages that do have them)

10未満の数字の内で3と5の倍数の数字を合計して、その値を返すメソッドを作成する。
注意点が数が3と5の両方の倍数である場合(15

元記事を表示

【No.004】発注者の注文一覧画面を修正

[Issue](https://github.com/fukadashigeru/import_agent_app/issues/9)
[PR](https://github.com/fukadashigeru/import_agent_app/pull/10)

# 概要
発注者の注文一覧画面を修正する

# ToDoリスト
– [x] ステータスのenum化
– [x] 編集ボタンをfontawsomeに
– [x] 横幅が狭い時に横スクロールを可能に

# ToDo詳細
## ステータスのenum化

[Rails 国際化 (i18n) API](https://railsguides.jp/i18n.html)
[[初学者]Railsのi18nによる日本語化対応](https://qiita.com/shimadama/items/7e5c3d75c9a9f51abdd5)
[Railsでi18nを使った日本語化をする](https://qiita.com/rearail/items/5554fab137ef8635a1af)

“`ruby:config/applicati

元記事を表示

「もっとプログラム脳を鍛える数学パズル」_Q39 (code:Ruby) -> Rust

[「もっとプログラマ脳を鍛える数学パズル」](https://www.shoeisha.co.jp/book/detail/9784798153612)をRustで書き直すのは、ボケ防止にちょうど良いかもしれない、と思った。

# Q39:隣り合うと消えちゃうんです

中級問題。このくらいになると、解答コードが何やってるのかも考えないと、分からなくなる。

## Ruby

“`ruby:q39_1.rb
N = 11

@memo = {[0,0,0] => 1}
def pair(unused, onetime, neighbor)
if @memo[[unused, onetime, neighbor]]
return @memo[[unused, onetime, neighbor]]
end
cnt = 0
if unused > 0
cnt += pair(unused – 1, onetime + neighbor, 1)
end
if onetime > 0
cnt +=

元記事を表示

Rubyを使うための rbenvのコマンド

前回の記事でrbenvについて細かく書きたいので
少し内容を引き継いで書きます。

# brewのインストールなど
rbenvを使う前提としてbrewのインストールかアップデートをしてください
インストールはこちらの[公式ベージから](https://brew.sh/index_ja)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/754121/2f4a4d08-d0b5-2128-d7aa-b7d56c2d183b.png)

下の方にあるインストール下のコマンドを
ターミナルで打ち込みます。

すでにインストール済みなら
こちらのコマンドで更新とアップグレードしてください

“`bash
brew update && brew upgrade
“`

# rbenvコマンド

“`bash
rbenv versions
# rubyのバージョン確認

rbenv install -l
# インストールできるrubyバージョン一覧
# なおbrewの更新で一覧は変わります。

元記事を表示

railsのエラーLibrary not loaded 

久々に使おうしたらエラーが頻発したので
記録を投稿します。

# エラー内容

“`bash
rails –version
“`
上記のコマンドでバージョン確認したら
下記のようなエラーがでできました。

“`
Library not loaded: /usr/local/opt ~
“`

# エラーへの対応

色々調べた結果
下記のコマンドを試して見ました

“`bash
brew update && brew upgrade

brew reinstall openssl
“`

解決せずrubyのバージョンを変えることを試して見ました。

“`bash
rbenv versions
# rubyのバージョン確認

rbenv install -l
# インストールできるrubyバージョン一覧
# なおbrewの更新で一覧は変わります。

rbenv install 2.6.6
# 仮に2.6.6をインストーしたい時はこれ

rbenv local 2.1.5
# 使うバージョンの変更、これ重要
“`

とりあえずこれでエラーは解決しました。
以前brewの更新

元記事を表示

変数・スコープについて(ruby)

よく使うことになる変数とその使える範囲について、少しでも参考になればと思います。また、まだまだ勉強して2ヶ月半程度の者なので、間違いもあるかも知れません。
記事の内容はコチラ

– **変数とは**
– **なぜ変数があるのか?**
– **変数の種類**
– **使える範囲(スコープ)**
– **最後に**
– **参考にさせていただいたサイト**

ちなみに、学習しているrubyのバージョンはこちら

“`ruby

ruby 2.6.5
“`

#変数とは
変数とは、「任意の値を入れる為の箱」だと思ってください。
例えば、「apple」と書かれた箱(変数)に「りんご」という文字を入れるイメージです。この事を、「変数appleに「りんご」という文字を**代入**する」と表現します。また代入する際には「=」を使います。算数の「=」と意味が違うので、気をつけましょう。

“`ruby
apple = “りんご”
“`
このように変数を作る(定義する)と、この変数を呼び出すだけで中身の値を使う事ができるようになります。

“`ruby
puts apple
=> りんご

元記事を表示

[Rails] ビューにparamsの中身が全表示されてしまう問題

Qiita初投稿です。

現在、Ruby on RailsでECサイトの作成をしています。
商品一覧表示にする際に、以下のようにparamsの中身(?)がビューの下部にずらっと表示されてしまう現象が起こりました。

“`
ビューの下部にこのように表示されてしまう

#,#

元記事を表示

いいねの数で並べ替えてページネーション

##はじめに
いいねの数を多い順で並べ替えた後、ページネーション機能を追加するやり方です。
実装するのに苦戦した為、備忘録として残しておきます。
##手順

####gemをインストール

“`Gemfile
gem ‘will_paginate’
gem ‘bootstrap-will_paginate’
“`

####アソシエーションを定義する

“`post.rb
belongs_to :user
has_many :likes, dependent: :destroy
has_many :liked_users, through: :likes, source: :user
“`

“`user.rb
has_many :likes, dependent: :destroy
has_many :liked_posts, through: :likes, source: :user
has_many :posts, dependent: :destroy
“`

“`like.rb
belongs_to :

元記事を表示

初見で難解だったdeviseを改めてまとめてみた

##はじめに
 deviseとの出逢いは最悪でした。そもそもGemという概念すら曖昧で、MVCモデルの流れが少しわかるようになってきた段階でインストールした記憶がある。deviseでは、基本的にコントローラーを触らないので、初見ではなぜ勝手にアクションが実行されているのかが理解できなかった。なので、改めて「これだけ!」というものをまとめた次第。

#deviseとは
 deviseはユーザー管理機能のに特化したGem。サインインやログアウトなどの設定が簡単になる。つまり、手動でルーティングの設定やコントローラー…をしなくて済む。ユーザー登録をしてサービスが受けられるアプリケーションなら、導入すると、開発が早くなるというメリットがある。

##全体の流れ
1. Gemfileに追加
1. deviseをインストール
1. モデルの作成
1. テーブルの作成
1. 新規登録とログインのためのリンク設定
1. 新規登録のためのビューファイルの作成

今回は新規登録のみを扱う。

###1. Gemfileに追加
“`ruby:Gemfile
gem ‘devise’
“`
・ファイルの最

元記事を表示

マジックナンバーは使わないで・・・。

## マジックナンバーとは
実際に僕が書いたコード・・・

“` ruby
prefectures = Prefecture.where(area_id: 3)
cities = City.where(prefecture_id: 13)
“`
こんなコード。
ようするに`自分以外の人が見たら何の数字のことかわからない番号`のこと。

自分の頭の中では,,,
“area_idの3は“関東
“prefecture_idの13は“東京都
という感じで当たり前のようにコードを書いていた。

## 変更後のコード
“` ruby
kantou = Area.find_by(name: ‘関東’)
prefectures = Prefecture.where(area_id: kantou)
tokyo = Prefecture.find_by(name: ‘東京都’)
cities = City.where(prefecture_id: tokyo)
“`

番号を使うのではなく、誰が見てもすぐにわかる変数に格納した。

元記事を表示

【RSpec on Rails】初心者による初心者のためのテストコードの書き方

今回テストコードへの理解を深めるため私なりにRSpecを使ったテストコードの書き方をまとめていきます。 初めてテストコードを書いたときはなぜテストコードが必要かもよく分からずに見様見真似で書いていたのを覚えていますので初心に返りできる限り詳細に書いていきたいと思います。ちなみに用語の詳細な説明は省いています。
わかりやすくまとめている記事があるのでご覧ください。
オススメ => [使えるRSpec入門・その1「RSpecの基本的な構文や便利な機能を理解する」
](https://qiita.com/jnchito/items/42193d066bd61c740612)

##1.なぜテストコードが必要なのか
アプリケーションの動作確認をコンピュータに任せることで品質を保証するためです。 人が手動で動作確認をしているとどうしても抜け漏れが起こる可能性があります。 テストを自動化することで人為的なミスをなくすことができます。 他にも仕様の変更があった場合も変更分だけ確認すれば良いので全てのテストを1からやり直すという手間が省けます。

##2.Rspecとは
RSpe

元記事を表示

Scopeに変数を渡す。

業務でscopeについて少し戸惑ってしまったので、備忘録としてここにまとめておきます。
ちなみに書いている人間は、エンジニア歴1ヶ月の人間です。
間違っている点などあれば、コメントお願いいたします。

## やりたかったこと
each分の変数をscopeに渡したい。

## 実際のコード
“` Office.rb
scope :search, lambda { |keyword|
where(‘name LIKE (?) OR
address LIKE (?) OR
near_station LIKE (?) OR
introduction LIKE (?) OR
company LIKE (?)’,
“%#{keyword}%”,

元記事を表示

一日試しても解決できなかった仮想環境へのファイル転送:備忘録

仮想環境へのファイル転送に関するメモ

“`Terminal
scp 送るファイル名 送り先ファイル名:~/
“`
で転送しようとするもうまくいかない。
下記サイトを参考に
https://qiita.com/JJJJJJJJ/items/5a8ff64ff89dad404e82
https://teratail.com/questions/122671
https://blog.katty.in/853
https://qiita.com/shuthimaru/items/2334f63845d8b0d85bdd

vagrantfaileでIPを確認を確認してhostsにvimエディタで書き込み。

“`Terminal
scp 送るファイル名 送り先ファイル名:~/
“`
で再チャレンジ

“`Terminal
ssh: Could not resolve hostname @@@: nodename nor servname provided, or not known
lost connection
“`
でダメだった

“`Terminal
pi

元記事を表示

言語ごとのwebフレームワークまとめ及び比較

#はじめに
最近webフレームワークの勉強を始めたのですが、種類と量の多さに驚いたのでザッとまとめてみました。
詳しさよりもざっくり把握できることを重視しました!

#対象フレームワークの列挙
記事が長くなりそうなので調べたフレームワークたちを言語ごとに列挙しておきます。

– **Python**…Django,Flask,Bottle,Tornado,web2Py
– **JavaScript**…Angular,React,Vue
– **Ruby**…Ruby on Rails,Sinatra,Padrino,cuba microframework,Remaze,HANAMI
– **PHP**…Laravel,Symfony,CodeIgniter,ZendFramework,Phalcon,Slim,Yii,FuelPHP,Flight

#Python

– Django

高速な動作、フルスタックフレームワーク、セキュリティ的に安全な設計、メンテナンスの容易さ、自由に選べるプラットフォーム、学習コストの低さ
採用企業例…Pinterest,NASA,

元記事を表示

「もっとプログラム脳を鍛える数学パズル」_Q01 (code:Ruby) -> Rust

[「もっとプログラマ脳を鍛える数学パズル」](https://www.shoeisha.co.jp/book/detail/9784798153612)をRustで書き直すのは、ボケ防止にちょうど良いかもしれない、と思った。

# Q01:一発で決まる多数決

本筋ではないけれど、このクイズの設定の微妙なところは、「じゃんけんの勝ち負け」は「多数決の勝ち負け」と関係ないところ。「チョキ2でパー2なら、チョキの勝ちじゃん」と、本筋でないところで混乱した・・・

## Ruby

“`ruby:q01_2.rb
N = 100

cnt = 0
0.upto(N) do |left|
left.upto(N) do |right|
all = [left, right – left, N – right]
cnt += 1 if all.count(all.max) == 1
end
end
puts cnt
“`

## Rust

“`rust:main.rs
fn main() {
let mut q01 = Q01{ n

元記事を表示

Yay! I’m on Rails! Repetition

# はじめに
n回目の`Ruby on Rails`記念です。
# on Rails!
![20200930.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538241/c50bbf37-c37d-9f06-a50e-c662f7e58494.png)
# 環境
“`ubuntu.bash
$ uname -a
Linux ubuntu 5.4.0-48-generic #52-Ubuntu SMP Thu Sep 10 10:58:49 UTC 2020 x86_64 X86_64 X86_64 GNU/Linux
“`
今回は、
`windows10`上の`VirtualBox`上の`Ubuntu`
# 嵌ったところ
例によって`sqlite`で引っ掛かりますが、前回経験済みですので大丈夫。
*[前回 – Qiita](https://qiita.com/superrino130/items/ad5179e825c23204db2f)*

## spring
“`spring.not
bund

元記事を表示

CodeWarでの勉強(ruby)⑤ proc

##この記事について
最近始めたCodewarを通じて学べたことを少しずつアウトプット

##問題
>Bob is preparing to pass IQ test. The most frequent task in this test is to find out which one of the given numbers differs from the others. Bob observed that one number usually differs from the others in evenness. Help Bob — to check his answers, he needs a program that among the given numbers finds one that is different in evenness, and return a position of this number.
! Keep in mind that your task is to help Bob solve a real IQ test, which

元記事を表示

OTHERカテゴリの最新記事