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

Ruby関連のことを調べてみた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

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlのライブラリ・モジュールの比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,Perlのライブラリ・モジュールの比較

# Python

https://qiita.com/ryuichi1208/items/cb5f850a9811d2a4bc3a

# Ruby

https://qiita.com/sugamaan/items/d7871da28c0160b69609

# PHP

https://qiita.com/mikakane/items/2719df714df5b3fc6adf

# Java

https://qiita.com/haruto167/items/162551100449ea5c7e6d

# JavaScript

https://qiita.com/Nako4/items/1d8eaf731bf4370b84a7

# Perl

https://perlzemi.com/b

元記事を表示

.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にアクセスするときの話しなんか、当たり前のことだと思いますが、個人的になるほどーっとなったのと、もう上司から突っ込まれないように忘備録ならぬ防備録として、無防備に己の無知をさらしながら書き残そうと表題について思いました。

元記事を表示

AlmaLinux OS 9にRuby 3.0をインストール(AppStream)

# はじめに

Application Stream(AppStream)を利用してAlmaLinux OS 9にRuby 3.0をインストール

## サポート

本手法で導入した場合、[Red Hat Enterprise Linux Application Streams Life Cycle \- Red Hat Customer Portal](https://access.redhat.com/support/policy/updates/rhel-app-streams-life-cycle)より、2032-05がEOLだと思われる。(OS EOLまでのサポート)
それ以降に報告された脆弱性や不具合への対応は実施されない可能性がある。

## LOG

### インストール

提供バージョンが増えてモジュール化したら、`yum module install ruby:3.0`のような指定になるかもしれない

“`shell-session
# cat /etc/redhat-release
AlmaLinux release 9.0 (Emerald Puma)

#

元記事を表示

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

## 始めに
プログラマーを目指して勉強中の私は、作業を中断することが多い。今回は仕事で手一杯になってしまい(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】オブジェクト の クラス と メソッド の 調べ方

# 目的
– プログラミングで重要な、分からないことを調べるための手段を学ぶ。

# ポイント
– classメソッドを使う。
– pry で ls を使う。
– –grep でメソッドを絞り込む。

# 書き方の例
“`ruby

オブジェクトのクラスを調べる
“”.class

クラスの持つメソッドを表示する
ls “”
ls “” –grep upcase

“`
~実際の表示〜
– => String

– String#methods:
% delete length squeeze など

– String#methods: upcase upcase!

# 注意するポイント
– lsコマンドは、pry でしか使用出来ない。

# 具体的な例
“HELLO WORLD”のクラスを調べる。
さらに、そのクラスが持つメソッドを使って小文字にする。

~サンプルコード~
“`ruby
“HELLO WORLD”.class

ls “HELLP WORLD” –grep

元記事を表示

typeprof で自分の書いたコードの間違いが分かるようにしたい

# はじめに

typeprof でソースコードの解析を行うと、自分の間違いとは関係のないエラーも出力されることがあります。

自分の知りたい間違いだけが出力されるようにするために、安直なツールを作成しました。

[tpoutcut](https://github.com/ktakase00/tpoutcut)

興味のないエラーを取り除いてもまだエラーが残っていれば、終了コードでそれがわかる、というものです。

# たとえば

## 間違いのあるコード

以下のコードには間違いが 2 つあります。

“`ruby:app/tpoutcut.rb
class Tpoutcut
def run
app_params = AppParams.load
result = make_result(app_params)

puts result.contents

make_exit_code(result_data)
end

private

def make_result(app_params, _mode)
result = R

元記事を表示

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”に変更してコマンドを叩くだけで簡単に削除をすることができます。
失敗しても戻し方がわかるとストレスが激減しますね。

ちなみに実際に削除

元記事を表示

[rails7] turbo対応のdeviseの書き方

## この記事を読んで解決できる問題
* link_toのmethod deleteが効かない問題
* Error: Form responses must redirect to another locationの問題
* deviseのUndefined method ‘user_url’のエラー
* after_sign_out_path_forが効かない問題
* sign_up errorが表示できない問題

## この記事を書こうとしたきっかけ
rails7から色々大きく変わって、rails6など、以前のやり方だと、ほとんどの場合はerrorが起こります。
そしてrails7とdeviseについては、今の資料ではほとんどの場合はturbo自体を無効化にして使っているため、rails7の理念に合っていないので不採用です。正直できれば自前でログイン機能を実装するのが一番ですが、なんとしてもdeviseを使いたい場合もあると思います。皆様の参考になれればいいなと思います。

rails7からの変更点はこちらの方がうまくまとめてくれていますので、何が変わったのかを詳しく知りたい方はぜ

元記事を表示

[初心者向け] ポートフォリオに愛犬管理アプリを作ってみた話 [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

元記事を表示

[Ruby]Google Calendar APIで終日のイベントを登録する

Google Calendar APIを使ってイベントを登録するときに、開始時間と終了時間が決まっているイベントと終日のイベントを登録するときで指定方法が異なりました。
サンプルはRubyですが、他の言語も似たような感じかなと思います。

公式ドキュメントはこちら
https://googleapis.dev/ruby/google-api-client/latest/Google/Apis/CalendarV3/EventDateTime.html

# 時間までキッチリ指定する場合
`date_time:`パラメーターに日時を指定してあげればOKですね。

“`ruby
start_at = Time.new(2022, 10, 1, 9, 0, 0)
Google::Apis::CalendarV3::Event.new(
start: Google::Apis::CalendarV3::EventDateTime.new(date_time: start_at.rfc3339),
end: Google::Apis::CalendarV3::EventDate

元記事を表示

【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エンジニア全然いない。

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

|                                       

Python,Ruby,PHP,Java,JavaScript,Perlの文法・構文の比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,Perlの文法・構文の比較

# Python

https://qiita.com/Fendo181/items/a934e4f94021115efb2e

# Ruby

https://qiita.com/Fendo181/items/eb2cb17f32d99aa01f59

# PHP

https://qiita.com/7968/items/d739e926189e219273bd

# Java

https://qiita.com/tomonori_hioki/items/cec47a366208d43d7339

# JavaScript

https://qiita.com/Fendo181/items/cca476da99e8f09b6b97

# Perl

https://perlzemi.com/blog/2

Rails7においてページをリロードしないとjavascriptが動かない

# はじめに
現在Rails7でアプリケーションを開発している。
javascriptでタブと画像プレビューを実装したが、ページをリロードしないとjavascriptが動かない問題に直面した。
いろいろ検索しているとturbolinksが原因であるということは分かった。
解決方法はいくつか見つかるがどれを試してもなかなか解決しなかったため、備忘録として投稿。

## Qiitaの記事などでよく見られた解決策
### 1.link_to ごとにturbolinksを無効にする
“`html.erb
<%= link_to "hoge", root_path, data: {"turbolinks" => false} %>
“`

### 2.jsファイルに”turbolinks:load”を記述する
“` .js
document.addEventListener(“turbolinks:load”, function() {
//略
})
“`
この二つの解決方法が多く見つかった。
実際に試してみるがどちらも解決に至らず、2に至ってはリロードしても動作しなくなってしま