- 1. Rails7でtailwindcss-stimulus-componentsを使用したタブ化
- 2. [Docker]docker-composeでrailsアプリをコンテナ化する
- 3. 【Rails】O/Rマッピング時の中間テーブル、わかりにくかったので簡単に調べた。
- 4. 【Rails】StimulusでBootstrapのTooltipを動かす
- 5. An executable bug report for Action Cable
- 6. ranked-modelで既存のレコードに値を入れる際の注意点
- 7. acts_as_listとranked-modelの違い
- 8. Rspecの導入と単体テストコード
- 9. 投稿アプリ詳細表示機能 同じコードをまとめる
- 10. RailsのCORSで配列の環境変数を使うときの注意
- 11. 【Athena】重くなってきた読み込みを何とかしたい② パーティション射影を利用してみる
- 12. 【Athena】重くなってきたパーティション読み込みを何とかしたい① シンプルに読み込み対象のログを減らしてみた
- 13. VSCodeでrailsのログファイルを開くとカラーコードが制御文字で表示されるのを何とかする
- 14. ツイートを編集
- 15. 勉強会での小話6
- 16. 勉強会での小話5
- 17. ebayのカードカテゴリ商品のコンディション設定について
- 18. Rails RESTfulなルーティング
- 19. フレームワーク(Ruby on Rails)を触って出てきた横文字たちの正体とは?
- 20. 【Rails】assertとassert_predicateの違い
Rails7でtailwindcss-stimulus-componentsを使用したタブ化
# はじめに
個人開発のアプリ制作をしています。
調べながらの実装になるので、メモとして記載しています。※注意※
プログラミング学習中の初心者です。
記述に間違いがあれば、ご指摘いただけますと幸いです。# 環境
Mac M1
rails 7.0.7.2
ruby 3.2.0
Node.js 20.2.0
Yarn 1.22.19# やったこと
## ①tailwindcss-stimulus-componentsのインストール
“`
$ yarn add tailwindcss-stimulus-components
“`
npmを使用している場合は、下記でもインストール可能です。
“`
$ npm install tailwindcss-stimulus-components
“`
## ②importmapに記述を追加
下記コードを打つと、importmapにtailwindcss-stimulus-componentsが追加されます。
“`
$ bin/importmap pin tailwindcss-stimulus-components
“`
[Docker]docker-composeでrailsアプリをコンテナ化する
## はじめに
既存のrailsアプリをdocker,docker-composeを使用してコンテナ化する方法について解説します。
## 前提条件
– ローカル環境
“`
pc: m1 mac
os: Venture 13.3.1
“`
– 各種version
“`
Docker: 24.0.7
Docker Compose: v2.23.3
Ruby: 3.22
Rails: 7.0.6
PostgreSQL: 12.17
“`
– 必要知識
– 基本的なDockerの知識
– railsのコマンド## 手順
### プロジェクトをローカルにコピーする
※既にローカルにプロジェクトがある場合は[Dockerfileを用意する](Dockerfileを用意する)までスキップして下さい。
まずはコンテナ化したいプロジェクトをGitHubからローカルにクローン(コピー)しましょう。
“`bash
$ git clone <リポジトリパス>
“`
以降の作業はコピーしたディレクトリで行うため`cd`コマンドで移動します。
“`zsh
$ cd <ローカル
【Rails】O/Rマッピング時の中間テーブル、わかりにくかったので簡単に調べた。
:::note warn
**注記**
この記事の投稿者はRuby on Rails初学者であり、自身の学習の備忘録目的で記事投稿を行なっております。
情報の正確さには最大限注意をしておりますが、もし誤り等がございましたらお知らせいただけますと幸いです。
:::ご覧いただきありがとうございます!
**Ito** と申します!
Ruby on Rails初学者です。
タイトルの通り
**「RailsでのO/Rマッピング時、中間テーブルがどのように変換されているのか?」**
個人的にわかりにくいと感じたので、端的にまとめてみました。## 場面設定
タグ投稿機能を持った掲示板アプリを想定しています。`Post`モデルが`Tags`モデルと関連付けされています。
`posts`テーブルと`tags`テーブルは`post_tags`テーブルを介して多対多の関係です。### モデル
“`rb:app/models/post.rb
class Post < ApplicationRecord has_many :post_tags has_many
【Rails】StimulusでBootstrapのTooltipを動かす
今回は、Stimulusを使用してBootstrapのTooltipを動かす方法について紹介します。
https://getbootstrap.jp/docs/5.3/components/tooltips
## ツールチップとは?
ツールチップは、ユーザーが要素(ボタンや画像など)にホバーしたりクリックしたりした際に表示される、小さな説明文の吹き出しです。これは、要素単体では意味が不明確な場合に特に有用です。![tooltip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/849608/092d039b-7633-9a1c-7902-437a676722c1.png)
## インストール方法
まず、`bootstrap`と`popperjs`が`node_modules`に含まれているかを確認してください。もし存在しなければ、`yarn add bootstrap`または`npm install bootstrap`を実行してインストールしましょう。## Controllerの作成
To
An executable bug report for Action Cable
So this is kind of last minute, but I thought it would be interesting to try and create a [bug report template](https://edgeguides.rubyonrails.org/contributing_to_ruby_on_rails.html#create-an-executable-test-case) for Action Cable.
After having wasted maybe an hour or so trying to parse the browser logs, only to realize that Chrome prepends the file/url and line number before simply `[object Object]` style — I ended up just writing to a `
ranked-modelで既存のレコードに値を入れる際の注意点
# はじめに
こんにちは、HappyManaです。
ranked-modelを使った際、既存レコードに値を入れる処理を書いたのですが、
ranked-modelのREADMEに書いてある方法で困ったことがあったため備忘録として書きます。# 困ったこと
ranked-modelの[README](https://github.com/brendon/ranked-model#migrations-for-existing-data)には、以下の方法が書いてあります。
“`
Duck.update_all(‘row_order = EXTRACT(EPOCH FROM created_at)’)
“`これは、timestamp型のcreated_atをUNIX時間に変換するというものです。
UNIX時間は、1970年1月1日午前0時ちょうどからの経過秒数なので整数値になります。
なので並び替えのカラムの型をINTEGER型とすると、型としては問題はありせん。しかし、created_atをUNIX時間に変換する際に、ミリ秒が四捨五入されるという処理になりました。
たとえば、c
acts_as_listとranked-modelの違い
# はじめに
こんにちは、HappyManaです。
Railsで並び替えをしたいときに使うgemで、大きく[acts_at_list](https://github.com/brendon/acts_as_list)と[ranked-model](https://github.com/brendon/ranked-model)があります。
この2つのgemの違いがわかりにくかったため、紹介するとともに違いを書いていきます。並び替え用のdbカラムは、row_orderカラムとします。
# dbに入る値が異なる
最も異なるのがこれです。
他にもいろいろ違いはありますが、1番大きな違いなので、これを説明していきます。## acts_as_list
acts_as_listでは、カラムに1、2など「そのレコードが何番目か」が入っています。
例えば、現在3番目のレコードを2番目に並べ替えたいとき、acts_as_listでは、2番目と3番目のレコードのrow_orderカラムが変更されます。| id | row_order |
| – | – |
| 1 | 1 |
| 2 | 2
Rspecの導入と単体テストコード
テストは非常に重要だけど、避けていました、、、笑
しっかり復習していきます!### 目的
– RSpecでテストのテストの書く準備
– 基本てみなテストコードの書き方理解
– テストコードの実行方法を理解### バリデーション設定
app/models/user.rb
“`ruby
validates :nickname, presence: true
“`### RspecのGem追加
Gemfile
“`ruby
〜 略〜
group :development, :test do
gem ‘rspec-rails’, ‘~> 4.0.0’
end
“`
ターミナル
`bundle install`### RSpec設定
`rails g rspec:install`テストコードの結果をターミナル上に可視化する
.rspec
`–format documentation`### テストファイル作成
`rails g rspec:model userspec/models/user_spec.rb
“`ruby
require ‘rail
投稿アプリ詳細表示機能 同じコードをまとめる
今回もテックキャンプのカリキュラムの復習です!
### 目的
– showアクションの処理の理解
– before_actionを理解### showアクションのルーティングを設定
詳細画面のパスは、削除や編集と同じくツイートごとに管理
idが1のツイート詳細画面は、`/tweets/1`パスconfig/routes.rb
“`ruby
resources :tweets, only: [:show]
“`### もし、7つのアクションがある場合
“`ruby
変更前
resources :tweets, only: [:index, :new, :create, :destroy, :edit, :update, :show]
変更後
resources :tweets
“`rails routesを実行
ターミナル
“`weet GET /tweets/:id(.:format) tweets#show“`### 詳細ボタンを投稿一覧に追加
app/views/tweets/index.html.erb
“`ruby
<%= link_to
RailsのCORSで配列の環境変数を使うときの注意
# はじめに
こんにちは、HappyManaです。
RailsのCORS設定で、オリジンを複数指定したいことがあり、環境変数に配列を使いました。
その際の注意点を備忘録として残します。# 環境変数に配列を使う
環境変数で配列を使う際は、以下のように書きます。
“`env
CLIENT_ORIGIN=[“http://localhost:8000″,”https://example.jp”]
“`CORSのoriginsには以下のように書きます。
“`
origins JSON.parse(ENV[‘CLIENT_ORIGIN’] { ‘[]’ })
“`# 注意点
## シングルクォーテーションで囲わない
例として、以下のようにシングルクォーテーショを使った配列にします。
“`env
CLIENT_ORIGIN=[‘http://localhost:8000′,’https://example.jp’]
“`そうすると、以下のエラーが出ます。
“`
/usr/local/lib/ruby/3.1.0/json/common.rb:216:in `parse
【Athena】重くなってきた読み込みを何とかしたい② パーティション射影を利用してみる
# はじめに
[【Athena】重くなってきたパーティション読み込みを何とかしたい① シンプルに読み込み対象のログを減らしてみた](https://qiita.com/TKY_study/items/969f2a21f73ce598979e)の続きとなります。# 今回試してみた事:パーティション射影の導入
元のDDLをベースにTBLPROPERTIESを以下のように書き換えて設定を行いました。
パーティションの範囲の関しては`..`が使用でき、例えば`’01,02,03,04’`は`01..04`と書けます。
また「〇〇以降」といった設定法が無さそうでしたので、yearに関しては仮で`2021..2100`としました
設定の結果、数日おきのパーティションロード等であれば数十秒程度で完了出来るようになりました。“`SQL
CREATE EXTERNAL TABLE `app_prod_rails`(
`date` string COMMENT ‘from deserializer’,
`container_name` string COMMENT ‘from des
【Athena】重くなってきたパーティション読み込みを何とかしたい① シンプルに読み込み対象のログを減らしてみた
# はじめに
度々ログ調査が発生する~~問題児(;´༎ຶД༎ຶ`)~~、ECS on EC2構成にて3年ほど稼働しているとあるRailsアプリケーションについての話となります
# 問題
ログがたまり続けることで`MSCK REPAIR TABLE`の実行が日に日に遅くなってきており、ついに読み込みの完了まで1時間以上かかる状態となってしまいました。
基本的にログ調査というと直近のログが対象となる事が多い状況でしたので、調査開始が遅れてしまいます。# 今回試してみた事:シンプルに読み込み対象のログを減らしてみた
現状の構成を確認したところ以下のようになっており、稼働初期からの全ログが読み込み対象となっていました。“`SQL
CREATE EXTERNAL TABLE `app_prod_rails`(
`date` string COMMENT ‘from deserializer’,
`container_name` string COMMENT ‘from deserializer’,
`source` string COMMENT ‘from deseri
VSCodeでrailsのログファイルを開くとカラーコードが制御文字で表示されるのを何とかする
# 事象
VSCodeでrailsのログファイル`log/development.log`を開くと以下のようになります
[![VSCodeでログファイルを開いた様子](https://i.gyazo.com/6ecc074097464cea984d74ca7267e75d.png)](https://gyazo.com/6ecc074097464cea984d74ca7267e75d)`ESC`や`[1m`や`[36`など謎の文字が表示されており見づらいです。
# 対策
拡張機能ANSI Colorsをインストールしましょう。https://marketplace.visualstudio.com/items?itemName=iliazeus.vscode-ansi
## 使い方
`Ctrl + Shift + P`で開いたプロンプトで`ansi`と入力すると`ANSI Text: Open Preview`とでるのでこれを選択します。[![ANSI ColorsのPreview画面](https://i.gyazo.com/89389b79003f25a3f86c0
ツイートを編集
投稿機能アプリの実装の復習を備忘録としてあげてます!
### 目的
– CRUD(UPDATE)
– HTTPメソッドのPATCH
– edit アクションの処理の理解
– updateアクションの処理の理解### ツイート編集機能の実装
1. ツイート編集画面のルーティング設定
2. 編集ボタン編集ボタンをビューに追加
3. editアクションをコントローラーに定義
4. 編集画面のビューファイルを作成
5. ツイートの更新を行うためのルーティングを設定
6. updateアクションをコントローラーに定義「editアクションで編集ページを「表示」→「updateアクションでデータの更新」
### edit アクションのルーティング設定
config/routes.rb
“`ruby
〜略〜
resource :tweets, only: [:edit]
〜略〜
“`ターミナルで
rails routesコマンドで確認
ターミナル
` edit_tweet GET /tweets/:id/edit(.:format)
勉強会での小話6
# はじめに
この記事は2023年度の振り返りです。
こちらの続きとなります。
https://qiita.com/youfuku/items/567b3cf510bf40cb3371
問題を解いてる時の実話を元に、作成しております
# 勉強会内の小話
講師:よし、最後のリレーションの問題だ!
講師:「アイシールド21」と同じ作者が書いた作品全てを返すリレーションを作ってみよ!初学者達:はい!
初学者達:これでどうでしょう!
“`ruby
class Comic < ApplicationRecord has_many :kaku, foreign_key: 'book_id', class_name: 'Write' has_many :kaita_hito, through: :kaku, source: :hito has_many :onaji_sakusya, through: :kaita_hito, source: :kaita_manga end ``` ```ruby class Write < ApplicationRecord
勉強会での小話5
# はじめに
この記事は2023年度の振り返りです。
こちらの続きとなります。
https://qiita.com/youfuku/items/09f387f1e9f14e9469da
問題を解いてる時の実話を元に、作成しております
# 勉強会内の小話
講師:前回、joinの中で紐づけをしてたけど、直接呼べるようにリレーションを組んでおけば楽なので、今回はそれをやってみよう!
初学者達:わかりました!has_manyのthroughですよね!参考書で勉強してる時に読みました!
講師:知ってるなら話は早い。やってみよう!
初学者達:はい!
初学者達:こんな感じでどうでしょう!
“`ruby
class Comic < ApplicationRecord has_many :writes, foreign_key: 'book_id' has_many :author, through: :writes end ``` ```ruby p Comic.joins(:author).where(author: { name: '冨樫 義博' }) ``` 講
ebayのカードカテゴリ商品のコンディション設定について
## はじめに
eBayにおいて、カードカテゴリに商品を出品する際には通常のコンディション設定(newやusedなど)とは異なり、カードカテゴリ特有のコンディションとそれに付随する情報を設定する必要があります(設定しないと出品できないです)。この記事では、対象となるカテゴリやコンディションの設定方法、そしてそれに関連するテーブル構成について簡単に説明します。
## 対象カテゴリ
通常とは異なる設定が必要になるカードカテゴリは以下の3種類です。・Sports Memorabilia, Cards & Fan Shop > Sports Trading Cards > Trading Card Singles (CategoryID: 261328)
・Collectibles > Non-Sport Trading Cards > Trading Card Singles (CategoryID: 183050)
・Toys & Hobbies > Collectible Card Games > CCG Individual Cards (CategoryID: 183454
Rails RESTfulなルーティング
## 目次
[1. はじめに](#1-はじめに)
[2. Rails のルーティング設計](#2-rails-のルーティング設計)
[3. RESTful なルーティングとは](#3-restful-なルーティングとは)
[4. 参考](#4-参考)## 1. はじめに
Rails で CRUD 処理を作成中、どの操作がどのルーティングなのかよく忘れてしまうため、備忘録としてまとめておくことにしました。
また Rails のルーティングは REST 設計に基づいていますが、REST 設計についてあまり知りませんでした。
RESTful なルーティング設計は Rails をはじめ広く採用されているため、その考え方やメリットについても調べてみようと思いました。## 2. Rails のルーティング設計
まずは、Rails のルーティング設計がどうなっているかを見てみたいと思います。
これは、Rails にルーティングを自動作成してもらうことで簡単に分かります。### ルーティングを自動作成
Rails では、ルーティング設定用のファイル `conf
フレームワーク(Ruby on Rails)を触って出てきた横文字たちの正体とは?
# はじめに
自分は10月よりAPPRENTICE SHIP(内定直結型エンジニア学習プログラム)のカリキュラムに2期生として参加しています。
今回はRuby on Railsを学び始めて謎の横文字が多く出てきます。
その中で特に覚えておきたいけど、毎度詳細を聞かれると調べ直しているものをピックアップしてまとめました。# MVCモデル
## MVCモデルとは?
MVC(Model-View-Controller)モデルは、ソフトウェア開発のための「設計パターン」の一つになります。## M(モデル)
モデルはアプリケーションのデータやビジネスロジックを管理します。
データベースへのアクセスやデータの操作、バリデーションなどが含まれます。## V(ビュー)
ビューはユーザーに対する表示やインターフェースを担当します。
ユーザーが見ることができる部分やユーザーとの対話が含まれます。
Railsだとerb(テンプレートエンジン)を用いて各場所がビューに該当します。## C(コントローラー)
モデルとビューの制御を担う場所になります。
コントローラーはユーザーからの入力を受け取
【Rails】assertとassert_predicateの違い
## 1. はじめに
現在、RailsチュートリアルでRuby on Railsを学習しています。
第6章で紹介されるテストコードに対してRubocopで解析をかけたところ、`assert @user.valid?`ではなく`assert_predicate(@user, :valid?)`の使用を推奨されました。
今回はこれら2つの違いについてまとめていきます。
## 2. assert・assert_predicateとは
assertメソッドもassert_predicateメソッドもMinitestで使えるアサーションの1つです。
[Rails テスティングガイド](https://railsguides.jp/testing.html)の説明を引用してまとめると以下の通りです。**■ assert**
指定した式(test)がtrueである場合、テスト成功。> **`assert( test, [msg] )`**
>
> – `test`はtrueであると主張する。**■ asset_predicate**
オブジェクト(obj)の