- 1. 【Rails × AmazonS3】 RailsアプリでAmazonS3を利用し、本番環境に画像をアップロードする
- 2. ランダムな画面遷移(2パターン)
- 3. 未経験からモダンな技術を学んで「バーチャル旅行を楽しめるサービス」を立ち上げるまで【React / Rails / Firebase Authentication / Google Map / YouTube API】
- 4. [備忘録] Railsアプリケーションでtailwind.cssが読み込まれないとき
- 5. turbolinksがJavaScriptに干渉する
- 6. 複数権限でのDevise使用
- 7. [rails & cloudinary]carrierwaveで詰まるのでActive Storage で画像投稿を実装する
- 8. 【Rails】namespaceを使用してアプリケーションの作成
- 9. herokuでデプロイするときにつまづいた話
- 10. Rails – Docker上の Rspec を Makefile から実行する書き方の例
- 11. Railsでの予約システムにおける非同期スロット更新とエラーハンドリング
- 12. ## 見出し2
- 13. 会社の技術スタックのPlaygroundを用意する
- 14. 【Rails】updateメソッドとupdateアクションの違い
- 15. 【備忘録】休業日と営業日の表示を非同期通信で切り替えるRailsアプリの実装
- 16. Ruby(Rails)で使える省略記法
- 17. RubyKaigi2024参加レポート
- 18. 【Rails】newメソッドとcreateメソッドの違い
- 19. rails cが起動しないトラブルシュート
- 20. ExecJSがデフォルトで使用するランタイムを調査
【Rails × AmazonS3】 RailsアプリでAmazonS3を利用し、本番環境に画像をアップロードする
# はじめに
はじめまして、ずっと大地と申します。
2023年11月より、オンラインスクールのRUNTEQにて、未経験からのWebエンジニア転職を目指して学習をしています。
初学者のうえ、記事を書くのは初めてです。
記述漏れや作成ファイルの記載忘れなど、不備があるかもしれないので、間違いなどあれば教えて頂けたらと幸いです。
また、人によって環境の違いがあるかと思うので、あくまでも私自身の環境で、記事投稿時の記録ということをお許しください。# 概要
アプリ開発にて実装した、`Amazon S3`での本番環境の画像アップロードについて、設定が多く難しいと感じたので、記事にしたいと思います。
`CarrierWave`を導入済み、`AWS`に`rootユーザー`、`IAMユーザー`としてログインできる状態を前提とします。https://aws.amazon.com/jp/register-flow/
# 環境
Ruby 3.2.3
Rails 7.1.3.2
CarrierWave
Amazon S3
Render.com# 手順
### rootユーザーとしてサインイン
ま
ランダムな画面遷移(2パターン)
## はじめに
今月の頭に小さなアプリを作ってみようと思い立ち、その中でランダムな画面遷移機能の実装に挑戦しました。この時に作成したアプリはこちら
(2024年7月末まで稼働予定)https://tomi-meisei.onrender.com/
## 環境
ruby 3.2.2rails 7.1.3.2
Render
MacBook
## 付けたい機能
「指定のリンクをクリックすると、その時々で異なる結果のページを表示させる」これを実装するために今回は2種類の方法を取ってみました。
## 方法1
データベースに保存された値をランダムに表示させる方法**ランダムに表示したいデータベース作成**
`rails g model randam_rogers`
(※randamの綴りが間違えていますがご了承ください)“`ruby
class CreateRandamRogers < ActiveRecord::Migration[7.1] def change create_table :randam_rogers do |t|
未経験からモダンな技術を学んで「バーチャル旅行を楽しめるサービス」を立ち上げるまで【React / Rails / Firebase Authentication / Google Map / YouTube API】
# はじめに
こんにちは!**いとう([@Ito_GeekHatch](https://x.com/Ito_GeekHatch))** と申します。
未経験からWebエンジニアを目指し転職活動中です!転職活動用のポートフォリオとして
**「地図と動画でバーチャル旅行を楽しめるWebアプリ」** を個人開発しました!
開発したWebアプリに加えて、自己紹介とこれまでの学習歴、これから挑戦したいことについて紹介させていただきます!
未経験からWebアプリをポートフォリオとして開発する予定の方の参考になれば幸いです🙇♂️※「アプリのことだけ教えてくれ!」という方は[2. ポートフォリオの紹介](#2-ポートフォリオの紹介)からご覧ください🙏
# 目次
[1. 自己紹介](#1-自己紹介)
[2. ポートフォリオの紹介](#2-ポートフォリオの紹介)
[3. 技術選定の理由](#3-技術選定の理由)
[4. 学習過程](#4-学習過程)
[5. 今後の展望や挑戦したいこと](#5-今後の展望や挑戦したいこと)
[6. 終わりに](#6-終わりに)# 1. 自己紹介
大学を卒
[備忘録] Railsアプリケーションでtailwind.cssが読み込まれないとき
## 起こったこと
railsアプリケーションでcssがうまく読み込めなかった
error内容はこんな感じ
“`:
The resource ファイル名 was preloaded using link preload but not used within a few seconds from the window’s load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.
“`## 試したこと
### 1. ブラウザのキャッシュクリア
効果なし### 2. tailwind.css の再ビルド
いったん `app/assets/builds` 配下のファイルを削除 (今回は`tailwind.css`)
“`
$ rails assets:clobber
“`その後 tailwind.css を再びビルド
“`
$ rails tailwindcss:build
“``app/assets/builds/tailwin
turbolinksがJavaScriptに干渉する
turolinksによって、画面が切り替わってもその通常起こりうるloadイベント(jsファイルが実行)が起きない場合がある。
document.addEventListenerなどで囲っている宣言の方法を変えてみるとうまく動作するかも。
複数権限でのDevise使用
# はじめに
2024年2月からプログラミン学習を始めたばかりなので間違ったことを記載している可能性もあります。間違っている部分やアドバイスがありましたらご指摘していただけたら幸いです。
また、今回の記事は以下の記事の続きになっています。
https://qiita.com/sslevel5/items/abe275d948f55f9f34d3## 前提
ruby
rails上記の環境で作成します。
## 実装
管理者側と顧客側でログイン等の認証機能を分けるので、管理者と顧客側を分けて’Devise’の導入を行います。
↓’Devise’の導入の参考記事
https://zenn.dev/h_hana/articles/6dac69de42cbfe
### ‘Devise’のインストール
Gemfileの最後の行に下記を追記します。
“`
gem ‘devise’
“`
gemをインストールします。
“`
bundle install
“`
deviceをインストールします。
“`
rails g devise:install
“`### 管理者
[rails & cloudinary]carrierwaveで詰まるのでActive Storage で画像投稿を実装する
# 経緯
railsにてcloudinaryとcarrierwaveを用いて画像投稿を実装していたのですが、どうやら最近carrierwaveが上手く動いていないようでローカルにそのまま画像が保存されたり、`Errno::EACCES in HogesController#create Permission denied @ apply2files -`の様なエラーが出てるようで。。。。Active Storageを利用すれば無事投稿が出来たので備忘録として残しておきます。
# 本記事の想定
– cloudinaryのアカウント登録が完了している
– 投稿機能が実装済み
– 環境変数は`gem ‘dotenv-rails’`で管理※rails6.1.7 ruby3.0.4を使用しています。
https://cloudinary.com/
# 実装
Active Storageの詳しい仕様ついては公式ドキュメントで確認して下さい。https://railsguides.jp/active_storage_overview.html
## Active Storageの
【Rails】namespaceを使用してアプリケーションの作成
# はじめに
初投稿になります。
最初は、自分の学習の復習をしながらアプリケーションの作成をしていく予定です。
2024年2月からプログラミン学習を始めたばかりなので間違ったことを記載している可能性もあります。間違っている部分やアドバイスがありましたらご指摘していただけたら幸いです。## 前提
ruby
rails上記の環境で作成します。
また、今回は管理者側と顧客側があるアプリケーションを作成します。
## 実装
### アプリケーションの作成まず最初にアプリケーションを作成します。
“`
rails new review_app
“`### namespace の使用
今回は管理者側と顧客側が存在するのでコントローラーを名前空間でグループ化します。
要すると
– 同じデータを扱うコントローラーとビューを管理者側と顧客側で2つ作成し、それらをそれぞれのフォルダーに分けて管理する
– 管理者側と顧客側でルーティングをグループ分ける
ということです。https://railsguides.jp/routing.html#%E3%82%B3%E3%83
herokuでデプロイするときにつまづいた話
自分がつまづいた部分は
1 Command “webpack” not found.
2 パッケージのバージョンのエラー
3 herokuでgit push heroku mainすると画像のデータが消える。Active strageにはデータとしては存在するでした。
### Command “webpack” not found.の話
結論から言うとnode.jsを先にインストールしたら直りました。
バージョンの話が色々とネットには溢れていましたが自分の場合はすごく初歩的な問題でした。
けどこう言う問題も初心者のうちは気付けないから怖いですね。
この順番にインストールしてくれたらOKです。[![Image from Gyazo](https://i.gyazo.com/655f0a0d5d0a7d87bbe16f8c8293bd6e.png)](https://gyazo.com/655f0a0d5d0a7d87bbe16f8c8293bd6e)
### パッケージのバージョンのエラー
## 環境
ruby:3.2.2
rails:7.0.8
node.js:
Rails – Docker上の Rspec を Makefile から実行する書き方の例
# 概要
– docker-compose 構成が前提
– Makeの引き数として `RSPEC_TARGET` を利用してファイル名を指定する
– localではRailsのディレクトリがMakefileのあるディレクトリより下層にある場合 ( 例: `some_rails_directory ` ) を想定している# Makefile
“`rb
rspec:
docker-compose run –rm -e RAILS_ENV=testrspec ${RSPEC_TARGET:some_rails_directory/%=%}
“`実行例
“`sh
make rspec RSPEC_TARGET=spec/dir/
make rspec RSPEC_TARGET=spec/dir/example_spec.rb
make rspec RSPEC_TARGET=spec/dir/example_spec.rb:11
“`# チャットメンバー募集
何か質問、悩み事、相談などあればLINEオープンチャット
Railsでの予約システムにおける非同期スロット更新とエラーハンドリング
## はじめに
今回は、Railsでの予約システムにおける非同期スロット更新の実装方法と、発生したエラーの解決方法について共有します。## 問題点
予約システムの開発中に、日付を変更するたびにスロット情報を非同期で更新しようとしましたが、以下のエラーが発生しました。
“`plaintext
ActiveRecord::RecordNotFound – Couldn’t find Company with ‘id’=undefined:
app/controllers/reservations_controller.rb:207:in `update_slots’
“`## 解決方法
エラーの原因は、JavaScriptで`company_id`が正しく取得されず、リクエストに`undefined`が渡されていたことです。以下の手順で解決しました。
### ビューの修正
`company_id`を含むデータ属性を日付入力フィールドに追加します。
“`erb
<%= form.date_field :date, id: 'for_customer_index_
## 見出し2
## 見出し2
会社の技術スタックのPlaygroundを用意する
# 概要
– 僕はフロントエンドの肩書をもらっていますが、元々はバックエンドでPHPやPythonを扱ってました。Rails初心者です
– Railsを最近触ることが多くなってきました。これまでよちよちしながら書いてたのでそろそろ爆速にならないと厳しくなってきました(色々と(ry
– それゆえ、簡単に遊べる環境がほしいなっておもったので、PlaygroundをDockerでポーンと用意してみました。そのメモです# 前提
– RubyやVueは最新バージョンを使っていますが、弊社プロダクト色々ありますが最新とは限りませんmm
– あとはもっと色んなサービスを叩く構成してるところもあったりするんですが、その辺は簡単にしています# compose.yamlの用意
“`yaml
services:
db:
image: mysql:8.0
volumes:
– db_data:/var/lib/mysql
environment:
– MYSQL_ROOT_PASSWORD=rootpassword
– MYSQL
【Rails】updateメソッドとupdateアクションの違い
## update メソッド
**1. 定義と用途**
– モデルのインスタンスを更新する
– データベースに変更を保存する**2. 動作**
– 属性のセットを引数として受け取り、バリデーションを実行した上で、バリデーションが成功した場合にはデータベースを更新します。更新が成功すると`true`を、失敗すると`false`を返します。**3. コード例**
コード例は `name` 属性を `新しい名前` に更新しようと試みています。
“`ruby:Ruby
@user.update(name: “新しい名前”)
“`## update アクション
**1. 定義と用途**
– フォームのデータを受け取り、それを使って特定のモデルのレコードを更新する処理を行います。 ※MVCのC**2. 動作**
– HTTPリクエストを受け取り、対応するモデルのインスタンスを特定し、そのデータを更新するためのビジネスロジックを含みます。
– 成功または失敗に基づいて適切なビューをレンダリングするか、別のアクションにリダ
【備忘録】休業日と営業日の表示を非同期通信で切り替えるRailsアプリの実装
## 内容
休業日と営業日を切り替えて表示するために、以下のコードを実装しました。
備忘録なので説明は省いています(面倒くさいので・・・)### `app/controllers/reservations_controller.rb`
“`ruby
def update_slots
date = params[:date]
@date = Date.parse(date)
@company = current_company
@time_slots = generate_time_slots(@company)
@non_business_day = ScheduleService.is_non_business_day?(@company, @date)
@services = @company.services
@service_availability = ScheduleService.calculate_availability(@company, @date, @services, @time_slots)
response_data
Ruby(Rails)で使える省略記法
# Ruby on Railsで使える省略記法
RubyやRailsのコーディングをする際、省略記法を使うとコードが簡潔になり、読みやすさが向上します。特にリファクタリング時やシンプルな処理を記述する際に役立ちます。
### if/unless文を1行で書く方法(後置if)
通常のif文やunless文は複数行にわたることが多いですが、簡単な条件、処理であれば1行で書くことができます。
**通常のif文:**
“`ruby
point = 7
day = 2
if day == 2
point += 10
end
point # => 17
“`
**1行のif文:**
“`ruby
point = 7
day = 2
point += 10 if day == 2
point # => 17
“`
### 三項演算子(条件演算子)三項演算子を使うと、シンプルな条件分岐を1行で書くことができます。基本的な構文は次の通りです。
“`ruby
result = condition ? true_value : false_value
“`
**例:**
“`
RubyKaigi2024参加レポート
こんにちわ
楽天ラクマでエンジニアをしているHayashiです先日、沖縄で開催されたRubyKaigiに初めて参加してきましたのでそのレポートをお届けします
## 那覇市
![1000001435.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798068/ccdfe42a-6fbd-d61a-15bc-4dadc40f569f.jpeg)2024年のRubyKaigiは沖縄の那覇市で5月15日-17日の日程で開催されました
上の写真の建物は那覇市役所ですが、全体から醸し出す最終兵器感がたまりません
いざというときにはトランスフォームして戦ってくれる様な気が致しました## 沖縄の会場
![1000001428.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798068/3cb92e55-9320-40d8-8e2b-01515b6c6429.jpeg)会場は「那覇文化芸術劇場 なはーと」という建物を
【Rails】newメソッドとcreateメソッドの違い
## new メソッド
– オブジェクトを生成しますが、それをデータベースに保存しません。
– オブジェクトを保存するためには、明示的に save メソッドを呼び出す必要があります。## create メソッド
– オブジェクトを生成し、すぐにデータベースに保存します。
– 内部で new と save の両方を行います。### create アクションのnewメソッド
以下のコードは new メソッドを使用しているため、save メソッドを呼び出す必要があります。
“`ruby:Ruby
def create
@question = Question.new(question_params)
if @question.save
redirect_to @question
else
render ‘new’, status: :unprocessable_entity
end
end
“`### Answer コントローラの create アクション
一方、Answer の登録
rails cが起動しないトラブルシュート
## 環境
Ubuntu20.4
Ruby2.6
Rails5.2## はじめに
**rails c**をしたところ次のようなエラーが大量に出ました。この事象のトラブルシュートです。
“`
$rails c
Traceback (most recent call last):
37: from -e:1:in `‘
36: from /home/vagrant/.rbenv/versions/2.6.0/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require’
35: from /home/vagrant/.rbenv/versions/2.6.0/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require’
34: from /home/vagrant/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/act
ExecJSがデフォルトで使用するランタイムを調査
ExecJS gemはjavascriptをrubyから実行するためのgemです。javascriptの実行には、ローカルマシン上にあるjavascript実行環境が使われます。
複数の実行環境が存在したときに、どの実行環境が使われるのか調査したい場合は、以下のコマンドで確認できます。
“`ruby
ExecJS::Runtimes.autodetect
“`ExecJSのjavascript実行環境の選択について、詳しくは[ExecJSが自動で選択するランタイムはどのように決まるのか](https://qiita.com/kyntk/items/07a8ea95f32b761c2f3c)が参考になります。