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

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

Rails7 devise_token_authエラー

### エラー内容
“`
gem ‘devise’
gem ‘devise_token_auth’
“`
Gemfileに上記の2つを追加して
“`
$ bundle
“`
を実行すると
“`
Fetching gem metadata from https://rubygems.org/………
Resolving dependencies….
Bundler could not find compatible versions for gem “rails”:
In snapshot (Gemfile.lock):
rails (= 7.0.3.1)

In Gemfile:
rails (~> 7.0.3, >= 7.0.3.1)

devise_token_auth was resolved to 0.1.21.alpha2, which depends on
rails (~> 4.1.4)

Running `bundle update` will rebuild your snapshot from sc

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlの例外処理の比較

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

Python,Ruby,PHP,Java,JavaScript,Perlの例外処理の比較

# Python

https://qiita.com/imuimu/items/7f27d156dd0f6507803b

# Ruby

https://qiita.com/k-penguin-sato/items/1a6c8096effccb19565a

# PHP

https://qiita.com/wakahara3/items/bcadef53367097765c82

# Java

https://qiita.com/ts7i/items/d7f6c1cd5a14e55943d4

# JavaScript

https://qiita.com/andota05/items/fc1e340642be42ca47c0

# Perl

https://perlzemi.com/blog/201

元記事を表示

【Ruby on Rails】devise_invitableを使った招待機能実装編 【初心者向け】

# 本記事の内容
[初心者向け] ポートフォリオに愛犬管理アプリを作ってみた話[Ruby on Rails]の付属記事です。
ご覧になっていない方は、[こちら](https://qiita.com/tak8_al/items/08274dd9228363642555)からご覧ください。

devise_invitableの使い方だけ知りたい!という方は、このままご覧ください。
当記事は、Deviseの実装は一通り終わっていてサインインもサインアップも実装できている前提です。
まだ行っていない方は、[こちら](https://qiita.com/tak8_al/items/265b080674456398d56e)をまずはご覧ください。

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

# 導入手順
* devise_invitableの導入
* 招待用のカラムの追加
* 招待ページの生成
* ユーザー名の追加
* routing設定
* 導入確認

順にやっていきます

# devise_invi

元記事を表示

[Ruby on Rails]deviseを使用したログイン機能実装 [初心者向け]

# 本記事の内容

[初心者向け] ポートフォリオに愛犬管理アプリを作ってみた話 [Ruby on Rails]へのdevise導入編になります。
ご覧になっていない方は、[こちら](https://qiita.com/tak8_al/items/08274dd9228363642555)からご覧ください。

deviseの使い方が知りたい方は、この記事で完結させますので、このままご覧ください。
CRUD機能を持ったアプリケーション実装済みの方を対象にしていますので、まだの方は実装してから、ご覧ください。

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

# 本記事での実装機能
* deviseの導入
* 新規登録時に名前を入力できるようにする
* ユーザー画面作成

# deviseの導入
deviseを導入するにあたって、やる工程は4つです。
①Gemfileに追記
②deviseの設定ファイルの作成
③Userモデルの作成

順に説明していきます。

## ①Gemfileに追記
早速アプリ

元記事を表示

今一度、再認識しておこう、””と”の違い

## 環境
Ruby 2.6

## はじめに
文字列を囲む時、ダブルクォーテーションで囲む場合と、シングルコーテーションで囲む場合とがあります。基本的な使い方をする分には、どっちを使ってもいいし、どっちを使っても同じです。個人的には、ダブルクォーテーションをひいきしてよく使っています。しかし、時々ありがちなことがあります。ネット上からサンプルコードをコピペして引用したときのことです。サンプルコードにシングルコーテーションが使われていて、気にせずに、そのまま利用し続けるようなことがあります。なぜ、ダブルクォーテーションに置換しなかったのかと言えば、特に理由はありません。本当になんとなくだけです。しかし、シングルコーテーションを残しておいたことで、あるとき、思わぬところで、変な挙動を見かけてしまうことがあります。「あれ? メッセージ名に変数が含まれている。」

そこで、ダブルクォーテーションとシングルコーテーションの違いについて、今一度、再確認しておきましょう。

## その1
単に、文字列だけを扱う場合であれば、ダブルクォーテーションでも、シングルコーテーションでも、どっちを使っても同

元記事を表示

therubyracer と libv8 と libv8-node

## これはなに

Rails で開発されているプロダクトで [libv8] が使われており違いや浅く歴史について調べたので簡単にまとめました

## TL;DR

– [therubyracer] と [libv8] と [libv8-node] すべて JavaScript Engine V8 を実行バイナリである
– 最初は [therubyracer] が開発されていたが、 実行環境の差分追従などが困難になり [libv8] の開発を開始、その後再び困難になったことから [libv8-node] の開発が行われている
– 現在は [libv8-node] を使うことが望ましい

## therubyracer について

[therubyracer] は JavaScript Engine V8 実行を行う binary を提供している Gem です

https://github.com/rubyjs/therubyracer

https://rubygems.org/gems/therubyracer

2018 年を最後に更新されておらず、 未対応の Platform

元記事を表示

devise実装手順

## 毎回devise導入時コマンド忘れるので書き残しておく。
以下のコマンドは一貫して行う。

“`ruby:Gemfile
gem ‘devise’
bundle
“`
“`ruby:ターミナル
$ rails generate devise:install
$ rails generate devise user // モデル

