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

Ruby関連のことを調べてみた2022年06月27日
目次

【Rails】orderメソッドが効かないとき

1対多のアソシエーションがある場合の並び替えで躓いたのでメモφ(´・ω・`)メモメモ

今回は、記事に対するコメントを新着順で並び替えです。

まず、新着順にするために下記のように、
コントローラーにorder(created_at: :desc)を追記しました。
しかし、並び替えされず・・・

“`ruby
# app/controllers/post_controller.rb

def show
~省略~
@comment = Comment.new
@comments = @post.comments.order(created_at: :desc)
end
“`

解決方法
—-

**1) postモデルに-> { order(created_at: :desc) }を追加**
※dependent: :destroyの前に置くとエラーになりました。
“`ruby
# app/models/post.rb

class Post < ApplicationRecord belongs_to :user has_many :comments,

元記事を表示

paizaの標準入力を、Rubyで入力値を可変させてデバッグする方法

paizaの解答欄では標準入力が一つしか与えられず、説明文の中で下記のように記載されていましたが、入力値を変える方法が分からず苦労したので、まとめてみました。
_複数の与えられる入力でテスト致しますので、 サンプル入力だけでなく入力値を可変させてデバッグしていただく事をお勧めいたします。_

かなり基礎的なところでしたが、私はVSCodeを使って、回答とinputファイルをそれぞれ作成して、ファイルをリダイレクトして標準入力したところ、上手くいきました。

~~~ruby:example.rb
N = gets.to_i
ans = []
N.times do
ans << gets.chomp.split.map(&:to_i) end print ans ~~~ ~~~input.txt 4 13 12 11 12 1 1 4 4 ~~~ ~~~ターミナル $ ruby example.rb < input.txt ~~~ 【参考】 https://www.kenschool.jp/blog/?p=1143 初心者のため、不備等あればご連絡ください。

元記事を表示

【Rails】ユーザー通報機能を作ってみました

ポートフォリオを作っていた際にwebアプリケーションでよく見かけるユーザー通報機能を実装したいと思い、実装の仕組みを検索してみたのですがほとんどヒントを見つけられませんでした。
なので、自己流でユーザー通報機能を実装してみました。まだまだ初心者のため、諸々間違いがあるかもしれませんが、この記事が少しでも皆さんの助けになると幸いです。(何かお気づきのことがあればコメントお願いいたします> <) ### 【環境】 - Rails 6.1.5.1 - ruby 2.6.3 ### 【前提】 - 管理者機能(Admin)を実装しています! - deviseを使っています! ### 【実現したいこと】 - 自分以外のユーザーを通報できる機能。 - 通報されたユーザーを管理者が確認できる。 - その通報のステータス(対応済み等)を更新できる。 - 管理者の判断でユーザーを退会扱いとする事ができる。そのユーザーはログインできなくなる。 ### 【テーブル設計】 | User | Report | | ---- | ---- | | name | reporter_id | | em

元記事を表示

複合テストコードのまとめ

## はじめに
初心者なりにまとめたものになりますので、諸先輩方からは何書いてんだおめえと感じる部分があると思います。
そう感じた際は、お手数ですが、コメント頂けると幸いです。

内容は、自分がテストコードを書く際に使用した物の構成になります。

## 目次
– visit
– expect

– マッチャ(matcher)とは
-include
-eq
-have_content
-have_no_content
-have_selector
-have_link
-change

– find().click
– find().hover
– fill_in

## visit
リクエストを送り、指定されたページへ遷移するためのコード
下のように記述することで、prefixにルーティングされているpathのビュー先へ遷移する

visit tweets_path
visit 「prefixのパス」_path

## expect
「アプリの実際の挙動」と「製作者が想定している挙動」が一致するかどうかを判断する記述
マッチャ(matcher)と呼ばれる検証する条件

元記事を表示

【Rails】指定日の投稿数を非同期通信化にて表示!

##### ★先駆者様の記事を見ながら真似して実装してみました!↗︎
皆さんもぜひ参考にして下さい(^。^)σ

https://qiita.com/nao0725/items/3ce5512500b38ea75431

なんですが、、、
真似しても中々実装できず、とても苦労したので、復習も兼ねてまとめてみます。
語彙力、コミュ力なしの期待値なし人材が書くので、耳にポテチ挟みながら見て下さいm(_ _)m

#### 〜完成イメージ〜
何も入力してない時は、「年/月/日」が入る!
![スクリーンショット 2022-06-26 18.50.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2717077/e1e05359-1605-0955-fd51-545579e1d521.png)
日付指定後、検索ボタンを押すと、すると、、、
検索結果(投降数OTZ)が一瞬で出てくる(非同期通信すげぇ!!!)
![スクリーンショット 2022-06-26 18.50.13.png](https://qiita-im

元記事を表示

?【初学者用】Ruby・Rails環境構築

# はじめに
今回もPC変えたときに困らないよう環境構築を載せておきます。
PCの環境構築はこちらから↓

https://qiita.com/hondano_gentuki/items/0cb7367f390e36f1a047

# 環境構築

## Ruby
### rbenv と ruby-buildのインストール
まずはRubyの土台となる、rbenvとruby-buildを、Homebrewを用いてインストールします。
Homebrewをインストールしていない方は上記のPC環境構築をご覧ください。
“`Ruby:ターミナル
brew install rbenv ruby-build
“`
続いてrbenvをどこからも使用できるようにします。
“`Ruby:ターミナル
% echo ‘eval “$(rbenv init -)”‘ >> ~/.zshrc
“`
続いてzshrcの変更を反映させます。
“`Ruby:ターミナル
% source ~/.zshrc
“`
これでrbenv と ruby-buildをインストール部分は完成です。

### readl

元記事を表示

タイムスタンプを見ず、中身が変わっていたらビルドする

# これは何?

先日のツイート

の実装。

# 状況

タイムスタンプが信用できないファイルが絡むビルドをしたいことがある。

* 手元で生成できるファイルが、 git でも管理されている
* 自動更新されるデータ(スクレイピングの結果からの抽出物とか)をソースにする

など。

具体的には、たとえばとこんな rakefile(抜粋)があったとしよう。

“`ruby:rakefile
file “generated/cooked.json” => “hoge.json” do |a|
cook_json( a.sources, a.name )
end
“`

`hoge.json` をなんか処理して、 `cooked.json` を作っている。
`cooked.json` 自体はそんなに大きくはない。

しかし、なにかわからない事情によって `hoge.json` または `cooked.json` のタイムスタンプは信用できないので、上記の `rakefi

元記事を表示

日付系のメモ

日付実装する時に参考にしたサイト
世の中には文章力のある国語マンのイイ人がたくさんいますね。

https://qiita.com/nao0725/items/409ece34ecbec5167125

https://qiita.com/ryouzi/items/950401a3d6032bd5641d

https://railsdoc.com/page/date_related

https://fuchiaz.com/ruby-rails-time-date/#Date

なんであんなに長文打てるのだろう
指先が腱鞘炎になるので、文字数少なめにメモしていきます…/(◉〜◉)

元記事を表示

7日間の投稿をグラフ化 ~application.jsファイルが大事~

★基本的には先駆者の方のサイトを見れば大半はできます!
ほぼ出来ていると思うんですが、中々グラフが表示されなかったので、メモとして残します。

↓↓↓素敵な先駆者のサイトはこちら(いつもめっちゃわかりやすくて助かってます!!!)↓↓↓

https://qiita.com/ki_87/items/37e9f42c118f87416aa6

但し、記述を丸パクリしてもグラフが出現せず
こんな感じにしたいのに、、、otz

![スクリーンショット 2022-06-26 15.05.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2717077/f1f73124-92bf-4636-e91d-f0bb34978545.png)

gemのインストールは間違っていないと思ったので、怪しいなぁーって思っていた
「application.js」ファイルで検索をかけたところ、、、
“`
import Chart from ‘chart.js/auto’;
import jQuery from “jquery

元記事を表示

[ruby] [paiza] 配列を扱う上での個人的な小ステップアップ

### はじめに
最近paizaをはじめました
完全なる初心者ですがアウトプットを兼ねて投稿しています

### 文字と整数の組のソート (paizaランク C 相当)の問題にて
**問題**
nに整数が入力され、その後n回分「文字」と「整数」の組が空白区切りで入力される
「整数」で昇順に並び替える

“`ruby
n = gets.to_i
w = {}

n.times do
line = gets.split(‘ ‘)
# ここが自分は使ってこなかった記述でした
w[line[1].to_i] = line[0]
end

w = w.sort

w.each { |ele| puts ele[1] }
“`
いつもはこうしていました
“`ruby
n.times do |i|
w[i] = gets.split(‘ ‘)
# 中身=> {0=>[“A”, “1”], 1=>[“B”, “2”]}
end
“`
これだといらない数字も配列に入っちゃうため扱いにくかったのですが、
上の例の中身は`{1=>”A”, 2=>”B”}`になるので欲しかった情

元記事を表示

【Rails】「<投稿内容>… 続きを見る」という部分を作る。(truncateの実装とminitestの追加)

# はじめに
記事投稿サイトでよく見る「<投稿内容>… 続きを見る」という部分を作りたい。
なので作る!!!
| No | 項目 | 内容 |
|—:|————-|————|
| 1 | OS | Mac |
| 2 | Ruby | 2.6.3 |
| 3 | rails | 6.0.4 |
|4 | minitest| 5.11.3 |
|5| minitest-reporters| 1.3.8|
# 一覧表示テンプレートに文字数制限と”続きを見る”リンクを追加
truncateメソッドにより文字数制限をして表示する。
続きをみるはlink_toメソッドにより投稿の詳細ページ(showテンプレート)に飛ぶようにする。
“`app/views/microposts/index.html.erb

<%= trunc

元記事を表示

グループ機能全般で利用できるサイト

★グループ作成実装-アソシエーションメイン! Viweは簡単!

https://qiita.com/ki_87/items/5add92e34c639fe13ef0

★グループへの入退会機能-ネストがメイン! Viewの記述に注意!

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

★グループメンバーへのメール送信機能-全体的に難しい! 覚えるしかない!

〜実装時は↓こっちの方が良い!〜

https://qiita.com/ki_87/items/67f8965e8de17e95ac1c

〜解説重視なのは↓こっちの方が良い!〜

https://qiita.com/annaaida/items/81d8a3f1b7ae3b52dc2b

※どちらのページも素敵なまとめ方でした!!! Ψ(☆ω☆)Ψ

★環境変数についてのサイト! 簡単・便利!

https://qiita.com/ki_87/items/82b28f89a8552506a169

https://qiita.com/yuichir43705457/ite

元記事を表示

記事投稿の「タイトル」を作りたいよ〜投稿内容に加えて

# はじめに
SNS風のWEBアプリを元に、記事投稿サイトにしていきたい。
SNSだとタイトルは必要ないため、内容のみの実装していた。
そこで、投稿にタイトルを追加し、投稿内容と一緒にタイトルをつけてタイムラインに表示させるようにする。
| No | 項目 | 内容 |
|—:|————-|————|
| 1 | OS | Mac |
| 2 | Ruby | 2.6.3 |
| 3 | rails | 6.0.4 |
# カラムの追加
contentカラムのみ実装されていたので、titleカラムを追加する。
rails generate migration “Add「カラム名」To「モデル名」 カラム名:データ型
の順で投げるとchangeメソッドの中に自動でadd_columnを生成してくれる。

“`言語名:ターミナル
$ rails generate migration AddTitleToMicroposts ti

元記事を表示

【Ruby翻訳】実務でリーダブルコードはどう役に立つのか(インデント、コメント)

# はじめに

どうも、未経験からエンジニア転職し半年が経ちました。
今回も前回に引き続きリーダブルコードを元に実務ではどう役に立ちそうか、逆にこれはやめた方が良さそうなど考えていきたいと思います。今回は適切なインデントとコメントに関してです。

https://www.amazon.co.jp/s?k=%E3%83%AA%E3%83%BC%E3%83%80%E3%83%96%E3%83%AB+%E3%82%B3%E3%83%BC%E3%83%89&adgrpid=56076398369&gclid=Cj0KCQjwzLCVBhD3ARIsAPKYTcQ9BABns25tc2X99NY7Ymv4OkuqwRPWtwHjkHrAft2axqEo7Pg51nkaAmmiEALw_wcB&hvadid=591886305975&hv

元記事を表示

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=Issues

If 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
~~~

# 参考記事

macOSでxcurnエラーが出たときの対処法

元記事を表示

【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進数か

元記事を表示

OTHERカテゴリの最新記事