Rails関連のことを調べてみた2021年02月26日

Rails関連のことを調べてみた2021年02月26日

Railsコマンドまとめ

よく使うRailsコマンドのメモです。
今まで何となく使っていたのですが、いい機会なので公式ドキュメントから調べてみました。

参考:[Railsドキュメント](https://railsdoc.com/rails)

## 新しいRailsアプリを作成

“`Ruby:

# 基本形
$ rails new アプリケーション名 [オプション]

# オプション何もなしで作成
$ rails new sample

# mysqlを使うアプリを作成
$ rails new sample -d mysql

# バージョンを指定してアプリを作成
$rails _6.0.0_ new sample

# バージョン指定とmysql組み合わせ
rails _6.0.0_ new sample -d mysql

“`

## コントローラー作成

“`Ruby:

# 基本形
$ rails g controller コントローラー名

# ビューも一緒に生成
$ rails g controller sample index

“`

今まで何にも知らずに`「g」`を使っていまし

元記事を表示

Railsで新規作成

いや、何回もしてるんですけど、改めてね。
####ターミナル

“`terminal
cd ~/(ファイル名)

rails _6.0.0_ new (アプリ名) -d mysql
“`

config/database.yml
データの保存形式変更(人によるかと)

“`Ruby
# encoding: utf8mb4
encoding: utf8
“`

DB作成

“`Ruby
rails db:create
“`

ローカルで動作確認

“`Ruby
rails s
“`

とりあえずこれがスタートライン!
後々、付け足します。

元記事を表示

【Docker】エラー Could not find gem ‘mysql2 (~> 0.5)’ in any of the gem sources listed in your Gemfile

#はじめに
Dockerの環境構築中に発生したエラーの解決した方法を記録します。
ただ、エラーは発生までの経緯で解決方法が違ってくるので、参考程度にしてください。

【エラー文】
Could not find gem ‘mysql2 (~> 0.5)’ in any of the gem sources listed in your Gemfile

#環境
Docker version 20.10.0
docker-compose version 1.27.4
#####Docker内の環境
ruby:2.6.5
Rails:6.0.0
データベース:mysql

###Dockerfile

“`docker-compose.yml
FROM ruby:2.6.5
RUN apt-get update && apt-get install -y \
build-essential \
libpq-dev \
nodejs\
vim

WORKDIR /[作成したディレクトリ名]
COPY Gemfile Gemfile.lock /[作成したディ

元記事を表示

Next.js + RailsでポートフォリオサイトをISR対応&メンテナンスフリー化した

2年ほど前に[Nuxt.jsを使ってポートフォリオサイトを作成](https://qiita.com/Y_uuu/items/f3e3382ca9f9f22e6677)しました。
今回、このサイトをNext.js + Railsでリニューアルしたので、経緯を記事にまとめます。

## リニューアル後のページ

https://portfolio.y-uuu.net/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60996/c37c9589-179b-16fe-42dc-4b3ffa4c9c65.png)

デザインは[前回のもの](https://old.portfolio.y-uuu.net)を踏襲していて、ほとんど変わっていません。

## リポジトリ

– フロントエンド: https://github.com/yuuu/portfolio_v2_ui
– バックエンド: https://github.com/yuuu/portfolio_v2_api

## リニューアルの目的

元記事を表示

【rails6.0にBootstrap】RailsにBootstrapを導入する方法

#はじめに
こちらの記事では、Railsのアプリケーションの開発途中でBootstrapを導入する方法について書いています。

##環境
ruby ‘2.6.5’
rails ‘6.0.0’

##手順

###1.必要なGemのインストール
まずは、必要なGemを導入(インストール)します。

“`ruby:Gemfile
gem ‘bootstrap’, ‘~> 4.5.0’
gem ‘jquery-rails’
“`

“`:ターミナル
% bundle install
“`
###2.CSSのファイル名変更
application.cssをapplication.scssと拡張子を変更します。

###3.scssの中身を削除
application.scssファイルの中に記述されている物を全て削除します。

“`css:app/assets/stylesheet/application.scss

#全て削除

ーーここから削除ーー

/*
* This is a manifest file that’ll be compiled into applicati

元記事を表示

Ruby 3.x, Rails 6.x, MySQL 8.x の Docker 環境構築。

# 概要

Docker と docker-compose を使い、アプリケーションサーバを Ruby 3.x, Ruby on Rails 6.x、DB サーバを MySQL 8.x でコンテナの構築するまでの手順となります。

なお、この記事ではセキュリティについての考慮は一切していません。

Windows 10 の WSL2 – Ubuntu 18.04 と Mac で確認していますが、後述する理由により Mac の方がお勧めです。

PostgreSQL の方が好みの方は、以下のページをご確認ください。
cf. [クィックスタート: Compose と Rails](https://docs.docker.jp/compose/rails.html)

## 前提

下記の環境が設定されていること。

### Windows 10

– WSL2 Ubuntu 18.04+
– Docker
– docker-compose
– MySQL Client(必要に応じて)

### Mac

– Docker
– docker-compose
– Docker Desktop

元記事を表示

【環境構築】docker + Vue.js + Rails + MySQL をエラー地獄切り抜け、構築した方法

#はじめに
色々なサイトを見ながら、まる三日かけてついに構築できましたので、スムーズに解決できた構築方法をご紹介したいと思います。

・Ruby 2.5.8 (x86_64-linux)
・Ruby on Rails 5.2.4.5

![スクリーンショット 2021-02-26 1.09.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536974/229746d3-b6a7-6fe1-8855-2716dc9d1158.png)

#初めに、ファイル作成

“`$ cd 作業するディレクトリ“`

作業ディレクトリに移動後。

“`$ touch Gemfile Gemfile.lock docker-compose.yml Dockerfile“`

ファイル構成はこちら

“`
[project_name]
├── docker-compose.yml
│── Dockerfile
│── Gemfile
├── Gemfile.lock
“`

#ファイルの中身を編集していきま

元記事を表示

includeメソッド学びメモ書き

## includesメソッドとは
アソシエーションの関連付けを事前に取得し`N +1問題`を解決してくれるメソッドのこと。

### N + 1問題
SQLが大量に発行されることで動作が重くなる問題のこと

`なぜSQLが大量に発行されるのか?`

(例)

user_idにuserテーブルのidを外部キーとして参照するfruitsテーブルがあったとして・・・

fruitsテーブル

| id | name | user_id |
|:-:|:-:|:-:|
| 1 | りんご | 2 |
| 2 | みかん | 3 |
| 3 | バナナ | 1 |
| 4 | マンゴー | 2 |

userテーブル

| 1 | 2 |
|:-:|:-:|
| 1 | タケシ |
| 2 | サトシ |
| 3 | カスミ |

UserモデルはFruitモデルに対して1対他の関係になっている

“`ruby:Userモデル
class User < ActiveRecord::Base has_many :fruits end

元記事を表示

式展開ってなんなの?

# 式展開とは?
– 文字列の中に式を入れることができる機能
– 書き方は文字列中で`#{式}`とするだけ
– 文字列を作るときにダブルクォーテーション`”`で囲む

## 記述例と出力例

“`:記述例
“今日で#{20+1}歳になりました”
“`
“`:表示例
今日で21歳になりました
“`

## ターミナルでirbを使用して確認してみる

“`:出力成功例
irb(main):001:0> “今日で#{20+1}歳になりました”
=> “今日で21歳になりました”
“`

“`:出力失敗例
# シングルクォーテーションだと式展開されない
irb(main):002:0> ‘今日で#{20+1}歳になりました’
=> “今日で\#{20+1}歳になりました”
“`
>`シングルコーテーションは不可`
シングルクォーテーション`’`で囲んだ場合は式展開が行われません

# 補足
式展開の`式`に関して

`Rubyにおける「式」とは`
文字列や数値の他に

– メソッドの呼び出し
– 変数
– 演算子式

などが含まれます。

すなわち、`”文字列”

元記事を表示

一覧表示(index)に特定のデータを表示させたいとき (current_userメソッド使用時)

#実装したかったこと
– ログインしていなくても、indexページを表示させたかった
– ログインしているユーザーのデータのみを一覧表示させたかった表示させたかった

# ハマったこと
indexページにログインしているユーザーのデータのみを表示させようとした際に、current_userメソッドを理解できていなく、初歩的なミスに気付けなかった

**BEFORE**

“`rb:accounts_controller
class AccountsController < ApplicationController before_action :authenticate_user!, except: :index def index @accounts = Account.where(user_id: current_user.id).order('created_at DESC') end ---省略--- end ``` **AFTER** ```rb:accounts_controller class AccountsController < A

元記事を表示

FactoryBot & Fakerの導入 (Rspecでの使い方)

初学者です。備忘録がてらまとめました。

– Ruby2.6.5
– Rails6.0.0

### テストコードを効率的に書きたい!

テストコードが冗長になって読みにくい..そんな時に使えるFactoryBot!
例えばUserのログイン機能をテストしたいとします。

以下が使ってないverです。

“`
RSpec.describe User, type: :model do
describe ‘ユーザー新規登録’ do
it ‘nicknameが空では登録できない’ do
user = User.new(nickname: ”, email: ‘test@example’, password: ‘000000’, password_confirmation: ‘000000’)
user.valid?
expect(user.errors.full_messages).to include(“Nickname can’t be blank”)
end
“`

次にFactoruBot使用verです。

“`
RSp

元記事を表示

【Rails】Twitter APIを使ってトレンドを取得したい

# はじめに

現在、TwitterAPIを使って、トレンド情報を取得する機能を実装しています。

まだまだ途中ですが、ひとまずこれまで気づいたことをまとめていきます。
使用するAPIはStandard v1.0です。

なお、本記事は初学者によるものです。
アドバイスなどございましたら、コメントいただけると幸いです!

# 環境

– Ruby on Rails 6.0.0
– mac os catalina
– TwitterAPI standard v1.0

# 導入の手順

1. Twitter developerへ登録
2. 各API keyを取得
3. gem Twitterを導入

###Twitter developerへ登録###

ぐぐると登録の仕方がたくさん出てくるので、深くは解説しません。
余談ですが、申請時に書く内容は全部日本語で記載しても通りました。

###各API keyを取得###

####【概要】####
APIを使用するために、認証をする必要があります。
認証には、以下4つのAPIキーが必要です。

– consumer key (API

元記事を表示

productionモードでサーバーを立ち上げるとcssが反映されない。

##producition用のデータベース作成
“`
rails db:create RAILS_ENV=production
“`

##アセットのプリコンパイルを行います
“`
rails assets:precompile RAILS_ENV=production
“`

##サーバー起動
“`
rails s -e production -b 0.0.0.0
“`

…cssが反映されない。。

##解決策
config/enviroments/production.rbの

“`
config.assets.compile = false
“`

“`
config.assets.compile = true
“`

に変更したらうまくいきました。
アセットファイルがないときにファイルを探して自動コンパイルしてくれる設定のようです。

元記事を表示

Bootstrapのhtml見本をhtml.erbで使うときの書き方変換いろいろ【超初心者】

よく忘れるので書き方
ボタンとフォームの書き方

“`erb:ボタン
#html

#html.erb form_withを使ってるとき
<%= f.submit '投稿ボタン', class: "btn btn-primary" %>
“`

“`erb:フォーム
#html


#html.erb form_withのフォーム

<%= f.label :content, "投稿内容" %>
<%= f.text_area :content, class: "form

元記事を表示

Rails Googleアカウントを利用したSNS認証

##経緯
Googleアカウントを利用したSNS認証を実装したいと思い、記事を参考にしながら作業していたが、難航した為、補完した記事を書きたいと思いました。

##前提
・devise機能は実装済とする。
・下記参考サイトをメインとし、不足及び不備の補完を行う。
#####参考サイト
・https://qiita.com/akioneway94/items/35641ad30c2acb23b562

##手順1 GoogleAPI登録
Googleplatformにログイン後以下の画像の通り操作

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1031232/ef0e2d14-ffc1-3b4a-fcd6-b95fda5a05da.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1031232/97df37c9-bb3b-c9d7-420b-2434fe2f34bc.png)

元記事を表示

rails + docker環境内で時間を日本時間に合わせる

docker-compose.yml

“`
web: &web
build: .
# command: bundle exec rails s -p 3000 -b ‘0.0.0.0’
volumes:
– .:/app
– gem_data:/usr/local/bundle
ports:
– “3000:3000”
environment:
WEBPACKER_DEV_SERVER_HOST: webpacker
WEBPACKER_DEV_SERVER_PUBLIC: 0.0.0.0:3035
TZ: Asia/Tokyo ← こいつを記載
“`
application.rb

“`
module App
class Application < Rails::Application # Initialize configuration defaults for originally generated Rails version. confi

元記事を表示

【Railsチュートリアル】第10章 ユーザーの更新・表示・削除 10.2まで

# はじめに

これまで未実装だったedit、update、index、destroyアクションを加え、RESTアクションを完成させる。

# 10.1 ユーザーを更新する

PATCHリクエストに応答するupdateアクションを作成する。

## 10.1.1 編集フォーム

まず、Usersコントローラにeditアクションを追加して、それに対応するeditビューを実装する。
ユーザー編集ページのURLは/users/1/edit。ユーザーidは`params[:id]`変数で取り出すことができる。

“`ruby:app/controllers/users_controller.rb
def edit
@user = User.find(params[:id])
end
“`

アクションを作成したら、ビューを作成する。
editビューは見た目は`app/views/users/new.html.erb`と似ているが、HTMLソースに少し違いがある。

“`ruby

元記事を表示

第9章 発展的なログイン機構

# はじめに

永続cookie(permanent cookies)を使って[remember me]を実装する。

# 9.1 Remember me 機能

ユーザーのログイン状態をブラウザを閉じた後でも有効にする[remember me]機能を実装していく。

## 9.1.1 記憶トークンと暗号化

### Cookiesの場合

ブラウザ(cookie)に暗号化したパスワードとDBに入っているハッシュ化しているパスワードが一致するかRailsで認証する。
下記の方針で永続的セッションを作成する。
1. 記憶トークンを保存する場所を用意する。
2. 記憶トークンにはランダムな文字列を生成して用いる。
3. ブラウザのcookiesにトークンを保存するときには、有効期限を設定する。
4. トークンはハッシュ値に変換してからデータベースに保存する。
5. ブラウザのcookiesに保存するユーザーIDは暗号化しておく。
6. 永続ユーザーIDを含むcookiesを受け取ったら、そのIDでデータベースを検索し、記憶トークンのcookiesがデータベース内のハッシュ値と一致することを

元記事を表示

wicked_pdfでコンソールからPDFを作成したい

# はじめに

wicked_pdfでコンソールからPDFを作成したいシチュエーションに遭遇したので、備忘録も兼ねてQiitaに記事を残します。

# 環境
Ruby 2.6.5
Rails 5.2.4
wicked_pdf 1.1.0

# wicked_pdfとは?

RailsでPDF出力をしたい時に用いるGemで、HTMLを書くようにPDFを作成することができます。
PDFを作成するGemには[Prawn](https://github.com/prawnpdf/prawn)もありますが、PrawnはゴリゴリのDSLなので、自由度は高いですが学習コストがかかります。

wicked_pdf本家リポジトリはこちら
https://github.com/mileszs/wicked_pdf

# 前提

app/views/users/profile_pdf.pdf.slimというファイルがあり、中身が

“`slim
h1 = @user.name
h3
メールアドレス
p = @user.email
h3
プロフィール
p = @user.profile
“`

元記事を表示

Rubyについて

本日はRubyについて。。。
志望している会社でRubyに力を入れていらっしゃったので、復習というより知識をつけようと。

##Rubyって何?
・プログラミング言語
・Webアプリ開発に特化
・DBと繋がりやすい
・幅広く使われている
・文法が覚えやすい

ってな感じ。

そもそもプログラムって実行しなきゃメモ用紙なのよねえ。=Excel的な。

##Ruby on Railsって何?
最初、「どっちもRubyやん。違いが分からん」という感じでした。

結論は、「Rubyのフレームワークの一つ」ということ。。
フレームワークとは、要は「頻度の高いツールのハッピーセット」的なものだと考えてる。
それぞれを単品で細かく頼むより楽だし、早いし。
つまり、Ruby(?)のハッピーセットがRuby on Railsって名前で売ってある的な。わかりずらいか。

もちろんRubyのフレームワークは他にも「Sinatra」や「HANAMI」なんて可愛い名前のものもある。
それぞれ特徴があるが、一番使われているのが「Ruby on Rails」とされているんだと。

参考はこちら
https://en

元記事を表示

OTHERカテゴリの最新記事