- 1. 【Rails】PDFを登録できるようにする
- 2. Vtuberの歌枠データベースを作ってみた話
- 3. Deviseの認証をCognitoに委譲し、カスタムログイン画面でログイン機能を実装する
- 4. GooglePlacesAPIで取得したデータをデータベースへ保存する
- 5. Rails – Rspec で paralells spec を利用して並列処理する ( create / migrate / prepare / setup / drop の違い )
- 6. 「ChatGPT(有料) vs Bing Chat(無料)」今話題のAIを検証してみた!
- 7. [Rails]あなたのコードを半分にできるかもしれない?? 知って得するnil制御 ~presence編~
- 8. Redis::CannotConnectError (Error connecting to Redis on 127.0.0.1:6379 (Errno::ECONNREFUSED)):の解消方法
- 9. 【個人開発】Ruby on Rails 初学者をサポートするActiveRecord学習サービスを作ってみました 【Next.js + Rails API + Docker】
- 10. 【Ruby on rails】グループ作成 その3 グループの編集と削除
- 11. Rails ✕ Reactで動画投稿機能を作ってみた
- 12. 【Ruby on rails】グループ作成 その2 グループ参加と退出
- 13. EinhornでSidekiqをマルチプロセス化する
- 14. 【Advent Calendar Challenge 8日目】「status: :see_other」を忘れて数日溶かした話
- 15. 【Rails】ActiveModel::Errorオブジェクトについて
- 16. 主キーについて
- 17. Railsでバッチ処理が動いていなかった問題を解決したのでメモメモ
- 18. Turbo Streamsの大雑把な使い方
- 19. 【Ruby on rails】グループ作成 その1
- 20. 【Rails 7】Bootstrapのインストール
【Rails】PDFを登録できるようにする
# はじめに
プログラミングを勉強して2か月ほどです。
初心者なので間違っているところがあれば、ご指摘いただけると幸いです。
※@tohonozo(とほ のぞ)さんの記事を参考に作成しました。
とても分かりやすく参考になりました。
ありがとうございます。# PDFを保存したい
今回、私が作成しているアプリケーションでPDFを保存できるようにしたかったのでやってみました。
Active Sorageなどで画像の保存はやったことはありましたが、PDF保存は初めてでした。
いろんなところで躓いたので、この記事にまとめておこうと思います。# Let’s start!!!
## 最初にCloudinaryに登録
このリンクから登録をはじめましょう。https://cloudinary.com/
右上のsign up for freeを押すと、登録画面に飛びます。
## PDFファイルを投稿するために簡単なアプリを作成
今回はItemモデルを使用します。### モデルとコントローラーを作成
`$ rails g model item`
`$ rails g controll
Vtuberの歌枠データベースを作ってみた話
## 目次
[1. はじめに](#1-はじめに)
[2. 作ったアプリについて](#2-作ったアプリについて)
[3. 開発の流れ](#3-開発の流れ)
[4. プロジェクトを通して学んだこと](#4-プロジェクトを通して学んだこと)## 1. はじめに
Vtuberが歌枠で歌った曲を検索できる歌枠データベースを制作したのでその記録を記します。作成したアプリはこちらのリンクから見ることができます。
https://song-list.piny940.com
## 2. 作ったアプリについて
[2-1 アプリの概要](#2-1-アプリの概要)
[2-2 アプリの3つの特徴](#2-2-アプリの3つの特徴)
[2-3 アプリの画面](#2-3-アプリの画面)### 2-1 アプリの概要
各チャンネルごとに、今までに歌った曲の一覧を見ることができるようになっています。
曲名と歌手名で検索をする他、詳細検索からは配信日や配信のタイトル名で絞り込むことができるようになっています。![アプリ画面](https://i.gyazo.com/793f
Deviseの認証をCognitoに委譲し、カスタムログイン画面でログイン機能を実装する
## はじめに
今回はdeviseの認証をcognitoに委譲し、アプリケーション側で独自のログイン画面を作成して、ユーザーがログインできるように実装していきたいと思います。
## 対象読者
– deviseを使用したことがある人
– deviseの認証をcognitoに委譲したい人
– deviseの認証をcognitoに委譲したが、cognitoの[ホストされたUI](https://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/cognito-user-pools-hosted-ui-user-experience.html)では物足りない人
## 動作環境
今回はdeviseログイン画面ありのアプリケーションのひな形を作ってくれている方がいたので、そちらのプロジェクトを使用したいと思います。https://github.com/timothyjamesmarias/rails_7_devise_example
## 実践
流れとしては下記に沿って進めていきます。
Cognitoを既に構築されている方は、
GooglePlacesAPIで取得したデータをデータベースへ保存する
# 初めに
初めまして。チータ(@cheetag_02)と申します。
個人開発をするにあたって、GooglePlacesAPIから取得したデータをデータベースに保存することがあったので、同じような状況の方のために、記録として残します。# テーブルの作成
まず、取得したデータを保存するテーブルを作成します。
GooglePlacesAPIから取得できるデータは、一部ですが記事にまとめたのでこちらをご覧ください。
[Google Places APIを使用して情報を取得(Rails)](https://qiita.com/cheetah_02/items/d7c62be909ac4edca5d2)テーブルの作成(マイグレーションファイル)
“` ruby:2023083120000_create_shops.rb
class CreateShops < ActiveRecord::Migration[7.0] def change create_table :shops do |t| t.string :name, null: false #店名
Rails – Rspec で paralells spec を利用して並列処理する ( create / migrate / prepare / setup / drop の違い )
# 公式
https://github.com/grosser/parallel_tests
# Gemfile
gem を追加して bundle install する
“`
gem ‘parallel_tests’
“`# database.yml
公式READMEの通り DB設定で環境変数を利用するようにする
この環境変数はテスト実行時などに自動的に paralells spec が付与してくれる“`yml
test:
database: yourproject_test<%= ENV['TEST_ENV_NUMBER'] %>
“`# テスト実行
“`
rails parallel:setup
rails parallel:spec
“`うまく行かない場合は以下でも良いかもしれない
`parallel:setup` / `parallel:prepare` コマンドは使わなくてもテスト実行できる“`
rails parallel:create
rails parallel:migrate
rails parallel:spec
`
「ChatGPT(有料) vs Bing Chat(無料)」今話題のAIを検証してみた!
# 概要
皆さんは“ChatGPT“についてはご存知だと思いますが、最近話題のAIベースの検索エンジン“「Bing Chat」“についてご存知でしょうか??
どちらもすごく高性能なAIで、“ChatGPT“は“チャット bot“、“Bing Chat“は“検索エンジン“と名称や性能が若干違います。
今回は“ChatGPT“と“Bing Chat“のメリット、デメリット、得意、不得意を検証してみました!:::note warn
私は初学者のため、間違った情報があればコメントなどで教えていただけると幸いです。
GPT-3.5に関しては~~個人的に嫌い~~なので検証しません。
:::## Bing Chatとは?
BingはMicrosoftが作った検索エンジンです。
BingAIはChatGPT同様、対話型AIとして、雑談や質問に答えたり、創作物の執筆やプログラミングを手伝ったりなどができます。また、画像生成AIとして、ユーザーのリクエストに応じて画像を作成したり、既存の画像を加工したりなども可能です。
## 検証1
どちらも画像を送る機能が
[Rails]あなたのコードを半分にできるかもしれない?? 知って得するnil制御 ~presence編~
## 伝えたいこと
:::note info
ボッチ演算子はすごい
presenceはすごい
:::## ~第1章~ はじまりのコード
**子供** 「ねぇねぇ父ちゃん!僕の書いたコードを見てよ!」
**父親** 「おぉ、どれどれ。見せてみろ。」“`rb
name = nil
if @account.present? && @account.name.present?
name = @account.name
else
name = ‘未設定’
end
“`**父親** 「アカウントがあったら名前を取得し、名前がなかったら[未設定]の文字を取得したいんやな」
**子供** 「さすが父ちゃん!見ただけで一瞬でわかっちゃうだ!」
**父親** 「まぁな。`present?`を活用しているのはグッドだ?nilや空文字など柔軟に判定してくれるからな」
**子供** 「でしょ!(実はネットに載ってたのコピペしただけだけど…)」
**父親** 「ただ、もう少し簡単にかけるな。**ぼっち演算子**って知ってるか?」
**子供** 「ぼっち演算子..?」
**父親** 「
Redis::CannotConnectError (Error connecting to Redis on 127.0.0.1:6379 (Errno::ECONNREFUSED)):の解消方法
docker環境において、`localhost:xxxx/sidekiq`へアクセス出来なかった時の対処法
“`zsh:error
Redis::CannotConnectError (Error connecting to Redis on 127.0.0.1:6379 (Errno::ECONNREFUSED)):
“`## docker-compose.ymlへ追記
envを追記“`ruby:docker-compose.yml
sidekiq:
build: .
environment: # ここから下
RAILS_ENV: development
REDIS_URL: redis://redis:6379
“`## 起動時の設定を追加する
以下を作成“`ruby:config/initializers/sidekiq.rb
redis_config = { url: ‘redis://redis:6379/0’ }Sidekiq.configure_server do |config|
confi
【個人開発】Ruby on Rails 初学者をサポートするActiveRecord学習サービスを作ってみました 【Next.js + Rails API + Docker】
# はじめに
はじめまして! (https://twitter.com/saku0suke)プログラミングスクールRUNTEQで転職を目指し、学習を始めて4ヶ月が経ちました。
最近、個人開発で`Ruby on Rails`のO/Rマッパーである`ActiveRecord`の学習サービスを作ってみました。
今回はこのサービスについて少しまとめてみます。
![見出しを追加 (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2517817/601d5f4c-daa6-80fa-1963-97330079d35f.png)# 目次
| 章 | タイトル | 備考 |
|—:|————-|————|
| 1 |[サービス概要](#サービス概要)| このサービスについて |
| 2 |[サービスを作成した背景](#サービスを作成した背景) |開発に至った理由について|
| 3 |[使い方](#使い方) ||
【Ruby on rails】グループ作成 その3 グループの編集と削除
# はじめに
プログラミングを勉強して2か月ほどです。
初心者なので間違っているところがあれば、ご指摘いただけると幸いです。
※@ki_87(kei i)さんの記事を参考に作成しました。
とても分かりやすく参考になりました。
ありがとうございます。# グループの編集と削除
今回は作成したグループの編集と削除を実装していきます。
グループの作成については下記の記事で行っています。https://qiita.com/kenty1116/items/2807833bc375ead197af
グループへの参加と退出は下記の記事で行っています。
https://qiita.com/kenty1116/items/f356eb9802aef9bbbb0c
それでは作成していきましょう!!!
# Let’s start!!!
## ルーティングの設定
“`routes.rb
Rails.application.routes.draw do
devise_for :users
root to: “groups#index”
resources :groups do
Rails ✕ Reactで動画投稿機能を作ってみた
## 概要
おはこんばんにちわ。お疲れ様です。
備忘録ついでに初投稿。
RailsとReactを使って動画投稿機能を作った + “shrine”ってものに触れたので、そっと置いておこうと思います。
つたない部分もあるかと思いますがよろしくお願いします。(ご指摘待ってますね)## 環境
– Rails 6
– React 17
– gem shrine 3.0
– aws-sdk-s3 1.113.0## shrineとは
簡単にいうとファイルアップロードのための便利なツールキットです。
詳しくという方は、いろんな記事があるので読んでいただけたらと思います。ここでは、雑に公式のリンクだけ貼っときますね。
[Shrine公式](https://shrinerb.com/)# 始める前に
今回はUserの中のカラムに入れたいと思います。
動画はAmazon S3に置きます。
ローカルではminioを使います。
環境構築は各々でお願いします。## テーブル作成
“`schema.rb
create_table “users”, force: :cascade
【Ruby on rails】グループ作成 その2 グループ参加と退出
# はじめに
プログラミングを勉強して2か月ほどです。
初心者なので間違っているところがあれば、ご指摘いただけると幸いです。
※@ki_87(kei i)さんの記事を参考に作成しました。
とても分かりやすく参考になりました。
ありがとうございます。# グループの参加と退出
今回は作成したグループへの参加と退出を実装していきます。
グループの作成については下記の記事で行っています。https://qiita.com/kenty1116/items/2807833bc375ead197af
それでは作成していきましょう!!!
# Let’s start!!!
## ルーティングの設定
“`routes.rb
Rails.application.routes.draw do
devise_for :users
root to: “groups#index”
resources :groups do
get “join” => “groups#join”
delete “exit” => “groups#exit”
end
end
“`
##
EinhornでSidekiqをマルチプロセス化する
この記事は
===* Sidekiqはとてもよくできているワーカサーバなのですが、シングルプロセスでしか動作しません
* さらにRubyは1プロセス1CPUコアしか使えないので、結果“`Sidekiqは1コアしか使えない“`という弱点が発生します
* [einhorn](https://github.com/contribsys/einhorn)というなんでもかんでもマルチプロセス化してしまう神ライブラリを使うと、簡単にSidekiqの弱点を補えますeinhorn?
===* 簡単にいうとUnicornやPumaみたいな、master/worker形式のマルチプロセス化をしてくれるライブラリです
* 今回はSidekiqに使いますが、Rubyに限らず、どんなプログラムでも対応可能です
* サンプルだと“`sleep“`コマンドをマルチプロセス化していて動きが面白いですインストール
===* Rubyでできています
“`ruby:Gemfile
gem ‘einhorn’
“`起動
===* “`einhorn“`コマンドを頭につけるだけなの
【Advent Calendar Challenge 8日目】「status: :see_other」を忘れて数日溶かした話
こんにちは、プログラミング初学者のみんみんです。
私は現在「RUNTEQ」というプログラミングスクールでRailsを学習しています。
今回お話しするのはとあるコードをつけ忘れ、数日もの時間を無駄にした経験談についてです。## そのコードの名は…
ある日のこと、私はいつも通りRUNTEQの課題を進めていました。
進捗はあまり良いとはいえず、
“`
わけの分からないエラーが出る
↓
ググりまくって何とか直す
↓
安心
↓
またわけの分からないエラーが出る
“`
を繰り返していました。
でも、ひとまず調べれば何とかできるエラーだったためまだマシな状況だったのです。そんなとき、掲示板の削除機能をようやく実装し終えてみると、画面にエラーが。
どうやら削除機能のルーティングが無いようです。
**私「あれ?ルーティングがおかしいのかな?設定したはずなんだけど…」**
この手のエラーは何度か見たことがあったので「どうせルーティング設定し忘れたんだろう」と思っていました。
それから数日後。
いくらルーティングを直してもエラーが解決することはなく、とうとうChatGPTも **「以下
【Rails】ActiveModel::Errorオブジェクトについて
# ActiveModel::Errorsについて
`ActiveModel::Errors`は、Ruby on Railsの`ActiveModel`モジュール内のクラスで、モデルオブジェクト上のエラーメッセージを保持および管理するためのもの。主にActiveRecordモデルのバリデーションエラーを取り扱う際に使用されるが、ActiveRecordに依存しないモデルでも使用することができる。
## 主な特徴と使用方法
### 1. エラーの追加
`add`メソッドを使用して、特定の属性にエラーメッセージを追加できる。
“`ruby
errors.add(:name, “can’t be blank”)
“`### 2. エラーの存在チェック
* any?メソッドでモデルにエラーが存在するかを確認できます。
* include?(attribute)で特定の属性にエラーが存在するかを確認できます。### 3. エラーメッセージの取得
* full_messagesで全てのエラーメッセージの配列を取得できる。
* []メソッドで指定した属性のエラーメッセージの配
主キーについて
# 主キーの設定はどのように行うのか
SQLアンチパターンにID Requiredというものがあるが、その回避のためには複合主キーを用いることが一つ挙げられる。なので複合主キーで対応できるものについてはそれを使おうと考えていたが、どうやら複合主キーを扱うにも厄介な点があるらしい。Railsでもprimary keyを複数設定しようとすると警告が出る。調べてみると
Railsにおいて複合主キーが対応していないわけではないようだ。https://edgeguides.rubyonrails.org/active_record_composite_primary_keys.html
がしかし、Railsで複合主キーを用いることは非推奨とするような意見も存在するし、他にもデータベース設計において使うのはやめましょうといった言説が複数見られた。
https://discuss.rubyonrails.org/t/rfc-finally-support-composite-primary-keys/81368
それらを確認してみると、そもそもSQLにおいて複合主キーを使うと操作が複雑に
Railsでバッチ処理が動いていなかった問題を解決したのでメモメモ
どうもこんにちは。
今回は以下の記事で紹介した`delayed_job`で実装したバッチ処理が動かなかった問題を解決したので、備忘録としてまとめたいと思います。
バッチ処理の基本的な手順は以下の記事をご覧ください。
https://qiita.com/PDC-Kurashinak/items/dd852f001914def58e83
# バッチ処理って?
そもそものバッチ処理についておさらいします。
バッチ処理とは、決まった時刻や時間間隔で行う処理のことです。
例えば、「10分間隔でメール送信ジョブを動かす」「決まった時間に過去のデータを削除する」などですかね。
# 今回のエラーについて
今回のエラーは、「決まった時間に実行したいジョブが実行されなかった」というものです。
## 概要
`config/schegule.rb`に以下のように記述したコードが動きませんでした。
“`ruby
every 10.minute do
runner “Batch::WatchDelayedJob.job_destroy”
runner “Batch::WatchD
Turbo Streamsの大雑把な使い方
# はじめに
皆様はじめまして、fluytと申します。
現在プログラミングスクールで学習しております。
今回はRailsのバージョン7においてのHotwireのTurbo_streamsについて大雑把にまとめたいと思います# Hotwireとは
JavaScriptの使用を抑えてサーバーサイド側でSPA風のアプリケーションを開発できる仕組みのこと
TurboとStimulusとStradaの3つの技術で構成されている– Turbo
Hotwireの中心となるもの
webページの部分的な更新を簡単にするツールで、サーバーからクライアントへデータを非同期に送信して更新できる
Turboはさらに4つの技術に分けられる・Turbo Drive
リンクやフォームのブラウザ遷移を、ページの一部を更新することで高速にする・Turbo Frames
指定した特定の範囲を親ページと分離することで、画面の一部のみ更新ができる・Turbo Streams
サーバーサイドでの変更をクライアントに非同期に送信することで、部分的な更新をする
【Ruby on rails】グループ作成 その1
# はじめに
プログラミングを学習してから1ヶ月半ほどが経ちました。
スクールでのカリキュラムも終了し、オリジナルアプリを作成しました。
私が作成したアプリの中で、グループ機能を実装したかったので今回まとめてみました。
少しづつ投稿していこうと思うので時間がかかると思いますが、お願いします。
※初めての投稿なのでMarkdown形式の記述方法にも慣れておらず、見づらいところが多いかもしれません。# グループ作成
今回は、在庫管理(探し物を見つけ出す)アプリを作成しました。
この記事ではグループを作成するところまで紹介したいと思います。
初心者のため、間違っているところがあると思いますが、ご指摘いただけると幸いです。
※@ki_87(kei i)さんの記事を参考に作成しました。
とても分かりやすく参考になりました。
ありがとうございます。# 前提条件
ユーザー管理機能については実装済みで話を進めていきます。
ユーザー管理機能実装してから作成をお願いします。
また、viewについてはオリジナリティが求められるため、省略しています。
※Rails7で作成しています。そ
【Rails 7】Bootstrapのインストール
# 開発環境
Rails 7.0.8
Ruby 3.1.3
Bootstrap 5.3.0.alpha3
# 導入手順## 1.Gem導入
Gemgileに以下2つのgemを追加
“`ruby:Gemfile
gem ‘bootstrap’, ‘~> 5.3.0.alpha3’
gem ‘jquery-rails’
“`
ターミナルにて、インストール
“`:terminal
bundle install
“`## 2.CSS編集
app\assets\stylesheets\application.cssを”.csss”に変更
中身を全て消して以下のコードに変更
“`scss:application.scss
@import “bootstrap”;
“`## 3.javascriptの設定
### a) Configファイルの編集
config\importmap.rb
以下のコードを追記(位置はどこでも良い)“`ruby:importmap.rb
pin “bootstrap”, to: “bootstrap.min.js”, preload: tr