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

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

100日後くらいに個人開発するぞ!day069

## 今日は投稿一覧ページを作成してみた!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2632394/01209a0d-70fa-f246-dc78-eb94f56d3161.png)

## 今日のアウトプット

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2632394/ae1876d3-686f-1272-f6a0-83367654ee1d.png)

## 今日の学び
### データベースと投稿一覧ページ
* データベースとはデータを保存しておく場所のこと
* 投稿一覧ページではデータベースから投稿を取り出し1つずつ表示する
* 一覧ページの作成にはindexというアクション名を使用することが一般的

### コントローラの作成
* 新しくコントローラを作成する際は`rails generate controller コントローラ名 アクション名`というコマンドで作成を実

元記事を表示

throughを使ってアソシエーションをスッキリさせる!!

## はじめに
フォロー機能を実装したらthroughこの文言が出てきたので色々調べてみた。
今回は前に実装していた、いいねした投稿一覧をthroughを使ってスッキリさせていこうと思う。
割と丁寧に解説したと思うので、少しでも参考になれば幸いです。

### 使用する環境
– MacOS(Intel)
– Rails 6.0.3
– Ruby 2.6.3
– yarn 1.22.17
– Homebrew 3.5.0

## まず結論から

まずUserモデルの編集
Before
“`user.rb
has_many :posts, dependent: :destroy
has_many :favorites, dependent: :destroy
“`

After
“`user.rb
has_many :posts, dependent: :destroy
has_many :favorites, dependent: :destroy
has_many :likes, through: :favorites, source: :post # 追加
“`

Befo

元記事を表示

複数枚画像のスライド機能実装(carrierwaveとswiper使用)

## スライド機能実装する時に参考になるサイトはこちらです。
#### ❶carrierwaveとswiperに関してはこちらから参照下さい。
##### とてもわかりやすくまとまってます!

https://o6ga2wa8.hateblo.jp/entry/2021/09/20/135233

#### ❷完成イメージはこちらのサイトで確認できます。
##### アレンジを加えれるので、オススメです!

【実装例あり】スライダーSwiper.jsの基本的な使い方、機能解説

###### ❶の記事を見ながら『carrierwaveとswiper』を適用させた状態でざっくりと自分で適用できた記述を紹介します。

##### 1.dbにカラム追記
“`php:postに
create_table “posts”, force: :cascade do |t|
t.integer “user_id”, null: false
t.string “title”, null: false
~~~{省略}~~~
t.json “image

元記事を表示

PyCallを使ってRubyからPythonを実行する

# 実現したいこと
RubyでPythonのライブラリを使いたい

# 手順
## 1. pyenvを使ってる場合
“`shell
env PYTHON_CONFIGURE_OPTS=’–enable-shared’ pyenv install 3.9.12
“`

https://pip.pypa.io/en/stable/cli/pip_install/#install-find-links

## 2. 必要なライブラリがあればインストール
“`shell
pip install package
“`
または
“`shell
pip install requirements.txt
“`

## 3. Pycallを追加
“`ruby
gem ‘pycall’
“`
“`shell
bundle install
“`

または
“`shell
gem install pycall
“`

https://github.com/mrkn/pycall.rb/#installation

## 4. PyCallをロード
“`ruby
require ‘p

元記事を表示

AHC(AtCoder Heuristic Contest)で、手元で100テストケースを自動で試す(Linux)

