- 1. bootstrapのダウンロードの仕方
- 2. 【Rails】選択画像のプレビューを動的に表示させる
- 3. i18nによる日本語化対応【Rails】
- 4. Next.js(AppRouter)×RailsのAWS実行環境を、SSRを考慮して構築する【Terraform】
- 5. 【rails】Rspecおける基本事項まとめ
- 6. Railsで作ったシステムのER図を日本語で出してほしいと言われたときにやったこと
- 7. Rails DBのカラム名の変更方法
- 8. 【Rails】デプロイ時にロードバランサーのタイムアウト値をカスタムするのだ
- 9. 【Ruby on Rails】コンテナ内部でrailsコマンド実行したら、bash: rails: コマンドが見つかりません
- 10. `length` `size` `count`の使い分け【後編:Rails】
- 11. Ruby on RailsにおけるN+1問題
- 12. `length` `size` `count`の使い分け【前編:Ruby】
- 13. 【Rails7 + Docker】Viewファイルの変更がlocalhostで反映されない不具合を解消する
- 14. Progate +α メモず【Ruby on Rails ⑩⑪】
- 15. Rubyの「*」記号ってなんなの、という疑問について調べた
- 16. rails勉強2日目
- 17. 【初学者向け】最速で実務に入るためのロードマップ Rails編
- 18. コマンドでファイルを作成するジェネレーターの作成
- 19. 【rails】rubyXLを使って別途用意したエクセルファイルを出力する機能を作成
- 20. rubyXLで作成したエクセル出力機能を呼び出すとActionController::UnknownFormatが発生した時の対処法
bootstrapのダウンロードの仕方
## gemをインストール
gemfileに以下を記載
“`
gem ‘bootstrap’, ‘~> 5.3.0’
“`bundle installする(コンテナ内で行う場合)
“`
docker compose run web bundle install
“`
## 共通ファイル作成
flashメッセージは複数のビューファイルで使うので、部分テンプレートにしておく。
views/shared/_flash.html.erb
“`
<% flash.each do |message_type, message| %>【Rails】選択画像のプレビューを動的に表示させる画像のプレビュー機能をシンプルに書きたいと思い、JavaScriptのFileReaderで実装しました。メモとして残します。
# やりたいこと
1. input tyupe=”file”の`ファイルを選択`ボタンをクリックして画像ファイルを選択する。
1. プレビュー枠の画像が選択した画像に置きかわる。# 実装環境
– Ruby on Rails
– Slim
– Carrier wave
– JavaScript# 実装コード
必要なコードのみ抜粋します。“`slim
/ form_withのコードの一部
label
= form.file_field :image, class: ‘d-none’, onchange: “previewImage(this, ‘previewImageField’)”
span.btn.btn-secondary ファイルを選択
= form.hidden_field :image_cache
/ プレビュー枠
– if hoge.image.present?
= image_ti18nによる日本語化対応【Rails】
docker環境で開発をしています。
Railsでデフォルトのロケール(言語)を設定するには、## 1. config/application.rb ファイル内で config.i18n.default_locale を設定
“`
config.i18n.default_locale = :ja
config.i18n.load_path += Dir[Rails.root.join(‘config’, ‘locales’, ‘**’, ‘*.{rb,yml}’).to_s]
“`## 2. Gemfileにi18nを記載→インストールする
“`
gem ‘rails-i18n’, ‘~> 7.0.0’
“`
“`
bundle install
“`## 3. サーバーを再起動
“`
docker compose restart
“`## 4. rails consoleで「I18n.t(‘date.abbr_day_names’)」と打ち、下記のように帰ってきたら設定完了。
“`
irb(main):001:0> I18n.t(‘date.abbr_Next.js(AppRouter)×RailsのAWS実行環境を、SSRを考慮して構築する【Terraform】
## 概要
Next.js(App Router)とRails APIで構成されるアプリケーションの実行環境を、AWSで構築する記事です。IaCにはTerraformを利用します。構築する環境の構成図は以下に示す通りで、アプリの実行環境はECS/Fargateを利用しています。SeverComponentからRailsで実装したAPIを呼び出す際は、CloudMapによるサービスディスカバリを利用してコンテナ間で直接通信するようにしています。
![スクリーンショット 2024-01-21 15.15.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2987556/80eafd5a-2e35-bf05-55b2-6464e2606b1e.png)# ※注意点
この記事では、ECS/Fargate環境におけるISRの実現方法については触れていません。今回の構成で考慮しているのはSSR(cache: no-store)のみです。ECS/
【rails】Rspecおける基本事項まとめ
# 事前準備
1.下記のgithubより Gemfileに追加するコードを確認し、
gemfileに記述する。
“`
# Run against this stable release
group :development, :test do
gem ‘rspec-rails’, ‘~> 6.1.0’
end
“`https://github.com/rspec/rspec-rails?tab=readme-ov-file#installation
2.bundle installコマンドにて上記のgemライブラリをインストールする。
3.docker-compose run web bundle exec rails g rspec:installにてrspecを実行するためのファイルを作成する。
→ railsファイル直下に“spec > spec_helper.rb“が生成される。
4.docker-compose exec web bundle exec ra
ils g rspec:model Model名
にてModelにおけるテスト用のファイルをRailsで作ったシステムのER図を日本語で出してほしいと言われたときにやったこと
Ruby on Railsを使った開発をしていると「システムのER図が欲しい」といったお願いされることがあります。
Railsを使っているのであれば、[rails-erd](https://github.com/voormedia/rails-erd/tree/master) というRubyGemを使うことで簡単にER図を出力できます。
https://github.com/voormedia/rails-erd/tree/master
rails-erdで出力されるER図はEntityもAttributeも全て英語です。
![erd.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60996/96fe287e-0c02-5af4-4c64-d9bc974b1f7e.png)
提出先がエンジニアである場合や、普段からモデル名を使ったコミュニケーションをしている場合であればこのままでもなんとかなるかもしれません。
一方、相手がビジネスサイドのメンバーである場合や、普段はモデルを日本語変換してコミ
Rails DBのカラム名の変更方法
# はじめに
今回はRailsでのカラム名の変更について紹介します。
Railsは初心者のため間違っている箇所などあればコメントで教えてください。# エラー
メソッドでエラーが出ていますよというエラーだったので、「メソッドで記載ミスがあったのか!」と思いメソッドを探しても何も見つからず、、
→結果的に、DBのカラム名が
正:completed
誤:comleted
と「p」が抜けていたのが原因でした。![スクリーンショット 2024-01-20 20.18.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1003708/52f4915b-9b62-d786-7b62-35e703e3dc6d.png)
# RailsでのDBカラム名の変更方法
### ①カラム名を変更するためのマイグレーションファイルを作成する
` $ rails g migration rename_変更前のカラム名_column_to_テーブル名`
“`
$ rails g migration rename_co【Rails】デプロイ時にロードバランサーのタイムアウト値をカスタムするのだ
どうもこんにちは。
今回はRailsアプリケーションのデプロイ時にロードバランサーのタイムアウト値を自動で更新できるようにしました。
# 経緯
私の会社では、新しいバージョンをデプロイするときに、以下の流れで作業を行います。
1. RDSのデータをバックアップ
1. ElasticBeanstalkの環境をクローン(複製)する
1. EC2の画面から、ロードバランサーのアイドルタイムアウトの値を60秒→1200秒に変更する
1. ソースコードをデプロイする60秒→1200秒へ変更する理由は、「動画ファイルなどの容量の大きなファイルをサーバーへアップロードするときに60秒以上が経過してしまうと504ステータスエラーが発生してしまう」からです。
つまり、動画ファイルをアップロードしている途中にサーバーが通信をストップしてしまうということです。
# ebextensionsを使用する
今回はebextensionsを使用してカスタムを行いました。
ebextensionsとは、Elastic Beanstalkでの環境構築時に環境をカスタマイズする設定ファイルを配置するデ
【Ruby on Rails】コンテナ内部でrailsコマンド実行したら、bash: rails: コマンドが見つかりません
# 初めに
普段使用している railsコマンド が使えなかったので書きます。# 問題
① “`docker compose exec web bash“` をターミナルで実行してコンテナ内部に入る
② “` rails console“` 実行
③ bash: rails: コマンドが見つかりません# 解決方法
“`bin/rails console“` rails consoleの前に “`bin/“` を付ける
原因はrails new で新規プロジェクトを立ち上げたときに binディレクトリが生成されてその配下にrailsコマンドを格納しているファイルを読み込んでいるから。
# 終わりに
普段何気なく、railsコマンドを使っていたので勉強になりました。
`length` `size` `count`の使い分け【後編:Rails】
# はじめに
[`length` `size` `count`の使い分け【前編:Ruby】](https://qiita.com/kohki_takatama/items/c8236b6a2e267e2dad20)の続きですが、この記事だけでも完結した内容になっています。Rubyの`length` `size` `count`を調べてる間に気づいた、「Railsだと定義が違うぞ・・・・・・」
ということで、Railsでも`length` `size` `count`について調べていきます。
※注記しない限り、`count`は引数を与えないものとします。
## この記事のまとめです
### Rails (`ActiveRecord`) の`length` `size` `count`
正確には`AcriveRecord::Associations::CollectionProxy`です。
コレクションとは、配列やハッシュなど要素の集まりのことです。
– `length`:コレクションをメモリにロードし、要素数を取得します。
すでにメモリ上にあれば、その要素数を取得します。
– `Ruby on RailsにおけるN+1問題
## 概要
N+1問題は、1つのクエリによって複数のレコードを取得した後、
各レコードに対して関連するデータを取得するために追加のクエリが必要になる状況を指します。N+1問題が発生すると、データベースへのアクセス回数が余計に多くなってしまいます、それはデータベースに対するクエリの数が大幅に増加するからです。
## N+1問題の原因
N+1問題が発生する原因は、データモデル間のアソシエーション・関連にあります。
Ruby on Railsでは、データモデル間にアソシエーションを定義することで、関連するデータを取得することができますよね?### 具体例
1.ブログアプリケーションで、すべての記事を取得し、
2.それぞれの記事に対して投稿者の情報を表示する必要があるとします。
一見、効率的に見えるこの操作が、実際には非効率的になることがあります。ステップ1: すべての記事を取得するためのクエリ。
ステップ2: 各記事に対して、投稿者情報を取得するための追加クエリ。
ここで問題となるのは、ステップ2での繰り返しクエリです。記事の数が多いほど、データベースへのクエリ数が増加し、`length` `size` `count`の使い分け【前編:Ruby】
# はじめに
みなさん、Rubyの `length` `size` `count` の使い分け、気になりますよね??🤗
そう思って!公式リファレンスも含め調べたんですが、どれもいまいちしっくりこない。
以下、しっくりこなかったリスト
– `size`と`length`は全く同じ挙動をする(ほんとに?根拠は?)
– 条件付きなら`count`でそれ以外は`size` `length`(なぜ?)
– `count`は重い(なぜ?)なぜ ↑ のように言われるかがわかるようになっています。
なお、Railsの場合(ActiveRecord)は挙動が違うので後編で書きます。
(2024 / 01時点の言語仕様に基づいた情報です)
## この記事のまとめです
### Ruby の`length` `size` `count` の挙動
特に言及のない場合、`Array`クラスについて話しています。ただし、「`Enumerable`モジュールの`count`」を除き、どのクラスでも同様の挙動だろうと思います(`String`クラスなど)– `Array.length` `Array.size
【Rails7 + Docker】Viewファイルの変更がlocalhostで反映されない不具合を解消する
Docker化したRailsアプリを開発中、Viewファイル(.html.erb)のソースコードを変更して開発環境のlocalhostをリロードしても変更が反映されない不具合に遭遇しました。`docker-compose.yml`でホストのディレクトリをコンテナにマウントしているため、それまではソースコードの変更はブラウザをリロードすると反映されていたのですが、急に反映されなくなりました。`docker compose down`で一旦コンテナを落としてから`docker compose up`をすれば反映されるのですが、ソースコード変更の度にそれをやるのは効率が悪すぎるため、解決方法を調べ、自分が実際に上手くいった方法をまとめました。
環境は以下のとおりです。
– OS:IntelMac
– Docker
– docker-compose
– Rails7.0.6
– PostgreSQL“`docker-compose.yml
version: ‘3’
services:
web:
build: .
image: rails_template:latesProgate +α メモず【Ruby on Rails ⑩⑪】
# はじめに
Ruby on Railsラストです!!
いつものごとくメモの羅列なので、気になる見出しからお読みください。
# メモず
## 「いいね」を新しいテーブルで管理するワケ
– 既存のテーブル`users` `posts` じゃダメなの?
いいけど、それぞれのテーブルが「いいね」情報で肥大化して、パフォーマンスが落ちるかも。
– 「いいね」を新しいテーブルにするメリット
– コードロジックが整理され、理解しやすくなる。メンテナンス性も上がる。
– 例:`if Like.find_by(user_id:@current_user.id, post_id:@post.id)`の`if`文のみで、いいねしている場合、してない場合の挙動を設定できる。
– テーブルとして独立していると、スケーラビリティが向上する(読み書きの負荷分散・時間や地域によってサーバーを分割・クエリの最適化)。
## `link_to`メソッドの中でアイコンを使うには
“`erb
<%= link_to("URL") do %>
<%Rubyの「*」記号ってなんなの、という疑問について調べた
Rubyにおいて、「*」記号は以下の用途で使われます
## 数値の乗算
Rubyでは、他の多くのプログラミング言語と同様に、「*」記号は数値の乗算に使用されます。“`ruby
result = 3 * 4 # resultは12になります
“`## 配列の繰り返し
「*」記号を使って、配列内の要素を指定した回数だけ繰り返すことができます。“`ruby
repeated_array = [1, 2, 3] * 3 # repeated_arrayは[1, 2, 3, 1, 2, 3, 1, 2, 3]になります
“`## 文字列の繰り返し
「*」記号を使って、文字列を指定した回数だけ繰り返すこともできます。“`ruby
repeated_string = “abc” * 2 # repeated_stringは”abcabc”になります
“`# 可変長引数
メソッド定義において、引数の前に「*」を付けることで、任意の数の引数を受け取ることができます。
これは「スプラット演算子」とも呼ばれます。可変長引数については別途まとめを作成する予定です。rails勉強2日目
:::note info
インフォメーション
間違いがあるかもしれないです。
:::## 二日目です
ちゃんと二日目もさぼらずに投稿できてます!!
えらい!!!## どこまで勉強したのか
progate railsコース2まで終わりました。
## 何を学んだのか
rails consoleを使ったdb導入
“`
rails console
“`
post1に入れたいときは
“`
post1 = post.new(content:”ここに入れたい文字列を導入”)
“`
“`
<% posts.each do |post| %><%= post %><% end %>
“`
これで@postsに保存されているものが表示されます。【初学者向け】最速で実務に入るためのロードマップ Rails編
## はじめに
はじめまして、24卒の**どすこい**と申します!
現在内定先でRuby on Railsの機能開発やバグの修正などを行なっています!
記念すべき初投稿は、筆者が実務に入るまでに様々な勉強をしてきました。
その中で、「この教材はそんなに必要なかったなぁ〜」「この教材はまだ早いなぁ」「役に立ったなぁ〜」といったことが多々あります。
そんな筆者がもう一度勉強し直すならこれやる!と思った教材を紹介していきます!
筆者自身苦学生だったので、できるだけ費用を抑えています。
なお、今回のゴールは実務に入るまでです。実務経験をできるだけ早く積むことがエンジニアの成長につながると思っています。
## 想定読者
– 新卒でエンジニアになりたい方
– インターンに行きたい方
– エンジニア転職を行いたい方
– プログラミングに興味がある方## この記事で書かないこと
本記事では、以下のことは書きません。単純に教材だけを列挙していきます。
– マインド (質問力、コミットメッセージへのこだわり)
– Toolの紹介 (JiraやSlackの使い方)
– 他の技術内容コマンドでファイルを作成するジェネレーターの作成
## はじめに
本記事は[Rails ジェネレータとテンプレート入門](https://railsguides.jp/generators.html)を参考にしています。
勉強中のため、誤りやもっといいやり方があるかも知れません。
その場合は、ご指摘いただけますと幸いです。また、可能な限りわかりやすく記載するつもりですが、不明瞭な点、追記した方がいい点などがございましたら、合わせてご教授ください。
## この記事の目的
ジェネレーターの作成方法を備忘録を兼ねて残しておきます。
今回のジェネレーターでは、コマンドを叩いてテンプレートファイルからファイルを作成することを目標とします。
具体的には、下記のコマンドを叩いて、`controllers/hoge_hoge_controller.rb` を作成しようと思います。
“`console
bin/rails generate hoge hoge_hoge
“`## ジェネレーターとは
データやプログラムコードを自動的に生成するプログラムのことです。## テンプレートを作成
コピーするための雛形を下記のように作成しておきま【rails】rubyXLを使って別途用意したエクセルファイルを出力する機能を作成
### railsで別途用意したエクセルファイルを出力する機能を作成したので、備忘録用に簡単にまとめる。
rubyXLは初めて使い、エンジニア歴も浅いため至らないコードもあるかと思いますが、参考程度になればと思います。## 環境
railsのバージョン
`Rails 6.0.3.4`
rubyXLのバージョン
`rubyXL (3.4.25)`## Gemfileのインストール
まずはrubyXLをインストールします。
“`ruby:Gemfile
gem ‘rubyXL’
“`
“`
$ bundle install
“`## MIMEタイプの登録
下記設定を追記しないとエクセル出力した際にエラーが発生する。
`To respond to a custom format, register it as a MIME type first: https://guides.rubyonrails.org/action_controller_overview.html#restful-downloads. If you meant to respond to a varrubyXLで作成したエクセル出力機能を呼び出すとActionController::UnknownFormatが発生した時の対処法
#### エクセルファイル(.xlsx)を出力する機能をrubyXLを利用して作成したが、実行するとActionController::UnknownFormatが発生が発生する。
## 環境
railsのバージョン
`Rails 6.0.3.4`
rubyXLのバージョン
`rubyXL (3.4.25)`## 原因
原因はroutes.rbの設定でformatを指定していないことになる。
“`routes.rb
get ‘excel/generate’, to: ‘excel#generate’, as: ‘generate_excel’
“`xlsxのエクセルファイルを出力する場合は、
~~~ruby
get ‘excel/generate’, to: ‘excel#generate’, as: ‘generate_excel’, defaults: { format: :xlsx }
~~~
のように、
`defaults: { format: :xlsx }`
の箇所を追記するとエラーが解消される。
拡張子は出力したいファイル毎に変更してください。初歩的なこ
関連する記事
今さら聞けないHTML 2021年03月24日 2021.03.24
目次 1. ホバーしたら数字が1回転するコードを使ってtransitonの理解を深める①2. 主なWebサイト構造設計3. HTML学習の備忘録(ドッ[…]
Rails関連のことを調べてみた2020年06月16日 2020.06.16
目次 1. MySQLの導入方法2. railsで数値を3桁で区切る。「delimited」メソッドで解決3. EC2上でRailsアプリケーションに[…]
iOS関連のことを調べてみた2022年08月22日 2022.08.22
目次 0.1. swift基礎アウトプット 1. 学習内容1.1. Fastlaneを使ったiOSの証明書/プロファイル管理1.2. GIDSignI[…]
Category
Back number
- 2024年9月
- 2024年8月
- 2024年7月
- 2024年6月
- 2024年5月
- 2024年4月
- 2024年3月
- 2024年2月
- 2024年1月
- 2023年12月
- 2023年11月
- 2023年10月
- 2023年9月
- 2023年8月
- 2023年7月
- 2023年4月
- 2023年3月
- 2023年2月
- 2023年1月
- 2022年12月
- 2022年11月
- 2022年10月
- 2022年9月
- 2022年8月
- 2022年7月
- 2022年6月
- 2022年5月
- 2022年4月
- 2022年3月
- 2022年2月
- 2022年1月
- 2021年12月
- 2021年11月
- 2021年10月
- 2021年9月
- 2021年8月
- 2021年7月
- 2021年6月
- 2021年5月
- 2021年4月
- 2021年3月
- 2021年2月
- 2021年1月
- 2020年12月
- 2020年11月
- 2020年10月
- 2020年9月
- 2020年8月
- 2020年7月
- 2020年6月
- 2020年5月
- 2020年4月
- 2020年3月
- 2020年2月
- 2020年1月
- 2019年12月
- 2019年11月
- 2019年10月
OTHERカテゴリの最新記事
- 2024.09.19
JavaScript関連のことを調べてみた
- 2024.09.19
JAVA関連のことを調べてみた
- 2024.09.19
iOS関連のことを調べてみた
- 2024.09.19
Rails関連のことを調べてみた
- 2024.09.19
Lambda関連のことを調べてみた
- 2024.09.19
Python関連のことを調べてみた