- 1. 【Bootstrap】ヘッダーをレスポンシブに横スクロール対応
- 2. 学んだこと乱雑まとめ
- 3. あり得ないエラー集(エラーが解決しないときには試してみよう!)
- 4. json-jwt gem の JWK Set キャッシュ戦略
- 5. 【Rails】画像投稿機能の実装【Active-Storage】【Heroku】【S3】
- 6. 【Rails】エラーメッセージを表示させたい!
- 7. Railsの環境構築
- 8. 【sampleメソッド】collection_selectで取得するデータをサンプルデータに取り入れる
- 9. 100日後くらいに個人開発するぞ!day069
- 10. throughを使ってアソシエーションをスッキリさせる!!
- 11. 複数枚画像のスライド機能実装(carrierwaveとswiper使用)
- 12. PyCallを使ってRubyからPythonを実行する
- 13. AHC(AtCoder Heuristic Contest)で、手元で100テストケースを自動で試す(Linux)
- 14. ruby on rails を AWS Cloud9で実施 6 QandAサイト作成 新たなテーブル作成
- 15. 【動画付き】外部APIに依存するRailsアプリケーションの設計とテストの書き方
- 16. Ruby on RailsとFirebaseを連携させる際にdotenvを用いて秘密鍵の情報を隠す方法
- 17. Full_Calendar実装
- 18. ruby の pack template 文字列の表
- 19. DockerでRails環境を構築する(Compose V2対応)
- 20. 【Ruby, Rails, AWS, EC2, cloud9】 本番環境でサーバーを立ち上げてもエラー画面しか出なかったのを解消した
【Bootstrap】ヘッダーをレスポンシブに横スクロール対応
# はじめに
ウィンドウを小さくすると、ヘッダーのレイアウトがくずれてしまう。
これを解決するために、Qiitaと同じように、表示部の幅を超えた所で横スクロールできるようにする。**完成図**
![responsive.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2684787/b243e006-57dd-7044-a9d9-4d7c90178c06.gif)# 前提
使用環境は以下の通りである。
| No | 項目 | 内容 |
|—:|————-|————|
| 1 | OS | Mac |
| 2 | Ruby | 2.6.3 |
| 3 | rails | 6.0.4 |
4|bootstrap-sass| 3.4.1
5|sass-rails|5.1.0
# 実装
https://csshtml.work/side-no
学んだこと乱雑まとめ
# 今週学んだことまとめ
### [0..n]と[0…n]の違い
…は、最後の値を含めない
[0..5]なら0〜5
[0…5]なら0〜4### Array.newで配列をつくる
Array.new(size , val )
入力値分の配列欲しい時に使う?
sizeで要素数、valでようの値設定
ex.
`Array.new(3,0)
=>[0,0,0]`### seedファイルでデータを作る
db/seeds.rbに
`Model.create(key: ‘value’, key: ‘value’, …)`でデータをあらかじめ用意できる。
rails db:seedで反映。“` ruby
Item.create(name: ‘ペン’, price: 100)
Item.create(name: ‘ペン2’, price: 200)
Item.create(name: ‘ノート1’, price: 400)
Item.create(name: ‘ノート2’, price: 600)
Item.create(name: ‘ペンケース1’, price: 8
あり得ないエラー集(エラーが解決しないときには試してみよう!)
プログラミングをしていると時々、あり得ないエラー、予期していなかったエラーに遭遇することがあります。
今回は、そんなエラーを簡単にまとめてみました。調べても調べてもわからない場合は、ぜひ試してみてくださいね!① ファイルが更新されていなかった。
このエラーが疑われるパターン
-1, ファイルを変更しているのにもかかわらず、git statusを行っても全てup-to-dateと出てくる
-2, Gemfileの場合、bundle installなどを行ってもGemfile.lockに変更が保存されない、gem listを行ってもインストールしたものが出てこない。解決方法は簡単。一度タブを閉じて改めて開くだけ。
改めて開いたときに、変更したはずのものが記載されていなければ、エラーの原因はこれで確定です。②cloud9が原因。
json-jwt gem の JWK Set キャッシュ戦略
## JWK Set 取得タイミング
* OIDC ID Tokenの署名検証時
* その他 JWT 署名検証時
* e.g.,) Apple の Server-to-server Notification## JWK Set 取得頻度とキャッシング
JWK Set には複数の鍵が含まれており、固定の URL から取得可能になっていることが多い。
OpenID Connect では `/.well-known/openid-configuration` にアクセスすることで JWK Set が公開されている URL (`jwks_uri`) を取得できる。このエンドポイントから返される鍵は、一定期間ごとに新しいものに差し替えられたりするが、`jwks_uri` は固定であるため署名検証者は常にこのエンドポイントにアクセスすれば署名検証に必要な鍵が得られるようになっている。
しかし、ID Token や Server-to-server Notification が届くたびにこのエンドポイントにアクセスするのは負荷が高いので、一定期間この JWK Set をキャッシュ
【Rails】画像投稿機能の実装【Active-Storage】【Heroku】【S3】
# はじめに
Active Storageを使用して、画像投稿機能を実装する。
本番環境では、AWSが提供しているクラウドストレージサービス S3(Simple Storage Service)に画像データを保存し、Heroku環境で実行できるようにしたい。# 前提
| No | 項目 | 内容 |
|—:|————-|————|
| 1 | OS | Mac |
| 2 | Ruby | 2.6.3 |
| 3 | rails | 6.0.4 |# 1 Active Storageについて
**これを使うと、ファイルのアップロードができるようになる。**
Railsガイド: [Active Storage の概要](https://railsguides.jp/active_storage_overview.html)から引用する。>Active Storageは、Amazon S3、Google Cloud
【Rails】エラーメッセージを表示させたい!
# はじめに
文章を投稿するときに、空文字にしてエラーをバリデーションで検知、それをエラーメッセージとして表示させたい。# 前提
| No | 項目 | 内容 |
|—:|————-|————|
| 1 | OS | Mac |
| 2 | Ruby | 2.6.3 |
| 3 | rails | 6.0.4 |# 実装
# 1. バリデーションを実装
まず最初に、投稿内容にvalidationをかける。項目は空欄と5000文字以上。
“`言語名:app/models/post.rb
validates :content, presence: true, length: { maximum: 5000 }
“`# 2. コントローラーの設定
postコントローラーのnewアクションに、**current_userが投稿したオブジェクト(@post)** を渡す。これがエラーメッセージの情報を格納するための箱とな
Railsの環境構築
# はじめに
Railsのインストール方法を下記のぺージをお手本にして行いました。
わからないことばかりなので、間違っていた際や改善点がありましたらアドバイスをいただけると幸いです。https://serip39.hatenablog.com/entry/2020/12/17/233500
## 要件定義
・EC2 (t2.micro) ←無料で使用できます。
・Amazon Linux2
・Ruby Ver 2.6.3
・MySQL Ver 5.7.32
・Node.js Ver 14.15.2
・Nginx Ver 1.18.0
・Rails Ver ~~5.2.3~~ 5.2.8.1# 更新処理を実行
“`
$ sudo yum update
“`gitのインストール
“`C++
$ sudo yum install git
$ git –version
git version 2.37.1
“`
## rbenv インストール
ディレクトリを作成して、そのパスを環境変数 RBENV_ROOT に設定します。
“`C++
$ sudo mk
【sampleメソッド】collection_selectで取得するデータをサンプルデータに取り入れる
# はじめに
seedsにform.collection_selectで取得するデータを保存する方法を紹介します。#### サンプルコードについて
ユーザーの新規登録には、name、email、password、prefecture_idが必要です。
prefecture_idは、Prefectureテーブル(47都道府県)からcollection_selectでデータを取得します。
### newアクション“`rb:/app/controllers/users_controller.rb
def new
@prefectures = Prefecture.all
@user = User.new
end
“`Prefectureテーブルから全レコード取得
### 作成フォーム
“`rb:/app/views/users/new.html.haml
%h1 Sign up
.row
= form_with(model: @user, local: true) do |f|
= render ‘shared/error_messag
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
#### ❷完成イメージはこちらのサイトで確認できます。
##### アレンジを加えれるので、オススメです!###### ❶の記事を見ながら『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”,
【Ruby, Rails, AWS, EC2, cloud9】 本番環境でサーバーを立ち上げてもエラー画面しか出なかったのを解消した
# サーバー起動後、エラー画面が表示された
デプロイはできたようだが、サーバーを立ち上げてみると以下のような、nginxのエラーではなく、Railsアプリケーションのエラーが表示された。
![スクリーンショット 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)
ちなみに、サーバー起動のコマンドはこちら?
“`:ターミナル
[ec2-user@ip-xx-xx-xx-xx アプリケーション名]$ rails s -e production
“`## 原因
1. “`/config/enironments/production.rb“`における本番環境でのアセットプリコンパイルの設定ができていなかった。1. Bootstrapのバージョンが最新版だったため、詳細は分からないのですが、何らかの依存しているファイルの影響で正常に反映されなかった。
→こちらの解