# はじめに
[まぐげんがー](https://atcoder.jp/users/gengar_094?contestType=heuristic)です。AtCoderのHeuristicレーティングは水色です。
この記事は、AHCにおいて、手元でテストケースをたくさん試したい人に向けての記事になっています。
時間がないという方は「どのように多くのテストケースを試すか」と「(想定される)Q&A」だけ読めば大丈夫です。

# なぜテストケースをたくさん試したいか
AHC(AtCoder Heuristic Contestの略。最適解を出すのが難しい問題に対し、出来るだけ良い解を作成するコンテストです。)では、多くのテストケースでその回答がジャッジされます。さて、AHCにおいて、私たち(クソデカ主語)はなぜテストケースをたくさん試したいのか。
ここで、皆さんにAHCあるあるを2つ見ていただきたいと思います。
### あるある1
ぼく「よし!手元で10ケース試した感じスコア上がりそうだから提出するぞ〜」
〜提出 WJ 26/50〜
ぼく「い

元記事を表示

ruby on rails を AWS Cloud9で実施 6 QandAサイト作成 新たなテーブル作成

https://qiita.com/TaichiEndoh/items/35294ff656499d9bbf8d

https://qiita.com/TaichiEndoh/items/9c19319df04a279403a3

https://qiita.com/TaichiEndoh/items/057d35eff8cadbd434ba

https://qiita.com/TaichiEndoh/items/522e956d569e5bbd7b8d

https://qiita.com/TaichiEndoh/items/809d7e94195265c0a201

# 前回の続きでQandAサイト作成 今回は新たなテーブルを作成するところから始めます
### 今回は前回の投稿テーブルに紐づくテーブルを作成します!

環境 AWS Cloud9
environment type EC2
instance type t2.micro
platform ubuntu server 18.04 LTS

## モデル作成

Rails が提供するModelは、
原則としてデータベース

元記事を表示

【動画付き】外部APIに依存するRailsアプリケーションの設計とテストの書き方

## この記事は何?
DBにデータが保存されているのではなく、外部APIから取得したデータをあたかもDBから取得したデータのように扱うRailsアプリケーションを作る場合の、設計やテストの書き方を紹介する記事です。

詳しい内容は動画で解説しているので以下の動画をチェックしてください。

また、この記事で使ったサンプルコードはこちらにあります。

https://github.com/JunichiIto/api-agent-sandbox

この記事では上の動画の簡単な概要を記述します。

#

元記事を表示

Ruby on RailsとFirebaseを連携させる際にdotenvを用いて秘密鍵の情報を隠す方法

## 環境
* Rails 7.0.3
* Ruby 3.0.1

## 参考元

今回の記事を作成するにあったって以下のサイトを参考にしました。
[主にこちらを参考にしました。](https://zenn.dev/mochiblock/articles/96b6762011b6f9)
[ファイルを使わない方法(Google Cloudのドキュメント)](https://googleapis-dev.translate.goog/ruby/google-cloud-firestore/latest/Google/Cloud/Firestore.html?_x_tr_sl=en&_x_tr_tl=ja&_x_tr_hl=ja&_x_tr_pto=wapp#new-class_method)
[dotenv内に改行コードを挿入する方法](https://tech.quartetcom.co.jp/2018/09/06/symfony-dotenv-values-including-newlines/)(秘密鍵に改行コードが含まれているので)

## 本題
__「〇〇の部分まで参考記事を見て

元記事を表示

Full_Calendar実装

### 実現できること
FullCalendarにてカレンダーを実装し、非同期にて予定を作成、変更、削除ができます。

### 前提条件
環境
ruby : 2.6.3
rails : 6.1.6
fullcalendar : 5.1.1
webpacker : 4.0.7

### 導入
“`
yarn add @fullcalendar/core @fullcalendar/interaction @fullcalendar/daygrid @fullcalendar/timegrid @fullcalendar/google-calendar
“`

### モデルを作成
“`
rails g model Event title:string, start:datetime, end:datetime
“`

### controllerを作成
“`
rails g controller events index
“`

### routing
“`
resources :events
“`

### controller
“`events_controller

元記事を表示

ruby の pack template 文字列の表

# これは何?

ruby の pack template 文字列を覚えられないので毎回調べるんだけど、マニュアルの記載は一覧性がないし使わないのも混ざっていて不便(私にとって不便ということで、マニュアルとして悪いわけではない)なので、まとめてみた。

私が使うやつしか書かないのであしからず。

# 整数

まあ 8bit はエンディアン関係ないけど。

|エンディアン|符号|8bit|16bit|32bit|64bit|
|:–|:–|:–|:–|:–|:–|
|LE (Intel)|signed|`c`|`s<`|`l<`|`q<`| |LE (Intel)|unsigned|`C`|`v`|`V`|`Q<`| |BE (Motorola)|signed|`c`|`s>`|`l>`|`q>`|
|BE (Motorola)|unsigned|`C`|`n`|`N`|`Q>`|

`v` や `N` などを使わなければ

* 8bit から順に `C`, `S`, `L`, `Q`。
* 小文字は signed、大文字は unsigned。
* エンディアンは `<`

元記事を表示

DockerでRails環境を構築する(Compose V2対応)

## なんでわざわざ書いたか

DockerでRails環境を構築する記事のほとんどが(更新日が新しかったとしても)Compose V2に対応していないものとなっており、見た人がそれを再生産しまくっているせいで誰もCompose V2に対応した書き方をしてくれないため。

一応今は動くけど、非推奨になってるものもあるので早めに新しい書き方に移行しようという話です。

## 既存のRailsアプリをDocker化する時

“`dockerfile:Dockerfile
# Rubyは使っているバージョンに合わせる
FROM ruby:3.1.2
RUN apt-get update && apt-get install -y nodejs npm && npm i -g yarn # Rails6用(Rails7では不要)

WORKDIR /app

COPY Gemfile Gemfile.lock ./
RUN bundle
COPY . .

ENTRYPOINT [“bash”, “/app/entrypoint.sh”]

CMD [“rails”, “s”, “-b”,

元記事を表示

本番環境でサーバーを立ち上げてもエラー画面しか出なかったのを解消した

## この画面が表示された
デプロイはできたようだが、サーバーを立ち上げてみると以下のような画面しか映し出されずうんともすんとも言わなかった。
![スクリーンショット 2022-08-11 11.44.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2759696/d096725e-f156-ae8c-d6b9-130074f2fc42.png)

## 原因
①/config/enironments/production.rbの設定ができていなかった。
②Bootstrapのバージョンが高すぎた。
 →こちらの解決方法は以下の記事で確認できます。
https://qiita.com/kkarimata/items/796a4b3fe5710ed1a699

## エラーログを表示させてみる
“`
[ec2-user@ip-xxx-xx-xx-xxx “アプリ名”]$ sudo tail -f log/production.log
“`
そうすると、コンパイルに失敗している時に出る以下のような

元記事を表示

本番環境でBootstrapが反映されない時に解決した方法

## デプロイはできたが…
本番環境にデプロイすることはできたが、Bootstrapだけが反映されてない、、という不具合をなんとか解消できた話です。

## 原因
恐らく、Bootstrapの最新版を使っていたための不具合でした。

## なぜ最新版だと不具合が生じるの??
色々なものが日々アップデートされていますが、それらは全ての環境下で挙動を確認されているか、というとそうではないからです。
そのため、最新版を使っていればいい、というものではなく常にその時の安定版というものがありますので安定版を使うようにしましょう。

## 公式ドキュメントには…

公式ドキュメントには、Bootstrap5.2.0(最新)が安定版となりました!というブログが掲載されています。
これで動くはずだ!と思ってしまいますが、先輩エンジニアさんの方々の意見をしっかり聞くようにしましょう?

https://blog.getbootstrap.com/

![スクリーンショット 2022-08-11 11.10.16.png](https://qiita-image-store.s3.ap-northeast

元記事を表示

Rails クラスメソッドとscopeっていったい何が違うのよ!

# はじめに
駆け出しエンジニアの私にとって実務のコードはメソッドだらけでなかなか読み進めることが難しいです。
メソッドに出くわしたら、検索して書かれている場所を特定してアルゴリズムを理解して、また次の行へ・・・
そんな中次のようなメソッドがあり、コードの内で検索をかけるのですが、なぜかメソッドが見つからないことがありました。
~~~ ruby
モデル名.hoge
~~~
メソッドといえば
~~~ ruby
def hoge

end
~~~
この形が一般的です。
ですが、探してもどこにも見つかりません。
ただmodelにこんな記述がありました。
~~~ ruby
scope :hoge, -> { where.not(category_id: 3)}
~~~

どういうことだ・・・。このhogeは実はメソッドではいのか・・・?
scopeってなんだ・・・と思い、調べてみることにしました。
その内容を備忘録として残したいと思います。
もしも、おかしな点や間違いがありましたら、教えていただけると幸いです!

# 環境(自分のPC)
Ruby 2.7.1
Rails 6.0.5

#

元記事を表示

AWS cloud9でRubyのバージョンのアップデートをする

## Cloud9のRubyのバージョンを変更したい!!
自作アプリを作成していて、デプロイ時にRubyのバージョンが古いままだったので、本番環境のみでRubyのバージョンの変更をおこなっていましたが、開発環境でもバージョンを揃えたいなと思って色々苦戦したので忘備録として記事にしました。

## Cloud9のデフォルト
私がCloud9を使い始めてからのデフォルトのRubyバージョンは2.6.3でした。
これを、最新の安定バージョン3.1.2(2022/8/10現在)にしたい!!
ちなみに、最新の安定バージョンは以下で確認できます。
https://www.ruby-lang.org/ja/downloads/
![スクリーンショット 2022-08-10 22.27.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2759696/89e3537d-c31c-787c-2ac6-227c3be70652.png)

## それでは、やっていこう!!
#### rvmの最新の安定バージョンをインスト

元記事を表示

Ruby技術者認定試験 Silver 合格しましたが。

## 概要
Ruby技術者認定試験 Silver version 2.1 に合格しました。
ですが得点は80点で勉強時間をしっかり取った割にはぎりぎりでした。
これから試験を受ける方の役に立てばと思います。
## 過去問周回を特に頑張った人向け
過去問を解くのは点数が上がっていくのが楽しいですし
勉強方法としてシンプルなので楽ですが程々にした方が良いと思います。
点数を取るためだけの勉強になりがちなので、
間違えた部分に関してはテキストなりwebの記事を読む。
また公式リファレンスのメソッド一覧等を眺めて見た事が無いメソッドの
ページを読んで引数の確認などをした方が良いと思います。

それでも自分は過去問(Rex、ミニツク、対策問題集、模擬問題)
に時間を費やし過ぎてしまいました。
その上で解けずに失点したかも知れない問題を似た様な形式で残しておきます。
## web過去問で対策したが解けなかった問題

“`Ruby
# 次のコードを実行するとどうなりますか
p “6B12”.to_i
“`
– 12
– 6
– 61112
– 612
– エラーが発生する

数字以外が入っている

元記事を表示

【個人開発】楽しみながら滑舌を鍛えることができるWebアプリ『早口言葉選手権』をリリースしました⚾?

![hayakuchi-championship-toppage.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2381497/cefba2f6-d185-5122-7c6a-eebd68b5a378.png)

若い方からお年寄りまで、スコアを競いながら楽しく滑舌を改善できる、早口言葉採点サービスをリリースしました。

▼サービスURL
https://hayakuchi-championship.com/
▼GitHub
https://github.com/tomo-kn/hayakuchi-championship
▼Twitterアカウント

※使用しているAPIの都合上、このサービスは現在、**PCまたはAndroid端末のChromeブラウザ**でのみプレイ可能です。

# はじめに
こんにちは![駆け出しエンジニアのとも](https://twitter.com/tomokn5)と申します。
突然ですが、皆さんは自身の滑舌や話し方に

元記事を表示

ENVの意味がわからなかったけど調べたら簡単だった。

はじめに

githubで有名なgemのコードを読んでみると、全く知らない文字列が羅列していて、そもそもどんな風にコードを読めばいいかわからないと言うことを何度も経験しました。
プログラミングを始めたばかりは(まだまだ初学者ですが。。)わからないものが羅列していると何が何やら訳が分からなくなり、単純に恐くて手をつけたくないと思ってしまっていました。
でも一つ一つの単語を調べて理解が少しできると怖さが激減するんだな、ということを経験の中で知ることができました。

少しでも疑問に感じたことはそのままにせず調べて、備忘録としてアウトプットをしていこうと思います。

ENV.fetch(“~”)の文字列が怖かった

現在ポートフォリオを作成している中で、twitter apiを使ってtwitterのアカウントでログインができる機能を実装しています。

その機能のためにネットの記事を参考にしていた際に、下記のコードが出てきました。
~~~
ENV.fetch(“TWITTER_KEY”)
~~~
いつもコードを書くときは大抵小文字なのに、ENVは大文字と言うだけで少し怖っ、、と思ってしま

元記事を表示

Rails7でSvelteを使えるようにする

Rails7でSvelteを使う方法ってないのかな?と探していたんですが、全く見つからなかったので自分で試行錯誤した記録をここに記します。

やったことの軌跡がわかるようにPRを作ってありまして、基本このコミットの通りにやれば使えるようになるはず。

https://github.com/yuki-noguchi/svelte-rails7/pull/1

# 手順

## rails newする
このとき、`-J`や`-j`オプションをつけて、javascript関連のファイルは生成されないようにしたほうが良いかもです。
後述しますが、`vite_rails`を使用するので、生成されるjavascript関連のファイルが邪魔になるかもです。
自分は`–minimal`をつけちゃいました。

## ‘vite_rails’を追加する

Gemfileに以下を追記して、

“`
gem ‘vite_rails’
“`

bundle install実行。

“`shell
bundle install
“`

さらに、初期化コマンドを実行。

“`
bundle exec v

元記事を表示

【Rails】ActionMailerでお問合せフォームを作ろう!!

# はじめに
お問合せフォームをActionMailerを使って実装する方法を調べ、実装した。

**完成予想図**
以下のようなものを作る。
①お問合せフォームの作成
![スクリーンショット 2022-08-09 22.46.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2684787/b96d1935-4119-26e2-bcca-33416e39bbc6.png)
②確認画面の作成
![スクリーンショット 2022-08-09 22.46.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2684787/8b1bb9c0-bf79-b113-c6af-a7f32dfa9f32.png)
③送信後、ホームへリダイレクト
![スクリーンショット 2022-08-09 22.43.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0

元記事を表示

OTHERカテゴリの最新記事