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

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

rails newからgit pushまで(SSH接続)

# 目的

SSH接続で最初のPushをする方法のメモ

# やったこと
新しいアプリを作り、Pushしようと思ったらユーザー名とパスワードではできなかった…。
SSH接続だとできるらしいので、やる。

### railsアプリの作成
環境構築は一通り終わっているので
以下でrailsアプリを作成します。
“`shell:cmd
rails new test
“`

### リポジトリの作成

https://github.com/

上記から、リポジトリを作成します。
今回は、「test」という名前でリポジトリ名以外はデフォルトで作成しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/693325/589fd76c-1eed-e703-f024-8a3d82e5f619.png)

### SSH公開鍵の登録
以下のコマンドを入力してカギを作成します。
“`shell:cmd
ssh-keygen -t ed25519 -f .ssh/id_test -C ” “

元記事を表示

ruby.wasmの初期化シーケンス

[ruby.wasm](https://github.com/ruby/ruby.wasm)をブラウザで動かすためには次のJavaScriptを使って`ruby.wasm`を初期化します。

“`html

“`

上記のJavaScriptのソースコードは
https://github.com/ruby/ruby.wasm/blob/main/packages/npm-packages/ruby-wasm-wasi/src/browser.script.ts です。

## 初期化シーケンス

`browser.script.ts`で行っている初期化処理をシーケンス図にします。

“`mermaid
sequenceDiagram
Note over browser.script.ts: CRubyのWebAssemblyバイナリをダウンロード
バイナリを

元記事を表示

devise導入後ログアウトできないエラーの解決

deviseを導入してログアウトの時にcreated at に関するエラー文が出ていた。
migration fileに

“`ruby
## Recoverable
t.string :reset_password_token
t.datetime :reset_password_sent_at

## Rememberable
t.datetime :remember_created_at
“`

これを記述したら解決した。

元記事を表示

RSpecを実行するとWebdrivers::VersionErrorが発生する場合の対処方法

## 発生する問題

RSpecのテストを実行すると以下のようなエラーが発生する。

“`
Webdrivers::VersionError:
Unable to find latest point release version for 115.0.5790. You appear to be using a non-production version of Chrome. Please set `Webdrivers::Chromedriver.required_version = ` to a known chromedriver version: https://chromedriver.storage.googleapis.com/index.html
# ./spec/system/tasks_spec.rb:24:in `go_to_project’
# ./spec/system/tasks_spec.rb:14:in `block (2 levels) in


# —————–

元記事を表示

Ruby on Railsのエラー画面の読み方

## 自己紹介
はじめまして、はると申します!
現在はスクールに通いながら学習をしており、学習開始から4ヶ月が経過しました。
 
## 概要
Ruby on Railsでアプリ開発中に出会うエラー画面の基本的な読み方について、
調べたりChatGPTに相談しながら、勉強を兼ねてまとめたものをアウトプットしてみます。
初学者のため、間違っている箇所もあるかもしれませんのでその際は教えて頂けると嬉しいです?
(エラー例は、Ruby 3.1.3、Rails 7.0.5で作成した学習時間を記録するアプリで、記事のために意図的に起こしたものです)
 
## エラー画面の見方 例①NoMethodError
![6c5c3b7e63d012d172f585deeee8bd19.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3471604/8a1c7c9e-1f75-92a8-27c0-004a9ec079c1.jpeg)
 
項目の上から順に意味を確認していきます。
 
