- 1. Ruby3/ Rails7/ MySQL8 の構成をdocker-composeで構築する
- 2. bundle installしたときにUnfortunately, an unexpected error occurred, and Bundler cannot continue.が出た時の対処法
- 3. cannot connect to the docker daemon at unix:///var/run/docker.sock. is the docker daemon running? の解決方法
- 4. rbenv installのエラーを解決
- 5. 【Rails】他ユーザーの投稿やコメントを削除、他ユーザーの投稿を編集といった操作ができる状態になっていた件
- 6. 16進数から10進数への変換方法を学んだ
- 7. テスト投稿
- 8. 新米エンジニアによるリファクタリングのすすめ-後編-
- 9. クラスについて学んだことまとめ
- 10. RubyのCSV出力でUTF8→S-JISに変換する時の文字化け対応
- 11. PV実装する際に使えるサイト
- 12. 表示速度を上げるための個人的な考察 画像読み込み編
- 13. 【Rails】javascriptで入力フォーム(textarea)の高さを自動で変えたいよ
- 14. 【Ruby】何度も繰り返してしまったエラー「undefined method `+’ for nil:NilClass (NoMethodError)」
- 15. Rubygemsの基本コマンド(インストール/アンインストール/確認)
- 16. 【R】複数のテーブルをまとめてYAML形式で保存する
- 17. DM機能実装する時に使用できるサイト
- 18. 集中力のおはなし
- 19. RubyプログラマがAtCoderの環境をatcoder-cliとonline-judge-toolsで快適にしてみた
- 20. Rubyの変数展開
Ruby3/ Rails7/ MySQL8 の構成をdocker-composeで構築する
# はじめに
Dockerコンテナでローカルに環境構築をしたので
作業内容をメモとして残します。RailsAPIの挙動を確かめるために、構築したものです。
# 構成の概要
* Ruby: 3.1
* Rails: 7.0 (APIモード)
* MySQL: 8.0# ディレクトリ構成
作業前にディレクト・ファイルを用意しておきます。
“`zsh:ディレクトリ
.
├── Dockerfile
├── Gemfile
├── Gemfile.lock
├── docker-compose.yml
└── entrypoint.sh“`
# 設定ファイル
各種ファイルの設定していきます。
## docker-compose.yml
まずは複数コンテナを操作するdocker-composeから設定します。
ここではMySQLのパスワードを直書きしていますが
本来は環境変数をまとめる.envなどのファイルを
gitignoreで追跡除外して、GitHub上で
一般に公開されないように考慮するべきです。
(今回は行っていません)“`yml:doc
bundle installしたときにUnfortunately, an unexpected error occurred, and Bundler cannot continue.が出た時の対処法
環境
– MacOS Montrey 12.4
– Rails 6.0.5
– Ruby 2.7.6
– Bundler 2.3.16## エラー内容
“`
$ bundle install
“`不可解なエラーの発生
“`
— TEMPLATE END —————————————————————-Unfortunately, an unexpected error occurred, and Bundler cannot continue.
First, try this link to see if there are any existing issue reports for this error:
https://github.com/rubygems/rubygems/search?q=undefined+method+%60full_name%27+for+nil+NilClass&type=IssuesIf there aren’t any reports fo
cannot connect to the docker daemon at unix:///var/run/docker.sock. is the docker daemon running? の解決方法
## 前提
__環境__
Ruby 2.7系
Rails 6.1系## 結論
デスクトップからDockerのアイコンをクリックする等して再起動したら解決しました## 経緯
1. docker-compose up でサーバーを立ち上げようとする
2. A server is already running. と表示され立ち上がらない
3. 以下コマンドを実行
lsof -wni tcp:3000
4. 実行結果の「COMMAND」に「com.docke」と書いてある行のPIDをコピーして以下コマンドを実行(今思えばこれが誤りかと)
kill -9 xxxxx(コピーした数字)
5. docker-compose up
5. cannot connect to the docker daemon at unix:///var/run/docker.sock. is the docker daemon running?と表示される## 試したこと
“`
% sudo service docker stop
% sudo service docker start
“`
rbenv installのエラーを解決
# 経緯
Herokuへデプロイしていたら、Rubyのバージョンが合わなかったので、
バージョンの変更をしようとした。エラーの抜粋として
BUILD FAILED (macOS 12.1 using ruby-build
や
xcrun: error: invalid active developer path
が表示された。# 結論
上記のエラーで検索するとXcodeが最新版でないことが原因とのこと。# 解決策
ターミナルで下記コマンドで最新版にし、必要としていたRubyのバージョンを
無事インストールできました。~~~
$xcode-select –install
~~~# 参考記事
【Rails】他ユーザーの投稿やコメントを削除、他ユーザーの投稿を編集といった操作ができる状態になっていた件
プログラミングを初めて3ヶ月。
備忘録としてつまづいたところを記載し、アウトプットツールとして活用していきます。ポートフォリオを作成し、学習段階で身につけたスキルだったはずですが
うっかり漏れていてメンターから指摘を受けたので再発防止、備忘録の為、記載します。# 他ユーザーの投稿やコメントを削除、他ユーザーの投稿を編集といった操作ができる状態になっていた。
編集ページのurlを直接打ち込んだり、削除リンクを検証ツールから書き換えることで可能なので注意しなくてはならない。
編集や削除といった操作を実装する場合、ログインユーザーのデータなのかチェックを挟む必要がある。# 直打ち禁止のコード
直打ち禁止対象のcontrollerを開き
(今回は、posts_controller.rb)“`ruby:posts_controller.rb
class PostsController < ApplicationController before_action :authenticate_customer!, except: [:show, :index] before
16進数から10進数への変換方法を学んだ
# はじめに
現在プログラミングを学んでいますが、【課題の中でOxBFは10進数では幾つになるか】というような、2進数・10進数・16進数を自分の頭でそれぞれ変換して回答しなければならない問題があり、どのように考えて変換するのかを調べた結果を備忘録として書き記します。下記のサイトがとても分かりやすくまとめてくださっており、学ばせていただきました。
参考:https://www.infraexpert.com/study/ip2.html# 10進数と16進数
10進数が【0〜16】の時16進数に置き換えると下記の図のようになります。![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666919/7e98c70a-2047-e6d9-7abe-4f9b095e230e.png)
10進数の【10〜15】までは16進数では【A〜F】を数字として使用します。
そのままでは数字だけの時に10進数と区別がつかないので16進数では数値の先頭に【Ox】(ゼロエックス)をつけます。# 2進数か
テスト投稿
#見出し1
##見出し2-test
–
testtest#Tab
class test
def hoge
test.method
end#Space
class test2
def test2
test2.method2
end
新米エンジニアによるリファクタリングのすすめ-後編-
## はじめに
この記事は『[新米エンジニアによるリファクタリングのすすめ-前編-](https://qiita.com/Yporon/items/f5664677fedb9c5343c6)』の続きです。
前編を読まれていない方は、それを先に読むとより内容がわかりやすいと思います。## **リファクタリングの必要性を感じるコード**
早速ですが、怪しい香りのするコードについて具体的に解説していきます。
### **再代入を繰り返す変数**
“`ruby
def sample(text)
tmp = text.delete(‘円’)
tmp = tmp.delete(‘,’)
tmp = tmp.to_i
tmp = tmp > 500 ? tmp : tmp * 1.5
# なんらかの複雑な処理
tmp.to_s
end
“`再代入は変数の意味が無闇に変更されるため、コードが理解しづらくなります。
またコードを修正するために、いつ値が変更されたのかを特定する必要があり、修正に多くの時間を必要とします。
さらに、読み手を不用に混乱させてしまう
クラスについて学んだことまとめ
# はじめに
クラスについて勉強したことをまとめました!# 参考
プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで# クラスの定義方法
class クラス名
end
で定義します。クラス名は、キャメルケースで書くのが一般的です。
“`ruby:クラスの定義
class Userend
“`
# オブジェクトの生成方法
クラス名.newで生成します。
“`ruby:オブジェクトの生成方法
User.new
“`
# initializeメソッド
newメソッドでがオブジェクト生成されると、initializeメソッドが自動的に呼び出されます。
初期化を行いたい場合は、initializeメソッド内に処理を記述します。“`ruby:initializeメソッドの例
class User
def initialize
puts “hello”
end
end#initializeメソッドが呼び出されるため、”hello”が出力される
User.new #=>hello
“`
initializeメソッドは
RubyのCSV出力でUTF8→S-JISに変換する時の文字化け対応
UTF8で保存した?や、旧漢字といったものをSJISに変換して、そのまま出そうとエラーがでる。
そのため以下のように書けば、SJISに変換する時、文字化け対象は「?」で書きだすことでエラーが出ない。“`
text = utf8_dummy_data
CSV.open(“hoge.csv”, “w”, encoding: “SJIS”) do |csv|
csv << [text.encode(Encoding::Windows_31J, Encoding::UTF_8, invalid: :replace, undef: :replace)] end ``` 簡単なことなんだけど、検証とか調査に時間がかかったので記録しておきます。 よかったらいいね!? いただけると嬉しいです✌('ω'✌ )三✌('ω')✌三( ✌'ω')✌
PV実装する際に使えるサイト
★簡潔でわかりやすいです!
https://qiita.com/ryouzi/items/727063547da2432beda9
★少しだけ実装を多くしたパターンのやつでした!わかりやすいです!
https://qiita.com/ryo___eng/items/a525f80398210d0486b7
表示速度を上げるための個人的な考察 画像読み込み編
今回は私が開発したwebサービス(https://universitycommunity.herokuapp.com/) のページを読み込む速度を改善していきたいと思います。
ユーザーがサービスを利用する際に負担に感じる大部分はデザイン・表示速度の2つだと考えます。
なので今回は表示速度の改善を通じてより良いサービス開発に繋げていこうと思います。まずGoogle社が提供しているPageSpeed Insights(https://pagespeed.web.dev/?hl=ja) を用いて表示速度を測っていきます。
![スクリーンショット 2022-06-24 2.36.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1667538/0cb3d474-2491-a864-9e65-ae1eae0425cf.png)
モバイル版の表示速度スコア
![スクリーンショット 2022-06-24 2.37.43 1.png](https://qiita-image-store.s3.ap-north
【Rails】javascriptで入力フォーム(textarea)の高さを自動で変えたいよ
# はじめに
textareaの高さが固定の場合、改行していくと前の文章が埋もれていってしまい、かなりUXが悪い。
これを改善するために、Javascriptを導入し、改行に合わせて高さが自動で変わるようにしていく。
意外と一連の流れを記載している記事が少なかったため、かなり殴り書きだが投稿する。ただし、自身が実施した流れのため環境によって要不要がある。
使用環境は以下の通りである。
| No | 項目 | 内容 |
|—:|————-|————|
| 1 | OS | Mac |
| 2 | Ruby | 2.6.3 |
| 3 | rails | 6.0.4 |
| 3 | turbolinks| 5.2.0 |
| 3 | webpacker | 4.0.7 |**変更前(右のスクロールバーが出る)**
![gif2.gif](https://qiita-image
【Ruby】何度も繰り返してしまったエラー「undefined method `+’ for nil:NilClass (NoMethodError)」
## 概要
Ruby初心者の私が、ここ最近勉強中に何度も発生させてしまったエラーについて書きました。
難しいエラー内容ではないかと思いますが、なんか前もこのエラー出たな。。。となったので、備忘録として残すことにしました。### エラー再現コード
“`rb
numbers = 1..5numbers.each do |number|
# 1~5まで順に足しあげながら繰り返し処理する
sum += number
puts sum
end
“`### エラー内容
「+」 メソッドは、nilクラスに定義されていませんという意味のエラーメッセージ。
“`rb
$ undefined method `+’ for nil:NilClass (NoMethodError)
“`
「-」の場合も発生しました。
“`rb
$ undefined method `-‘ for nil:NilClass (NoMethodError)
“`
### 原因と解決策
– 原因
eachメソッドのブロック内の変数sumを、メソッド外で定義していないため。– 解決策
each
Rubygemsの基本コマンド(インストール/アンインストール/確認)
## はじめに
Ruby用のパッケージ管理システムであるRubygemsの基本コマンド(インストール/アンインストール/確認)について記事を書きます。
自宅のMacにchefを導入しようと試みる過程でgemを触っていて、パッケージの確認やインストール等をする機会があり、そこでコマンドの使い方を調べていたことが記事を書く動機になります。## コマンド一覧
### Gemのインストール
“`zsh:コマンド
gem install <対象のGem>
“`“`zsh:実行例
% gem install chef
Fetching aws-eventstream-1.2.0.gem
Fetching multi_json-1.15.0.gem
Fetching uuidtools-2.2.0.gem
Fetching aws-sigv4-1.5.0.gem
Fetching little-plugger-1.1.4.gem
Fetching vault-0.17.0.gem
Fetching rubyntlm-0.6.3.gem
〜〜〜省略します〜〜〜
“`### イン
【R】複数のテーブルをまとめてYAML形式で保存する
Rでデータを保存するときには、CSV形式などでテーブル1つを1ファイルで保存することが多いですが、複数の表をYAML形式で1つのファイルにまとめて保存することができます。
### テーブルをYAML形式で保存する
まず、1つのテーブルの保存です。
“`R:write_table1a.R
library(tidyverse)
library(yaml)table1 <- data.frame(a=c(1,2,3),b=c(10.3,11.6,12)) write_yaml(table1, "table1a.yaml") ``` 保存されたファイルはテキストになっていますので、テキストエディタなので読むことができます。 ```YAML:table1a.yaml a: - 1.0 - 2.0 - 3.0 b: - 10.3 - 11.6 - 12.0 ``` 列単位のベクトルになっています。 行数が多くなると、行単位で保存した方がテキスト見る場合読みやすいように思います。 ```R:write_table1b.R write_yaml(transpose(as.list(
DM機能実装する時に使用できるサイト
★非常にわかりやすく且つシンプルで理解しやすいのでオススメです!
https://qiita.com/mi-1109/items/660ec3630e76f11d1f16
★実装はできなかったけど、わかりやすい感じでした!
https://qiita.com/bindingpry/items/6790c91f374acc25bea2
集中力のおはなし
## 集中力とは
一つの事柄に注意を集中して物事に取り組む能力。wikiよりらしいです
—
## 年齢
人間の集中力は20歳ぐらいでピークその後はどんどん低下していく
—
## 時間と集中力の関係時間の経過で下がる
経過するほどペナルティあり適切な時間は諸説あり
—
## 理想?
—
## 感じたこと
– 集中力もリソースとしてマネジメントする必要あり。– 疲れたら休憩する?
– 休憩をもっと挟めばパフォーマンスあがるかも?
RubyプログラマがAtCoderの環境をatcoder-cliとonline-judge-toolsで快適にしてみた
# 0. はじめに
基礎力向上・アルゴリズム強化のために再度習慣化しよう!
どうせやるならコンテストにも参加したい!!
ということで[AtCoder](https://atcoder.jp/home)を始めることにしました
ビギナー向け、上級者向けなど色んなレベルのコンテストが**毎週開催**されてますただ実際に少しAtCoderをやってみて気づいたのですがウェブ上での操作性がイマイチ?
ちょっとコードを書いて事前テストするのもサンプルの入力例をコピペしなきゃいけない
そして欲を言うなら、コマンドラインですべて完結させたい
キーボードから手を離してマウスでボタンぽちぽちしなきゃいけないのは本当にナンセンス調べてみたらありました(開発者様、本当にありがとうございます。みんなでスター送りましょう?)
– [atcoder-cli](https://github.com/Tatamo/atcoder-cli)
– [online-judge-tools](https://github.com/online-judge-tools/oj)本記事は上記のツールを用いてRubyでAt
Rubyの変数展開
シングルクォーテーション(”)は変数展開が行われない。
変数展開を行う理由は、自動で#to_sが働くから。
#to_sとは、文字列ではない値を文字列に変換するメソッド。変数展開は、文字列連結と違い、数値 + 文字列の連結ができる。