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

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

実行中のRubyサーバ上でsidekiqプロセスが動いているか確認するコマンド

ググっても出てこなかったのでメモ
“`ruby
Sidekiq::ProcessSet.new.map {|ps| ps[‘hostname’] }.include?(Socket.gethostname)
# または
Sidekiq::ProcessSet.new.map {|ps| ps[‘hostname’] }.include?(`hostname`.strip)
“`

ちなみに `Socket.gethostname`, “ `hostname`.strip “ は「Ruby のプロセスが稼働しているサーバの hostname を取得する」コマンドのようです。
`Socket.gethostname`の方は、ruby 2.7以降ではdeprecatedとのことです。

#### 参考
– https://qiita.com/notakaos/items/368f2e1b3c4d672e2c04
– https://stackoverflow.com/questions/42566/getting-the-hostname-or-ip-in-ruby-on-rails

元記事を表示

.tryというよりガッツだぜ

こちらはプログラマーなりたてのへっぽこパンピーが、自分の自分による自分のための忘備録として書いてるので、間違いもがあるかもですがあしからず!

# よく見かけるけど喋ったことない人
って割かし多いと思いますが、そのよく見かける人と話す機会がある時に、なんて言葉をかけるかで、人間性が垣間見えますよね。
「**あ、いつもお互いに見かけますよね!**」と堂々と言える人はもいますけど、「**いつも見てると思われたらどうしよう**」と考えて、ちょっと奥手になる人もいますよね。

その繊細な心模様については各自で考えてもらうとして、僕にとってよく見かけるけど見ないふりをしてた人が「.try」なんで、ちょっと軽く声をかけてやろうと思い調べてみました。
“`ruby
“hoge”.try(:to_i)
“`
こいつですが、わりとコード上に頻出するんで、「Try、Try、Try」と頭の中でウルフルズがちらつき出すんで、それを食い止めるために調べてみました(**表題のくだりはここで華麗に回収できたので一安心です**)。

# .tryでnilを返してくれる
急に真面目に書くと、tryはメソッドが定義さ

元記事を表示

renderか、redirect_toか、それが問題だ

こちらはプログラマーなりたてのへっぽこパンピーが、自分の自分による自分のための忘備録として書いてるので、間違いもがあるかもですがあしからず!

# たいていの人がどこが違うのと思う
そもそも世の中には、似ているけど違うものが多いんですよね。
ジャッキーチェンとジャッキーチュンとか、シモーヌヴェイユとジュールヴェルヌとか、鎬昂昇と鎬紅葉とか、ザ・ピーズのボーカルとTOMOVSKYとか

よくよく知ると違うけど、**ぱっと見が同じでよくわからない**枠で、僕の中ではrenderとredirect_toも同じなんです。
ちいと気になって調べたら、なるほどーとなったので、しれっと書き残しとこうと思いました。

# renderとredirect_toの動き方の違い
・render     : controller → view
・redirect_to   : controller → URL → route → controller → view

redirect_toの方がちょっと遠回りしてますね。

renderがviewファイルを指定して、それを表示させるだけの処理に対して
redi

元記事を表示

Dockerのlocalhostがどっかいった話し

こちらはプログラマーなりたてのへっぽこパンピーが、自分の自分による自分のための忘備録として書いてるので、間違いもがあるかもですがあしからず!

と定型文でいつもQitaを書き始めてるんですが、今日はちょっといつものtipsにすらならない戯言を書き連ねる前に、**書きたい**ことがちょびっとあるんですよね。

何かしらのアウトプットになればと思い書き始めたら、駄文Qittaですが、意外にも数人の方々から**真摯なコメント**を頂けたりしたりと、目にとめてもらえてるみたいでした。
Qittaの片隅で愛を叫んでるけものにまで、優しくてしてくれるなんて..
***みなさんありがとうございます!***

# Dockerのlocalhostに直接アクセスできんぞ

**閑話休題**(と書いてみたかっただけですが)
まぁ世の中の百戦錬磨のエンジニアの方々からしたら、Dockerにアクセスするときの話しなんか、当たり前のことだと思いますが、個人的になるほどーっとなったのと、もう上司から突っ込まれないように忘備録ならぬ防備録として、無防備に己の無知をさらしながら書き残そうと表題について思いました。

元記事を表示

Railsでエラー文の日本語化 (rails-i18n)

## Railsでエラー文を表示させると・・・
おそらく最初英語で表示されると思われます。
その修正方法をメモしておきます。

## まずgemfileの編集
下記コードをgemfileに追記してください。
~~~
gem ‘rails-i18n’
~~~