#### エラータイトル
`NoM

元記事を表示

[Rails]仮想カラムをもちいて、ソート機能を実装する

## はじめに
#### 実装したこと
PFでコミュニティサイトを作成しており、投稿一覧にソート機能を実装しようとしております。「いいねが多い順」のソート機能の実装が思ったより難しかったのでアウトプットのため、記事に残します。

#### 動作環境
Ruby 3.1.2
Rails 6.1.7.3

## 手順
#### モデルとカラムの状態
~~~shema.rb
create_table “contents”, force: :cascade do |t|
t.string “title”, null: false
t.text “text”
t.datetime “created_at”, precision: 6, null: false
t.datetime “updated_at”, precision: 6, null: false
end

create_table “favorites”, force: :cascade do |t|
t.integer “content_id”
t.datetime “cr

元記事を表示

ElastiCache for RedisのClusterモード(暗号化)への接続方法 Rails編

# はじめに
AWSでRedis(クラスターモードかつ暗号化)を作成した際、
接続が止まった状態でエラーログも何も出ない。。
ということで何に気を付ければいいか書いていく

## サーバー内接続確認

まずは接続コマンドを入力する。
注意点として
`-c` クラスターモードON
`–tls` 暗号化転送ON
このオプションがないと延々と接続待ちになるので注意
“`
$ redis-cli -h [エンドポイント] -p [ポート番号] -c –tls
“`

ただし、自身のredis-cliの`4.0.10`をインストールしていたが、redis-cliのオプションである`–tls`が使えなかった(ここで詰まった)
“`
Unrecognized option or bad number of args for: ‘–tls’
“`

なのでバージョン6をインストールする
“`
$ sudo amazon-linux-extras install redis6
“`

接続確認して完了
“`
# キー”mykey”に値”Hello, Redis!”をセットする
xx

元記事を表示

異なるOS間でのGemfile.lockの競合を解決する方法

## はじめに

オリジナルプロダクト(ポートフォリオ)のデプロイに向けて、最新のソースコードをAWS EC2に反映させようとしたところ、`Gemfile.lock` の競合が発生しました。
その原因と解決方法についてまとめました。

### 開発環境

– ローカルマシン
– OS:macOS Ventura
– AWS EC2
– OS:Amazon Linux 2
– 共通
– Ruby:3.2.2
– Rails:7.0.6
– Bundler:2.4.13

## エラーメッセージ

EC2 に`git pull`で最新のソースコードを反映させようとしたところ、以下のエラーメッセージが表示されました。

“`
error: Your local changes to the following files would be overwritten by merge:
Gemfile.lock
Please commit your changes or stash them before you merge.
“`

「次のフ

元記事を表示

Railsのルーティング: resources と resource の違いとメリット

# はじめに
Ruby on Railsのルーティングには、`resources`と`resource`の二つの非常に便利なメソッドがあります。これらはRESTfulなルーティングを自動的に生成し、それぞれのコントローラアクションへのパスを簡単に作成することができます。

### resources
`resources`メソッドは、指定したリソースに対する標準的なRESTfulルーティングを自動的に生成します。

例えば、config/routes.rbに以下のように記述すると、
“`ruby routes.rb
resources :users
“`

`UsersController`のアクションに対応した7つのルーティング(index, show, new, edit, create, update, destroy)が自動的に生成されます。また、これらのルーティングに対応したパスヘルパーメソッドも自動的に提供されます。

### resource
`resource`メソッドは、`resources`と同様にルーティングを自動生成しますが、こちらは単数形リソースを表現しま

元記事を表示

rbenv install –listで最新版Rubyが表示されないときの対処法(Mac版)

# はじめに
### パッケージマネージャー(この記事ではHomebrew)を使用してrbenvをインストールした場合、パッケージマネージャーを使用してアップグレードしましょう。間違ってもGitHubからクローンしてくるやり方との併用は避けてください!! 
– `git clone`と併用してしまった場合
自分の場合、`Homebrew`と`git clone`を併用して`rbenv`をインストールしてしまったため問題が発生し、結果的に`rbenv`をアンインストール→インストールすることになりました。この記事はその経緯を書いた記事です。

