- 0.1. Railsポートフォリオ作成 #3 DB設計
- 0.2. RubyonRailsでRSpecによるテストコード実行手順メモ
- 0.3. ActiveResourceを使ってRailsアプリ同士をAPI連携させる
- 0.4. 【Ruby on Rails】データベース操作まとめ(rails db:**)
- 0.5. [Ruby on Rails]編集ページでのエラーメッセージの出し方
- 0.6. 要素サイズの設定
- 0.7. Railsチュートリアル4章まとめ
- 0.8. 結合テストコードを書いてみよう②
- 0.9. 【RubyonRails】uninitialized constant ●●Controllerの解消方法【progate】
- 1. uninitialized constant
- 2. 症状
- 3. 解消方法
- 3.1. deviseについて
- 3.2. The server quit without updating PID fileというエラー
- 3.3. NameError の解決例
- 3.4. 【Rspec】コントローラーのテストコードで謎のエラーが出た話〜CSSの記述ミス〜
- 3.5. 【CircleCI】Githubと連携したアプリをコミット時にRSpec通す設定個人用メモ(database.yml書き換え無し)
- 3.6. Railsアプリでイタズラ投稿と格闘してみた話
- 3.7. 【github actionsで自動デプロイ】Docker環境でRspecを実行し、EC2へデプロイ!!
- 3.8. 結合テストコード
- 3.9. Railsで使用されるメソッドを自動でベンチマークするgemを作ってみた話
- 3.10. Rails6での before_render
- 3.11. オリアプのREADMEを書いてみた
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にする
<使用可能オ
[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
要素サイズの設定
#box-sizingプロパティ
paddingやborderなどで、要素が崩れることがあります。それを防ぐためには、box-sizingプロパティが有効です。
“`css
* {
box-sizing: border-box;
}
“`ちなみに「*」というセレクターは、すべての要素に適用させるという意味があります。
railsの場合application.cssに記述すると良いです。ほとんどのビューを作るときに必要となるものだと思います。
Railsチュートリアル4章まとめ
#この章で学ぶこと
基本的なRubyの構文を学ぶ
基礎をある程度知っていればこの章は程々に流し見すればOK+ helper
+ Ruby自体の文字列、オブジェクト
+ メソッド
+ 配列、範囲演算子
+ ブロック{}
+ ハッシュとシンボル (#タグではありません)
+ クラス、クラスの継承4.1.2 カスタムヘルパー
ビューなどで新しく作ったメソッドはカスタムヘルパー と呼ぶ
まずは“full_title“というヘルパーを作成する
full_titleヘルパーは、ページタイトルが定義されていない場合は基本タイトル「Ruby on Rails Tutorial Sample App」を返し、定義されている場合は基本タイトルに縦棒とページタイトルを追加して返す“`app/helpers/application_helper.rb
module ApplicationHelper# ページごとの完全なタイトルを返します。
def full_title(page_title = ”)
base_title = “Ruby on Rails Tut
結合テストコードを書いてみよう②
ツイートの結合テストコードを記述するファイルを作成しましょう。
“`
% rails g rspec:system tweets
“`##ツイート投稿の結合テストコード
“`rb:spec/system/tweets_spec.rb
require ‘rails_helper’
RSpec.describe ‘ツイート投稿’, type: :system do
before do
@user = FactoryBot.create(:user)
@tweet_text = Faker::Lorem.sentence
end
context ‘ツイート投稿ができるとき’do
it ‘ログインしたユーザーは新規投稿できる’ do
# ログインする
visit new_user_session_path
fill_in ‘Email’, with: @user.email
fill_in ‘Password’, with: @user.password
find(‘input[name=”commit”]’
【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)
解消方法
対象のコントローラーのファイル名が単数形を複数形にすることで、エラーが解消されました。
コントローラー名
deviseについて
#WHY
deviseの導入やデフォルトの設定など度々わすれてしまうので1つのアウトプットとしてこれに書き出す。—–
#deviseとは
ユーザーの管理機能やログイン機能などが簡単に実装できるGem。##deviseの導入
Gemfileの最後に記述“`ruby
gem ‘devise’
“`
ターミナルで以下を記述していく
※pwcはカレントディレクトリが導入したいディレクトリであることを確認するため“`
pwdbundle install
rails g devise:install
“`
最後に「* Not required *」と表記されれば成功。##モデルを作成
ターミナルで以下を実行“`
rails g devise user
“`
db/migrateディレクトリに20XXXXXXXXX_devise_create_users.rbのようなマイグレーションファイルが生成される。
続いてルーティングに“`ruby
Rails.application.
The server quit without updating PID fileというエラー
#はじめに
Railsを使っていて最初はspliteを使っていたのですが途中から
MySQL8.0に変えました。
インストールして、諸々の設定をして最初は問題なく使えていたのですが
途中からなぜかデータベースが読み込めなくなったので(原因はいまもわかりません)
MySQLをアンインストールして再度インストールしました。すると
The server quit without updating PID file
というエラーが出てこいつになかなか悩まされました。
##解決法
PCを再起動しましょう。
僕の場合はこれで解決しました。
インストール後はPCの再起動が必要なようです。非常に初歩的な話ではありますが、MySQLを扱うのが初めてなもので
どこに原因があるのかわからず再起動に行き着くまで
3時間ほど消費してしまいました。(笑)
NameError の解決例
NameError in Posts#edit
undefined local variable or method ‘post’ for #<#
“`
form_withは、モデルとオプションを入力すると送信先の設定が自動でされます。
今回はpost(nilな変数)から送信先が推測できなかったことがエラー原因です。
したがってpostを@postに修正して下記の表記にします。“`app/views/posts/deit.html.erb
<% form_with model:@post,class::form,local:true dp |form| %>
“`
【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:
Railsアプリでイタズラ投稿と格闘してみた話
# 前提
そうだ、ポートフォリオアプリの開発記録忘れる前に記録しときたいな…
➡︎ Qiitaに投稿
[30代元食品工場長がフードシェアサービスのポートフォリオを約2週間で開発した話](https://qiita.com/y_h_tomo/items/1c88ffeb724e893730d6)
➡︎ 何故かLGTMたくさん頂けた
**(技術参考になるかも怪しい記事にLGTMありがとうございます!)**
➡︎ ポートフォリオアプリにイタズラ投稿発生– 「ああああああ」
– 「(NGワードなどなど)」➡︎ なるほど…これは考えてなかった。勉強になるな…(現在)
# 環境
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/802059/f32df107-66fe-7658-be29-0720d8004503.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80205
【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
“`
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
Rails6での before_render
render メソッドを、run_callbacks で包むだけのモンキーパッチ
“`rb
# frozen_string_literal: truemodule BeforeRender
extend ActiveSupport::Concernincluded do
define_callbacks :render
prepend RenderPatch
endmodule RenderPatch
def render(*options, &block)
run_callbacks(:render) do
super(*options, &block)
end
end
endclass_methods do
def before_render(*names, &block)
_insert_callbacks(names, block) do |name, options|
set_callback(:render, :before
オリアプのREADMEを書いてみた
## はじめに
転職活動に向けて作成したポートフォリオサイトに関して、なかなか他の人のオリアプのREADMEを見る機会はないと思い、Qiitaに投稿してみました。他にも書き方は色々あると思うので、一つの案として見てください。尚、いたずら防止のために、アプリのURLは載せていませんので、ご了承ください。## アプリケーション名
#### CYCLE NOTE## 開発環境
HTML&CSS / JavaScript / Bootstrap / Ruby / Ruby on Rails / RSpec /
MySQL / EC2 / S3 / Visual Studio Code## ログイン方法
ヘッダー右側のゲストログインボタンから、ゲストユーザーでログイン可能
##