その後、下記実行
~~~
bundle install
~~~
これで準備ができましたのでここから日本語化していきます。
## config/application.rbを編集
日本語化して行きます。
下記のconfig~をendまでに追記してください。
~~~rails:(config/application.rb)
class Application < Rails::Application ・ ・ ・ config.i18n.default_locale = :ja ・ ・ ・ end ~~~ これで簡単にですが日本語化出来ていると思います。 ただこれだと中途半端に日本語化されていると思います。 なので、中途半端な部分の日本語化していきます。 ### config/localesの下にファイル名(ja.yml)

元記事を表示

どこまで実装していたのか、分からなくなってしまった時。

## 始めに
プログラマーを目指して勉強中の私は、作業を中断することが多い。今回は仕事で手一杯になってしまい(26日間勤務)しばらくポートフォリオの制作が出来なかった。(言い訳っていいわけ)
 約1ヶ月間ぶりに途中まで作成したポートフォリオを見ても、何が何だかわからない。。。`git`の機能をうまく使えていないことを痛感し、今後この様な事態を防ぐために忘備録として残す。
## Gitを活用できていない人
`git`には作業を一時的に保存する`git commit`というコマンドがある。
この時、作業内容についてメッセージを付与できる`git commit -m`。この時に丁寧にメッセージを書き込めた後から見直してもわかりやすくなるのだが、、、

## コミットのメッセージを閲覧する方法
`git log`でコミットメッセージを閲覧できる
“`:ターミナル
git log  (コマンド入力)
      ↓
commit 47ba90cc909b35a65215fa161b3fe1b7d431015d (HEAD -> feature/Car

元記事を表示

Herokuデプロイ手順(健忘録)

## Heroku CLIをインストール

“`:ターミナル
% brew tap heroku/brew && brew install heroku
“`
インストールの確認

“`:ターミナル
% heroku –version

heroku/7.40.0 darwin-x64 node-v12.16.2
“`
バージョンが出力されればok

## Herokuにログイン
“`:ターミナル
% heroku login –interactive
=> Enter your Heroku credentials.
# メールアドレスを入力し、エンターキーを押す
=> Email:
# パスワードを入力して、エンターキーを押す
=> Password:
“`

## Heroku上にアプリケーションを作成
“`:ターミナル
# 作成したいAppのディレクトリで
% heroku create 「App名」
“`
確認のため下記コマンド
“`:ターミナル
% git config –list | grep heroku
“`

## ClearD

元記事を表示

Ruby on Rails備忘録

# 初めに
これはRailsを触っている中で疑問に思ったことをただメモするだけのものになります。
少し`Python`をかじっていたので「**Pythonでいうところの…**」みたいな表現多め。

# MVCモデルって何
`Model`、`View`、`Controller`のそれぞれの頭文字からきているモデルのこと
## Modelの役割
データを処理したりする部分のこと。`Controller`とデータベースの仲介役的な立ち位置。

## Viewの役割
ユーザーが実際に見る画面のこと。HTMLとかの部分。
ユーザーのリクエストを`Controller`に渡す役割もある。

## Controllerの役割
`View`と`Model`の間にいる存在。司令塔的な立ち位置。
`View`からのリクエストを`Model`に指示したりする。

### まとめ(個人的解釈)
`View`が注文(リクエスト)を受け取り`Controller`に送る。
`Controller`は送られた注文をもとに`Model`に注文の商品(データ)をとってくるように指示。
`Model`は指示された内

元記事を表示

rails generateコマンドを取り消す方法

はじめに

railsを使うならほぼ確実に使うであろう”rails g(generate)”コマンドですが、model名を間違えて記述してコマンドを叩いてしまったら修正するのに時間がかかるな。。と思って毎回このコマンドを叩く際に毎回少し緊張していました。

今回”rails g”を取り消すコマンドの存在を知ったので備忘録として残そうと思います。

rails destroy

“rails g”コマンドを取り消すためには、”rails destroy”コマンドを使用します。

~~~
#rails g modelコマンドを取り消したいの場合
bundle exec rails destroy model モデル名

#rails g controllerコマンドを取り消したいの場合
bundle exec rails destroy controller controller名
~~~

“rails g”の箇所を”rails destroy”に変更してコマンドを叩くだけで簡単に削除をすることができます。
失敗しても戻し方がわかるとストレスが激減しますね。

ちなみに実際に削除

元記事を表示

[初心者向け] ポートフォリオに愛犬管理アプリを作ってみた話 [Ruby on Rails]

# はじめに
愛犬管理アプリを作りました。
きっかけは、DICというプログラミングスクール。
Ruby on Railsについて学んだので、そこで学んだ知識を総動員したアプリを作ってみたかったのです。

# 本記事の内容
本記事では、環境構築とタスク管理の実装までを記載します。
以降の記事を見たい方は、下記にある目次のリンクから、ご覧ください。

* 目次
* part1 : 環境構築
* part2 : タスク管理編
* part3 : ログイン機能実装編(devise)
* part4 : 招待機能実装編(devise_invitable)
* part5 : 体調管理編

* 実装したい機能
* ログイン機能
* ユーザー招待機能
* ペット一覧
* 一団体ごとにペットを管理
* ペットに紐づいたタスク管理
* ペット紐づいた体調管理

# 開発環境
MacBook Air (M1, 2020)
Rails 6.1.6.1
ruby 3.0.1
yarn 1.22.1

元記事を表示

【Rspec】リファラをheaderに設定してリダイレクトするケースを作成する。

メモとして残します。

controllerに`redirect_to :back`と記載されているactionに対してのactionケースを確認する場合、
リファラが設定されていないと、リダイレクト先を確認するケースでエラーとなる。
そのため、以下でリファラの設定方法を記述します。

# ■やり方

リクエストヘッダに`HTTP_REFERER`をキーにリファラとなるURLを設定。

“`rb
RSpec.describe ‘put /hoge_save’, type: :request do
let(:headers){ { ‘HTTP_REFERER’ => referer } }
let!(:referer){ “/hoge_prev” }