– `git clone`と併用してない場合
`rbenv`と`ruby-build`を`Homebrew`でアップグレードしたにも関わらずリストに表示されない場合、`rbenv`のセットアップに何かしらの問題が発生してる可能性があるので`rbenv-doctor`を実行してみてましょう。エラーメッセージに従い対処すれば解決できると思います。本記事は`git clone`と併用してしまった人向けに書いた記事です。
“`
$ curl -fsSL

元記事を表示

Docker ComposeでRailsアプリ(Rails6.0.6/Ruby3.0.2 + PostgreSQL環境)をdocker化する

# はじめに
今回は既存のrailsアプリケーション環境をdocker化したので、そちらについてまとめていきます。dockerイメージの軽量化のためマルチステージビルドを採用しています。

# マルチステージビルドについて
**マルチステージビルド**とは、複数のイメージを用いたビルド方法のことです。何やら難しそうに聞こえますが、内容としてはシンプルです。
+ `FROM` を複数用意してそれぞれに名前を付ける(これが「**ステージ**」になります)
+ 各ステージは独立した一時的なイメージとして扱い、最終ステージだけが最終的な出力イメージとして保存される
+ 後のステージから前のステージを `–from` を使って参照でき、前のステージからファイルをコピーできる

マルチステージビルドを用いることで、**一つのDockerfileで複数のイメージをビルド**することができます。要は**Dockerイメージのビルドを効率的で、最適化されたものにするためのテクニック**です。

マルチステージビルドを使用する大きな目的は以下の2つになります
+ Dockerfileを読みやすく保守し

元記事を表示

Lambdaで「libcrypt.so.1: cannot open shared object file: No such file or directory」を解消

# はじめに

今回の記事は、Ruby3.2でLambdaを使用しようとしたときに、「/var/lang/bin/ruby: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory」というエラーが出たので、なんとか解消できたときのお話です。もしかしたらRubyでも[こちら(Pythonです)](https://github.com/keithrozario/Klayers)のように、出来上がったレイヤーを配布しているかもしれませんので、お時間ある方は探してみてください。

# なぜエラーがでたのか?

Lambdaでは最近Rubyの3.2のランタイムが提供されるようになりました。しかし、Rubyのランタイムが依存しているLinux依存のライブラリまでは網羅されていないため、見つけることができずタイトルにあるエラーが出てしまいました。

# どのように解消したのか?

別の環境でライブラリをLambdaのレイヤーとして作成し

元記事を表示

【Ruby】frozen_string_literal: trueとは?

Ruby on Railsでのコーディングの際、`frozen_string_literal: true`というコードが先頭に実装されている場面をよく見かけ、なんだろう?と思い調べてみました。

備忘録としてこちらに残しておきます。

# コード
“`ruby:ruby
frozen_string_literal: true
“`

# frozen_string_literal: trueって何?
– このコード`frozen_string_literal: true`は、Rubyファイルの先頭に書かれるマジックコメントの一つである。
– このマジックコメントがあると、そのファイル内で定義された文字列リテラル(`” “`や`’ ‘`で囲まれた文字列)は全て凍結される。つまり、それらの文字列は不変になり、後から変更できなくなる。
– なぜこんなことをするのかというと、処理の高速化やメモリの節約につながるから。文字列の変更が頻繁に行われると、その都度新しい文字列オブジェクトが生成されてメモリを消費する。しかし、文字列を凍結してしまえば、その心配がなくなる。

# その他、参考にな

元記事を表示

Webhookを活用したMicrosoft Teamsへのメッセージ投稿方法

## はじめに
今回の記事ではWebhookを用いたMicrosoft Teamsへのメッセージ投稿の方法について記述する。
## Webhookとは
Webhookとは、あるシステムに何か特定のイベントが起きた時にサーバーからクライアントに通知するための手法の一つ。APIはユーザーからのリクエストに基づいて情報を提供するのに対し、Webhookは特定のイベントが発生した際に自動的に情報を送信する。

## Microsoft TeamsでWebhookを設定する
– Teamsアプリの右上の三点リーダーをクリック
![](https://github.com/junpei314/Apprentice/blob/main/blog/Webhook1.png?raw=true)
– コネクタをクリック
![](https://github.com/junpei314/Apprentice/blob/main/blog/Webhook2.png?raw=true)
– Incoming Webhookを追加する
![](https://github.com/junpei314/Appren

元記事を表示

Tailwind CSSでフッターを固定する

## はじめに
こんにちは、エンジニア転職を目指してRailsを学習中のチータです!?
現在、ポートフォリオを作成中で、CSSのフレームワークにTailwindを使用しています。
そこで、コンテンツ量の少ないページ(ログインなど)を作成していた際に、フッターが下部に固定されず、フッターの下に余白ができて違和感を感じていました。

## どういう状況か?
今回はログイン画面で説明します。
修正する前のビューのコードとブラウザでの表示は以下のような状況です。
“`html:application.html.erb

.
.

<%= render 'shared/header' %>
<%= render 'shared/flash' %>

<%= yield %>