その後、何かカラムを追加してから
$ rails db:migrate
$ rails generate devise:views
“`

元記事を表示

Formオブジェクトのedit定義

例えばitemsテーブルとtagsテーブルの2つを合わせたFormオブジェクトがあったとしたら、それを編集するためのeditアクションは下記のようになる。

“`items_controller.rb
def edit
@item = Item.find(params[:id])
@tag = @item.tag
item_attributes = @item.attributes
tag_attributes = @tag.attributes
item_tag = item_attributes.merge(tag_attributes)
@item_tag = item_tag.new(item_tag)
end
“`
attributesメソッドでそれぞれの値をハッシュとして取り出し、それらをmergeメソッドでハッシュを結合することで、編集したいitem_tagの情報を取り出すことができる。

元記事を表示

【初学者向け】Rails(ActiveRecord)でselfの理解を深める – インスタンスメソッド クラスメソッド –

# はじめに
本記事は、著者自身のクラスに対する理解を深めるために
例を用いてクラスについて解説していく記事となります!

# 対象の読者像
・Railsでselfの使い方がイマイチ掴めていない方
・Rails触ったことあるけどselfの理解が曖昧な方

# 基本事項
“`ruby:example.rb
class Example
attr_accessor :name

def initialize(name)
@name = name
end

def self.ikemen
self.name
end

def busamen
self.name
end

end
“`
さて、問題です!

## 問1
クラスメソッドはどれのことを指すでしょうか?

答え

“`rb
def self.ikemen
self.name
end
“`

## 問2
問1のクラスメソッドはどのように呼び出すでしょうか?

元記事を表示

deviseの遷移先の指定はどうするか

## application_controller.rbへ記述する
“`
def after_sign_in_path_for(resource)
user_path // ユーザー詳細画面に遷移
end

def after_sign_up_path_for(resource)
user_path // ユーザー詳細画面に遷移
end

def after_sign_out_path_for(resource)
new_user_session_path // ログイン画面に遷移
end
“`

application_controller.rbに上記のような記述をするだけで、deviseで新規登録した後の遷移先、ログインした後の遷移先、ログアウトした後の遷移先を指定できる。

元記事を表示

[Rails SQL] Cannot delete or update a parent row: a foreign key constraint fails の解決法

## 前提
progamesテーブルとchatroomsテーブルが1対1の関係。(progamesテーブルがchatroomsテーブルを持っている。)

## 発生しているエラー
SQL文のdeleteメソッドでpro_gamesテーブルのレコードを全て削除しようとすると以下のエラーが発生。
“`
Cannot delete or update a parent row: a foreign key constraint fails
“`

## 解決
先に親を消しているのが原因。子を先に消しておくとうまくいく。
(今回の場合だとchatroomsテーブルから消しておく。)
## なぜ親からだと削除できない??
モデルに`dependent: :destroy`を書いているのになぜ削除できない??
“`ruby
class ProGame < ApplicationRecord has_one :chatroom, dependent: :destroy end ``` ## 原因発覚 SQL文で削除しようとしたことが原因。 ```ruby resources :pro_g

元記事を表示

【初学者向け】classの概念を無視してメソッドのみで全自動化した結果

# 執筆経緯

本格的にプログラミングを学ぶきっかけになった
独学で作成した下記の販売管理システムを元に
classの概念を無視するとエグいコードになるという知見を共有するために執筆します。

[化粧品販売システム](https://motoya-portfolio.com/cosme-system/)
[Github](https://github.com/motoya0118/cosme_system_public)

:::note alert
筆者は独学時代classの概念は完全に無視して実装しておりました
:::

# 対象の読者像
・class使わなくても実装できるからとclassを無視して実装している方
・class使う意義がわからない方
・classを使わないとどうなるかホラー話を聞きたい方www

# メール機能の失敗談
## 導入
作成した販売管理システムのメール送付機能は下記の図のように
・AM11時に起動するプログラム内に2機能(注文承諾・手配遅延)
・PM8時に起動するプログラム内に2機能(発送通知・レビュー依頼)
を実装しております。

![Screen S

元記事を表示

実行中の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

元記事を表示

OTHERカテゴリの最新記事