- 0.1. Railsポートフォリオ作成 #3 DB設計
- 0.2. RubyonRailsでRSpecによるテストコード実行手順メモ
- 0.3. ActiveResourceを使ってRailsアプリ同士をAPI連携させる
- 0.4. 【Ruby on Rails】データベース操作まとめ(rails db:**)
- 0.5. Herokuでrakeコマンドが使えない問題を解決:bundler: failed to load command: rake
- 0.6. [Ruby on Rails]編集ページでのエラーメッセージの出し方
- 0.7. warning ../../package.json: No license field
- 0.8. [ruby]eachの入れ子について
- 0.9. 【RubyonRails】uninitialized constant ●●Controllerの解消方法【progate】
- 1. uninitialized constant
- 2. 症状
- 3. 解消方法
- 3.1. rbenvの概要とインストール
- 3.2. railsアプリ作成手順【基礎の備忘録】
- 3.3. The server quit without updating PID fileというエラー
- 3.4. 【超初心者】SQLの勉強を初めて一週間のアウトプット
- 3.5. 【Rspec】コントローラーのテストコードで謎のエラーが出た話〜CSSの記述ミス〜
- 3.6. 【CircleCI】Githubと連携したアプリをコミット時にRSpec通す設定個人用メモ(database.yml書き換え無し)
- 3.7. Fargateでコンテナ内でタスクのIDを取得する
- 3.8. 【github actionsで自動デプロイ】Docker環境でRspecを実行し、EC2へデプロイ!!
- 3.9. 結合テストコード
- 3.10. 中身が空であることの表現
- 3.11. Railsで使用されるメソッドを自動でベンチマークするgemを作ってみた話
Railsポートフォリオ作成 #3 DB設計
こんにちは:smiley:
今回はDB設計を行いました。[(前回記事(#2 画面設計))](https://qiita.com/yanoo/items/f3bf4e180534a1c2a4a7)私は、前職(ホテルの料飲部)における、コミュニケーションの課題を解決するアプリを作っているのですが、今回は、
## DB設計を行いました
ER図はこんな感じになりました。
![スクリーンショット DB.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1097768/ac5a0142-8048-d64d-cce5-4f13d90d34f2.png)## 感じたこと
+ 抜け漏れをなくするのがとても大変
今回私にとっては、今までにない数のテーブルが登場したため、マインドマップを使い、抜け漏れがないようにと意識しながら、機能、テーブル、カラムを洗い出しました。
しかし、おそらく抜け漏れがあって、後から泣くことになるだろうなあという感じです。。。
+ ER図を見やすく構成するのが大変
まず全てのテーブ
RubyonRailsでRSpecによるテストコード実行手順メモ
初Qiita投稿で緊張しますが、自分用メモなのであんまり気張らずに書くようにします。
RubyonRailsでRSpecを使ってテストコード実行するときの簡単な手順メモです。
間違ってたり足りない部分があったら適宜アップデートします。1. Gemfile内のどこの行でもいいので gem ‘pry-rails’ を追加する。 ※たいていは一番下に追加
2. Gemfileの group :development, :test do 内に下記2行を追加する。
gem ‘rspec-rails’
gem ‘factory_bot_rails’ ※FactoryBotを使わない場合は不要
3. ターミナルで bundle install を実行してGemを使えるようにする。
4. ターミナルで rails g rspec:install を実行してRSpecを使えるようにする。
5. .rspecファイルに –format documentation を追加してテストのログを見やすくする。
6. ターミナルでrails g rspec:model [モデル名] を実行してモデ
ActiveResourceを使ってRailsアプリ同士をAPI連携させる
ActiveResourceを使う機会があったので、使い方を備忘録として残します。
##ActiveResource とは
簡単に言うと、Railsアプリケーション同士を簡単にAPI連携させる機能です。フロントとバックを分けて実装したい時に使います。
##バック側の実装
実装
apiモードでアプリケーションを作成しています。“`
$ rails new back –api
$ cd back
$ bin/rails g scaffold bookmark title:string url:string comment:text
$ rake db:migrate
“`起動
“`
$ rails s
“`##フロント側の実装
実装
DBは使わないのでmigrationを削除しています。
“`
$ rails new front
$ cd front
$ bin/rails g scaffold bookmark title:string url:string comment:text
$ rm -f db/migrate/*
“`モデルク
【Ruby on Rails】データベース操作まとめ(rails db:**)
# データベース本体に関する操作
#### rails db:create
データベースの作成
<使用可能オプション>
– rails_ENV
環境を指定する(デフォルトはdevelopmentとtest)#### rails db:drop
データベースの削除
<使用可能オプション>
– rails_ENV
環境を指定する(デフォルトはdevelopmentとtest)# テーブルに関する操作
#### rails db:migrate
migrationファイルを実行し、テーブルを作成する(全てのmigrationファイルが対象)
<使用可能オプション>
– rails_ENV
環境を指定する(デフォルトはdevelopmentとtest)
– VERSION
指定したバージョン以前のmigrationを全てupに、それより後のmigrationを全てdownにする#### rails db:rollback
最新のmigrationを1つdownにする
<使用可能オ
Herokuでrakeコマンドが使えない問題を解決:bundler: failed to load command: rake
## エラー内容
HerokuにデプロイしたRuby+Sinatraアプリで “`heroku run rake db:migrate“` コマンドを実行すると、“`bundler: failed to load command: rake“` という内容のエラーが出てマイグレーションできない。
## エラーが起きた環境
– heroku20
– ruby 2.6.6## 原因
– 開発環境でのBundlerのバージョンと、heroku環境でのBundlerのバージョンが違う。
## 解決方法
### 開発環境のbundlerのバージョンを確認
“`
$ bundle -v
“`
“`
Bundler version 2.2.8
“`### herokuのbundlerのバージョンを確認
“`
$ heroku run bundle -v
“`
“`
Bundler version 2.1.4
“`### 開発環境にbundlerのバージョン2.1.4をインストールする
“`
$ gem install bundler -v
[Ruby on Rails]編集ページでのエラーメッセージの出し方
自身の失敗を踏まえた備忘録を書いていきます。
###エラーメッセージの読み込みの記述
![スクリーンショット 2021-02-12 23.47.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1078698/f7a11e38-708c-64a9-d82f-6780f90a6bd4.png)上記の記述は別のファイルで**エラー文の繰り返し処理**を表した記述になります。
記入すべき所が空欄だったりしたら表示される文章を
**エラー文**と言います。**new.html**と一緒のエラー文を、
**編集ページ**の**edit.html**でも表示させたい時に書く記述を書いていきます。
###(例)
編集ページなので**editとupdateアクション**に定義してある
**item**のインスタンス変数を使っていきます。
![スクリーンショット 2021-02-13 0.02.26.png](https://qiita-image-store.s3.ap-northeast
warning ../../package.json: No license field
#はじめに
rails s を実行するといつからかずっと出ているな・・・
ほっといても問題ないし、いいのかな・・・
ちょっと待ってください!!warning ../package.json: No license fieldが
起こる理由にもよりますが、herokuへのデプロイができない可能性もあるので
表示が出たのであれば、すぐに対応した方がいいみたいです!!
(この場合でもlocalのrails s 実行でのサーバーは起動する。)#前提
warning ../package.json: No license fieldに対して
以下の対応のいずれかを行っているが、エラー表示が消えない場合
についての対処方法を本記事では述べています。①package.jsonに適切なlicenseをセットしている。
②package.jsonに”license”: “UNLICENSED”をセットしている。“`package.json
{
“name”: “praise”,
“license”: “UNLICENSED”,
“private”: true,
“de
[ruby]eachの入れ子について
#初めに
eachの入れ子についてアウトプットさせてもらいます#例題
この配列に対して“`ruby
big3 = [[“man1”,[100,120,140]], [“man2”,[90,110,130]], [“man3″,[120,180,160]]]
“`以下のように出力したいと思います
“`ruby
man1のbig3の合計は360kgです!
man2のbig3の合計は330kgです!
man3のbig3の合計は460kgです!
“`
*big3とは”ベンチプレス”,”スクワット”,”デットリフト”のことです“`ruby:記述内容
big3 = [[“man1”,[100,120,140]], [“man2”,[90,110,130]], [“man3”,[120,180,160]]]big3.each do |training|
sum = 0
training[1].each do |weight|
sum += weight
end
puts “#{training[0]}のbig3の合計は#{sum}kgです!”
【RubyonRails】uninitialized constant ●●Controllerの解消方法【progate】
uninitialized constant
progateでRailsでエラーにハマってしまったので、エラーを解消方法について記載します。
症状
ルーティングのURL自体はあっているものの、街頭のコントローラーのアクションに遷移しようとすると画像のようなエラーメッセージが出てくる模様。
エラーの文字は、
「uninitialized constant LikesController」日本語訳すると
「初期化されていない定数 LikesController」「RubyonRails道場IV 「いいね!」ボタンを作ろう」で発生
![railsエラー.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/927880/3fd93d67-dda4-0b2e-4e20-04ef7761d788.jpeg)
解消方法
対象のコントローラーのファイル名が単数形を複数形にすることで、エラーが解消されました。
コントローラー名
rbenvの概要とインストール
## 前提
– macOS
– homebrewのインストール## 一言で
複数のRubyのバージョンを管理し、**プロジェクト毎にRubyのバージョンを指定して使うことを可能にするツール(パッケージ)** のこと。
## 概要
プログラムにはバージョンという考え方があり、新機能の追加や、不要な機能の削除、仕様の変更などをした際に、プログラムのバージョンは上がっていきます。それはプログラミング言語も同じです。バージョンが違うことで、**使える機能が変わったり、元々あった機能が使えなくなることもあるため**、プロジェクトで利用するプログラムのバージョンを固定することはしばしば重要です。そのため、プログラムのバージョンを固定する必要があるわけですが、プログラミング言語はプロジェクト毎に利用したいバージョンが変わっている場合があります。
例えば、プロジェクトAではv2.0を利用し、プロジェクトBではv3.0を利用したい、といった具合です。この時に、プロジェクト毎にバージョンを設定したりすることを**バージョン管理**といいます。そして、Rubyにおけるバージョン管理ツ
railsアプリ作成手順【基礎の備忘録】
Ruby on Railsでのアプリ作成手順を、
復習も兼ねてまとめておく。ターミナル
“`
#railsで利用したいバージョンを指定。例は6.0.0 -dはデータベースを指定するオプションで、例ではmysqlを指定。
% rails _6.0.0_ new 作成するアプリ名 -d mysql
% cd 上記アプリ名
# ※データベースを作成する前に、database.ymlを編集する。以下に詳細記載。必須設定ではないが、自身が学んだタイプと合わせるため記載。
% rails db:create #データベースを作成
“`config/database.yml
“`
default: &default
adapter: mysql2
encoding: utf8mb4 →ここをutf8に変更。データの保存形式を変更するため。
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password:
socket: /tmp/mysql.sock
“`上記コマンド
The server quit without updating PID fileというエラー
#はじめに
Railsを使っていて最初はspliteを使っていたのですが途中から
MySQL8.0に変えました。
インストールして、諸々の設定をして最初は問題なく使えていたのですが
途中からなぜかデータベースが読み込めなくなったので(原因はいまもわかりません)
MySQLをアンインストールして再度インストールしました。すると
The server quit without updating PID file
というエラーが出てこいつになかなか悩まされました。
##解決法
PCを再起動しましょう。
僕の場合はこれで解決しました。
インストール後はPCの再起動が必要なようです。非常に初歩的な話ではありますが、MySQLを扱うのが初めてなもので
どこに原因があるのかわからず再起動に行き着くまで
3時間ほど消費してしまいました。(笑)
【超初心者】SQLの勉強を初めて一週間のアウトプット
## SQLの勉強しようと思った背景
ポートフォリオの作成にRuby(Ruby on Rails)を使用しており、
フレームワーク様が非常に便利なため、DBやSQLを意識せずとも使用ができます。
それはポートフォリオの作成時には便利で助かったのですが、知識が追いついていないと感じ
今後(就職後)のことも考え、勉強を開始しました。##教材について
今は[こちら](https://www.amazon.co.jp/dp/B07L3MX199/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)の教材を使っています。![Qiita](https://images-na.ssl-images-amazon.com/images/I/9160JJpexVL.jpg)
プロゲートなどサイトで進めることも考えたのですが、
振り返り辞書的な要素としても使えるように1冊購入しました。##学習内容
###①SQLの役割
データベースへ指示を出せる翻訳語のようなイメージです。
例えば社員情報を登録しているデータベースがあり、それの一部を取り出したいよ
【Rspec】コントローラーのテストコードで謎のエラーが出た話〜CSSの記述ミス〜
### 解決したいこと
モデルのテストコードが終わり、コントローラーのテストコードを書いていました。
中身を何も書かずに実行し、緑字で全てが通って一安心。
さて中身を書いてチェックしていくぞと始めた矢先の出来事です。### 発生している問題・エラー
![94e85b18cacefbc4125fff14c50aa91c.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/887559/2bd2d248-6c15-08a3-e6d5-85ea0f9d605a.png)
“`terminal
Failures:
1) PartiesController GET #index indexアクションにリクエストすると正常にレスポンスが返ってくる
Failure/Error: <%= image_tag '1.jpeg', class: 'img-fluid', alt: 'Responsive image' %>ActionView::Template::Er
【CircleCI】Githubと連携したアプリをコミット時にRSpec通す設定個人用メモ(database.yml書き換え無し)
タイトルの通り。githubとの連携は済ませた状態です。初心者が独学とググりまくりで作ったものなのでお手柔らかにお願いします。。
## 環境
Mac OS X
Ruby: 2.7.1
Rails: 6.0.3.4
mysql: 8.0.2## 実際のコード
“`yaml:config.yml
version: 2.1
orbs:
ruby: circleci/ruby@0.1.2jobs:
build:
docker:
– image: circleci/ruby:2.7.1-buster-browsers
environment:
BUNDLER_VERSION: 2.1.4
RAILS_ENV: test– image: circleci/mysql:8.0.22
command: [–default-authentication-plugin=mysql_native_password]
environment:
Fargateでコンテナ内でタスクのIDを取得する
取得したいケースがあったのでメモ書き
“`Ruby
uri = “#{ENV[‘ECS_CONTAINER_METADATA_URI’]}/task”
response = Net::HTTP.get_response(URI.parse(uri))
json = JSON.parse(response.body)
json[‘TaskARN’].split(‘/’).last
“`
メタデータを取得してTaskのARNから抽出している。
環境変数から取得できるようにしてほしい・・・
【github actionsで自動デプロイ】Docker環境でRspecを実行し、EC2へデプロイ!!
未経験からエンジニアに転職を目指しています。
本日githubactionsでDocker環境を構築し、Rspecを実行することが出来たので備忘録として投稿します。
少しでもお役に立つことができれば幸いです。
※github actionsを用いたDocker環境構築は以下の記事を参考にさせて頂きました。
https://codelabo.com/posts/20201128164634#前提
– rails 5.2.4(rails6.0以降の場合はおそらく動作しないです)
– dockerを用いて開発をしている
– docker-composeを使用している
– 本番環境にはrbenvを使用している
※上記を満たしていても、動作しないことがあるかもしれませんがご容赦ください#rails.yml
“`ruby:rails.yml
name: Rails CI/CDon:
push:
branches: [処理を実行するためのトリガーにしたいブランチ名]
#例 masterとした場合はmasterに変更が加わった際に処理が
結合テストコード
はじめまして、今回が初投稿です。
現在オリジナルアプリを作成していて、結合テストコードを行っています。
学習期間中結合テストコードの学習をしましたが、作成するアプリに記述するのは初めてなので
手こずってしまいました。
忘れないためにも、投稿したいと思います。手こずったのは、新規登録のユーザー情報を入力するテストコードです。
初めに記述したコードがこちらです。“`
fill_in “メールアドレス”, with: @user.email
fill_in “パスワード(半角英数混合6文字以上)”, with: @user.password
fill_in “パスワード再入力”, with: @user.password_confirmation
fill_in “プロフィール写真”, with: @user.image
“`これは、新規投稿フォームにFactoryBotで生成した、情報を入力している記述です。
こちらを記述しターミナルから、“`
bundle exec rspec spec/system/users_spec.rb
“`
中身が空であることの表現
## 解決法
[インスタンス変数].empty?
## 問題
条件分岐において中身が空であるということを表現したかった
[![Image from Gyazo](https://i.gyazo.com/3c47a61cb68bacc9dd5fd17339850fd4.png)](https://gyazo.com/3c47a61cb68bacc9dd5fd17339850fd4)
↑は @itemが空のインスタンス変数であるかで条件分岐している
Railsで使用されるメソッドを自動でベンチマークするgemを作ってみた話
# 背景
巨大化老朽化してきたRailsサービスのパフォーマンス改善作業を行う際、手軽に各種メソッドのベンチマークを取りながらトライアンドエラーを進めたかった。最初は愚直に[benchmarkライブラリ](https://docs.ruby-lang.org/ja/latest/class/Benchmark.html)を使ってメソッドのベンチマークを測ろうとした。(ちなみにプロファイラは[stackprof](https://github.com/tmm1/stackprof)などを使用)
“`sample_controller.rb
class OldCarsController < ApplicationController def index Benchmark.bm 10 do |r| # なんか無茶なやり方 r.report "index action" do @q = OldCar.ransack(params[:q]) time_consuming_method1 time_consumin