<%= render 'shared/footer' %>


“`
“`html: sessions/new.html.erb

元記事を表示

ransackで、パラメータに空白が含まれていても許可するよう設定する

# はじめに

Rails の gem で、ransack を使用時に、現状の仕様(v4.0.0)だと、パラメータの中に空白があったら自動的に削除されてしまいます。
それを空白があった場合でも許可するように設定する必要がありました。対処法を以下にまとめましたので、良ければご覧ください。

# 結論

`config/initializers/ransack.rb`に、`c.strip_whitespace = false`を追加すれば、空白も許可してくれるようになります。

“`ruby: config/initializers/ransack.rb
Ransack.configure do |c|
# Change whitespace stripping behaviour.
# Default is true
c.strip_whitespace = false ## 追加
end
“`

:::note warn
ディレクトリ構成は違う可能性がありますので、ご自身の構成に合わせて修正をお願いいたします。
:::

# なぜ c.strip_whitespace

元記事を表示

Rubyの将来性

# 目次
1. [Rubyとは](#Rubyとは)
1. [フレームワーク](#フレームワーク)
1. [Rubyのフレームワークの公開案件数](#Rubyのフレームワークの公開案件数)
1. [将来性](#将来性)
1. [「Rubyは将来性がない」と言われる理由](#「Rubyは将来性がない」と言われる理由)

# Rubyとは
1. [概要](#概要)

### 概要
1995年に一般公開されたオブジェクト指向スクリプト言語

https://qiita.com/Cookie_Iwate/items/44c8407e2f4a550fd313

# フレームワーク
## Ruby on Rails
「MVCアーキテクチャ」に基づいて構築されたフレームワーク
Twitter, クックパッドはRuby on Rails

#### メリット
Web開発向けのフレームワークとして設計されるため、Webアプリケーションを作るのに適している

#### デメリット
機能が多い為、実行速度が遅い
※そもそもRubyはインタープリタ方式である為、コンパイル方式の言語よりも実行速度が遅くなる

<

元記事を表示

Bootstrap|ハンバーガーメニューを作成する

Bootstrapを用いて、ハンバーガーメニューを作成する方法

## 1. メニューを作成

⭐️div要素に classと idを追加する
 collapse, navbar-collapse … ハンバーガーメニューで開く要素
 任意のid…ハンバーガーメニューで開く要素には任意のidを命名する

“`

“`

## 2.ハンバーガーメニュー部分を作成

⭐️解説
 button … ハンバーガーメニューは button要素

 navbar-toggler … ハンバーガーメニュー用のスタイル
 data-toggle=”col

元記事を表示

Rails | deviseのUserにnameを追加する方法

Ruby on Rails の Gemである deviseを利用し、
Userモデルに nameカラムを追加する方法。

# deviseのインストール

1️⃣ Gemfileに gem ‘devise’ を追記
2️⃣ bundle install コマンドを実行
3️⃣ rails g devise:install コマンドを実行

# deviseの Userに nameを追加

1️⃣ rails g devise User コマンドを実行
2️⃣ deviseのコントローラー自体は編集することができない。
  そのため、application_controller.rbを以下のように記載

“`php:app/controllers/application_controller.rb

class ApplicationController < ActionController::Base before_action :configure_permitted_parameters, if: :devise_controller? protected

元記事を表示

ルーティングのnamespaceとは??

Ruby on Railsを使ってアプリケーションを開発していると、namespaceという単語を耳にすることが多くあります。ここでは、特にルーティングのコンテキストでのnamespaceについて説明します。

# namespaceとは何か?
`namespace`とは、ルーティングを一定の範囲(名前空間)でグループ化するための方法です。これにより、同じコントローラー名やアクション名を異なる範囲で使い分けることができます。

##### `namespace`の基本的な使用法
例えば、管理者向けのページを作成する際には、namespaceを用いてadminという名前空間を作成します。
“`ruby :routes.rb
namespace :admin do
resources :users
end
“`

上記のようにルーティングを設定すると、`Admin::UsersController`が作成され、その中にあるアクションへのルーティングが設定されます。また、ビューも`app/views/admin/users`ディレクトリの下に作成します。

#### namespac

元記事を表示

OTHERカテゴリの最新記事