it ‘リファラにリダイレクトすること’ do
put ‘/hoge_save’, {‘params’=>’hoge’}, headers
expect(response).to redirect_to referer
end
end
“`

以上

元記事を表示

【Rails】redirect_toを使うときはステータスコードを指定しよう!

## 結論
redirect_toをstatusオプションなしで使用すると思わぬ事故が起きることがある。
なのでstatusオプションを使ってステータスコードを指定するかredirect_to以外のメソッドを使用しよう。

## redirect_toについて
https://railsdoc.com/page/redirect_to

## 起きたこと
https://railsguides.jp/getting_started.html#%E3%82%B3%E3%83%A1%E3%83%B3%E3%83%88%E3%82%92%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B

このRailsのチュートリアル?をやっていたところステータスコードを指定しないでredirect_toを使用したら思わぬ挙動が発生した。

### blogアプリで記事にコメントをつけて、そのコメントを削除すると記事も削除された!!!
コメント削除のviewファイル
“`erb

<%= link_to "Destroy comment", [comment.artic

元記事を表示

Railsの基礎を使って、メッセージ投稿アプリを作ってみた 【第3章】(6.エラーの処理)

## 概要
前回の記事(第2章)の続きです。
[Railsの基礎を使って、メッセージ投稿アプリを作ってみた 【第2章】(3.リファクタリング〜5.バリデーションの設定まで](https://qiita.com/web_fumiya/items/c58bbae366d4d813296f)

今回の第3章では、バリデーションエラーが発生した際のエラーの処理を実装していきます。

## 開発環境
– Ruby 2.7.3
– Rails 6.1.6.1
– Postgresql

## 開発手順
1. アプリの作成 (第1章)
2. CRUD処理で簡単なメッセージ投稿アプリを実装 (第1章)
3. リファクタリング (第2章)
4. フラッシュの実装 (第2章)
5. バリデーションの設定 (第2章)
6. エラーの処理 (第3章)
7. Bootstrapでスタイルをつける (第4章)

## エラーの処理
前回の記事でバリデーションを設定したことにより、空文字投稿、文字数制限を超える投稿をしたらクソアプリをMVCからDDDに無理やり直してみた

# 今回作ったWEBサービス
https://ojitalk.com/
![oji.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/920917/fbdaa970-c118-f541-1942-705842af0c52.gif)
こんにちは!ちゃきです!
定期的にクソサービスを個人開発して世の中のドメイン無駄遣いしてます!
そろそろQiita更新しないとヤバいと思い書きました。

転職前も転職後もPHPをほとんど使っています。
しかし社内のサービスはほとんどrailsで作られているため、今後の為にrailsの勉強の一環として
今回のサービスを作りました。
てか社内にlaravelエンジニア全然いない。

## どんなサービスか?
登録してある若者言葉をおじさんでもわかる単語に変換してくれる***チャットアプリ***です。
おじさんの言葉も若者がわかるように変換します。
最初から登録してある単語以外にも追加はできます。

|                                       

Rails6で通知機能を実装(ポリモーフィック)手直し版

前回投稿した通知機能をポリモーフィックを使って実装しましたが、途中からうまく使えていませんでした。
下記記事のenumの設定から分岐してviewまでを修正して書いていきます。
この記事から見られた場合はenumまでは下記記事を見てください

https://qiita.com/ttymryo/items/79dcf9fd83d0c09e8775

## enumの設定

“`ruby:model/activity.rb
enum action_type: {
favorited_the_diary: 0,
followed_you: 1,
commented_on_the_diary: 2
}
“`

通知する内容をなんとなく翻訳にかけて分かるように書いてあります
後で日本語化するので単語一個だと分かりにくくなります

## create時に通知を入れる
通知したい内容がcreateされたときにactivityをcreateするようにします

“`ruby:model / favorite.rb comment

【Rails】フロントから渡ってきたパラメータをバックエンド側で編集できない

以下のような感じのバックエンド側に渡したストロングパラメータをgsubでちょこっと手を加えようとしたらできなかったので備忘録も兼ねてメモ。。。
“`ruby
def permit_params
params.require(:form_params).permit(:param1,
:param2,
:param3)
end
“`

挙動としては以下のような感じ、、、
“`ruby
permit_params[:param1].gsub(“hoge”,”fuga”) #←これをログ出力したらきちんとgsubが効いているが、、、
permit_params[:param1] = permit_params[:param1].gsub(“hoge”,”fuga”) #←こんな感じで値を更新しようとしても書き換えができない。エラーとかも出ない。。。
“`

対応
ストロングパラメータを他の変数に一旦、移してそっちを編集する。

【ruby】文字列から半角空白と全角空白を全て削除する

自分用メモ
“`ruby
str.gsub(/ | /,””)
“`

戻り値を理解して使い分けるfindとfind_byとwhereと、時々、オトン

過去のコードレビュー時にActiveRecordでのデータ検索の記述でfind, find_by, whereの使い分けが適切ではなく指摘を受けることが何度かあり、今もたまに検索失敗時の戻り値ってどれがどれだっけと曖昧になることがあるため備忘録がてら概要をまとめました。

## 大まかな使い分けの判断基準
結論から先に書くと以下のような条件で用途が変わってくるかと思います。

### find
– 取得したいデータのidが特定されている
– 検索対象が特定できなかった場合に**例外を返したい**

### find_by
– id以外のプロパティでデータを取得したい
– 検索対象が特定できなかった場合に**nil(false)を返したい**

### where
– id以外のプロパティでかつ**複数のデータ**を取得したい

## findメソッドの概要
– 各モデルのidを検索キーとしてデータを取得するメソッド
– id以外の条件で検索不可
– 戻り値は検索対象のクラスのインスタンス
– 取得したいデータのidが特定されている場合に使用

“`ruby
# 単一のIDを指定
C

三項演算子で変数を定義する

## はじめに
三項演算子で変数を扱う機会があったので、記事にしました。
サンプルコードでは、admin権限の有無でメッセージ内容を変更させます。

## 三項演算子とは
三項演算子を使うことで、if文のコード量を減らすことができます。
“`rb:if文
if user.admin?
“Hello”
else
“Hi!”
end
“`

“`rb:三項演算子
user.admin? ? “Hello” : “Hi!”
“`
複雑すぎるif文は三項演算子に向いていません。かえって可読性が低くなります。

## 変数ver

一応、if文も記述しておきます。

“`rb
if user.admin?
message = “Hello”
else
message = “Hi!”
end
“`

最初に試した三項演算子。
“`rb
user.admin? ? message = “Hello” : message = “Hi!”
“`

変数の重複が気になるので以下のように修正しました。
“`rb
message = user.admin?

Railsのクラスメソッドについて考える

# 本題
– Railsで書いてるとクラスメソッドでいろいろやりがちにならない?と思ったので解決策を考える。

### ファーストクラスコレクション 
[良いコード、悪いコードで学ぶ設計入門](https://www.amazon.co.jp/%E8%89%AF%E3%81%84%E3%82%B3%E3%83%BC%E3%83%89%EF%BC%8F%E6%82%AA%E3%81%84%E3%82%B3%E3%83%BC%E3%83%89%E3%81%A7%E5%AD%A6%E3%81%B6%E8%A8%AD%E8%A8%88%E5%85%A5%E9%96%80%E2%80%95%E4%BF%9D%E5%AE%88%E3%81%97%E3%82%84%E3%81%99%E3%81%84-%E6%88%90%E9%95%B7%E3%81%97%E7%B6%9A%E3%81%91%E3%82%8B%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E6%9B%B8%E3%81%8D%E6%96%B9-%E4%BB%99%E5%A1%B2-%E5%A4%A7%E4%B9