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

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

[rails] migrate:reset でのエラー

#はじめに
railsでアプリを作成していた際、db:migrateをした際に、エラーが発生しめmigrate:resetをしたのですがその際初めてのエラーが発生したので、その備忘録として書きたいと思います。

## 最初のエラー
新しくテーブルを作成するためにマイグレーションファイルを編集して実行したところファイル内に記述していたテーブル名に記述ミスがあり、エラーが発生しました。

““
class CreateHoges < ActiveRecord::Migration[5.2] def change create_table :hoges do |t| t.references :huge t.text :text t.timestamps end add_foreign_key :hoges, :missname, column: :huge_id # missnameが記述ミス end end ```` そのため、記述を直し改めてマイグレーションファイルを実行したところ以下のエラーが発生しました。

元記事を表示

【Rails】wheneverを用いたバッチ処理の実装

#目標

登録ユーザー全員に、Googleメールを1日毎に送信する。

# 開発環境
・Ruby: 2.5.7
・Rails: 5.2.4
・Vagrant: 2.2.7
・VirtualBox: 6.1
・OS: macOS Catalina

# 前提

・メール送信機能を実装済み。

メール送信機能 ➡︎ https://qiita.com/matsubishi5/items/c88e8c58b1ce39302868

#メール送信機能を編集

###1.`「login_mailer.rb」`を編集

“`ruby:daily_mailer.rb
class DailyMailer < ApplicationMailer def send_mail(user) @user = user mail to: @user.email, subject: "定期配信" end def self.send_when_everyday @users = User.all @users.each do

元記事を表示

Rubyの『テスト自動化』(Minitest)について、簡単にまとめてみた。

#はじめに
これは、[プロを目指す人のためのRuby入門(チェリー本)](https://www.amazon.co.jp/%E3%83%97%E3%83%AD%E3%82%92%E7%9B%AE%E6%8C%87%E3%81%99%E4%BA%BA%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AERuby%E5%85%A5%E9%96%80-%E8%A8%80%E8%AA%9E%E4%BB%95%E6%A7%98%E3%81%8B%E3%82%89%E3%83%86%E3%82%B9%E3%83%88%E9%A7%86%E5%8B%95%E9%96%8B%E7%99%BA%E3%83%BB%E3%83%87%E3%83%90%E3%83%83%E3%82%B0%E6%8A%80%E6%B3%95%E3%81%BE%E3%81%A7-Software-Design-plus%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA/dp/4774193976)を読んで理解を自分なりにまとめて書き記した物です。
個人的にわからない箇所を書き記したものと

元記事を表示

windows10(WSL2)でRailsの環境構築をしてみた~Rails導入/起動まで~(2)

#はじめに
[前回記事](https://qiita.com/yoshige/items/7a17bb7a3582d72a7e48)にてWSL2の導入ができましたが、今回はWSL2を用いて実際にUbuntu 18.04に環境を構築していきます。

#Ruby(Rails)導入
@ksh-fthr さんの以下記事を参考にしました。
[Windows10 で WSL を使って Rails 環境を構築したときのメモ](https://qiita.com/ksh-fthr/items/64a4e86c8bad08322c94)
見出し`Rails 環境を構築しよう`の`1~8`を実施してください。

今回しようとしているのは上記の記事と若干違うので、以下の点だけ異なっています。
・`Ruby 2.6.6`を導入
・sqlite3ではなくmysqlを導入するので`7.sqliteを入れよう`は実施不要

#WebPackerの導入
`rails6`から`Webpacker`が必須となり、Webpackerを入れないと、Railsアプリ作成の際にエラーが出てしまいます。
`Ubuntu 18.04

元記事を表示

windows10(WSL2)でRailsの環境構築をしてみた~WSL2導入まで~(1)

#はじめに
web開発に関してはmacユーザが多いと思うが、windowsでも WSL( Windows Subsystem for Linux) なるものでLinuxでのRails開発環境をある程度整えることができたので、備忘として残そうと思います。

| 環境
| —————————
| Windows 10 Home 64bit

また、今回導入したものは以下となります。

| 導入したもの
| —————————
| Ruby 2.6.6
|Rails 6.0.2.2
|mysql for linux 14.14
|Atom 1.45.0

#WSLを導入する
WSLの導入には@yoshigeさんの以下記事が非常に参考になりました。

まずは、以下の記事を参考にWSL1を導入し、初期設定まで済ませます。
Microsoft StoreでLinuxの

元記事を表示

HerokuでのデプロイでPrecompiling assets failed.が出たときの対処法

初めてHerokuでデプロイを行なったらPrecompiling assets failed.というエラーが出てきてしまったので備忘録として投稿します。こちらのエラー、原因は色々あるみたいですので、下記の解決法が全てではありません。

## 開発環境

MacOS 10.15.4
Ruby 2.5.1
Rails 5.2.3

## 最初に
エラーは目立つ部分が全てではない!!

“`
remote: ! Precompiling assets failed.
“`
こちらの一文は赤字で目立ちますが、実は大事な部分がターミナルをさかのぼると出てきます。

## エラー1
さかのぼるとこの様なエラーが出てきました。

“`
NoMethodError: undefined method `[]’ for nil:NilClass
“`
[]を見て思い出しました!!
環境変数セットしてなかった…
私はcredential

元記事を表示

Rails テーブルの制約について


Rails初心者の備忘録です。

#制約とは
Railsでテーブルのカラムやデータに制限を加え、想定通りの値が入るようにします。

例えば郵便番号のように数値のデータが欲しいとき、文字列が入ってしまうと機能がおかしくなってしまうこともあります。
そのため、制約を設定します。

#制約の種類
##データ型
一般的によく使われているのがデータ型で、以下のようなものがあります。

string 短い文字
text 長い文字
integer 数値(整数)
float 数値(浮動小数)
date 日付
datetime 日時
time 時刻
boolean 真偽

##NOT NULL制約
空欄を禁止する制約です。“`null: false“`を付けます。

“`.rb
class CreatePostImages < ActiveRecord::Migration[5.1] def change create_table :post_images do |t| t.text :shop_name t.text :image_id, null

【Rails】日本語表記化(ページネーション、エラーメッセージ)

railsで英語表記になっているものを日本語にする方法があります。

#ページネーション
Railsのgemである`will_paginate`のラベルを日本語に変えます。

■デフォルト
スクリーンショット 2020-04-26 0.33.25.png

■日本語表記後
スクリーンショット 2020-04-26 0.43.19.png

##実装
まず`config/environment.rb`に以下を記述します。

“`config/e

Railsの開発環境でサブドメインをテストする

# 概要
Railsではデフォルトではlocalhost:3000で開発環境にアクセスできますが、
ルーティングをサブドメインで切り替えるテストをしたいなと思った時にハマったので、解決策を示します。

# ルーティング

“`rb:routes.rb
# hostがexample.comの時だけアクセスさせたい
constraints host: example.com do
get ‘top’, to: ‘top#index’
end
“`

# 新しいドメインを追加する
OSがmacまたはlinuxの場合は、/etcディレクトリに、windowsの場合はC:\Windows\System32\driversに存在するhostsファイルに新しいドメインを追加します。

“`linux:hosts
127.0.0.1 localhost example.com
“`

これで、127.0.0.1というIPアドレスにlocalhostとexample.comというホスト名を設定できました。

# Blacked Hostsの設定
Rails6を使用している場合は、アクセス可能

Dockerでコンテナ内で作成したファイルをローカルにコピーする方法

プログラミングを勉強中です。
Dockerを使用して開発している最中に少し詰まった部分があったため、備忘録として残します。

##状況 
Docker内で作成したファイルを、ホスト環境にコピーしたい。

##(脱線)ホスト環境とは??

Dockerの勉強を始めた時は(今もそうですが)ホスト環境?コンテナ内で開発???
というワードの段階ですでに理解が追いついていなかったので簡単にまとめます。

###ホスト環境
今目の前で使用しているパソコン内の開発環境のこと。
ローカル環境ともいいます。

###リモート環境
Dockerのコンテナ内の環境のことです。

##(本題)Dockerでコンテナ内で作成したファイルをローカルにコピーするコマンド
コンテナのファイルをローカルにコピーするには下記のコマンドで実行できました。

“`
docker cp 【コンテナID】:アプリ名/ディレクトリ名/ファイル名 コピーしたいディレクトリ名/つけたいファイル名
“`
コンテナIDを確認するには↓↓

“`
docker ps
“`

コンテナ内のディレクトリ指定と、ローカルのディレクト

Rails 個人学習記録 #3 (2020/04/25)

# 学んだこと

##SQlite の扱い方
### rails console の起動と終了
終了の仕方は progate では習わなかったので調べましたー

起動

“`
$ rails console
“`

終了

“`
$ exit
“`

### データベースの内容を確認する

【Rails】データベースの中身を確認する方法【Cloud9】


このサイトを参考にさせて頂きました。
分かりやすく簡潔にまとまっていて助かりました:relaxed:

## html & css
### 文字を上に寄せるには
トップページの背景画像を設定した後、
メインメッセージをもう少し上に寄せたいなー、と思い
cssでどうにかして出来ないか検索したのち、

**” 上に寄せる ” ではなく ” 下に余白をつくる “**

という事を知り、padding-bottom を実装。
なるほどそういう考え方ね、と 😉

### メッセージにアニメーションを加える
【CSS】ページ読み込み時にフワっとスライドフェードインするアニメーション https:/

DockerでNginx+unicorn+rails+Mysqlの開発環境を作ってみた

#はじめに
今回はタイトル通りの開発環境を構築したので備忘録的にまとめる為に記事にしました。
既存のrailsプロジェクトにこの開発環境を導入する記事になります。新しいrailsプロジェクトの場合は少し手順が変わりますが同じように環境を構築できると思います。

###参考させていただいた記事等
[世界一丁寧なAWS解説。EC2を利用して、RailsアプリをAWSにあげるまで](https://qiita.com/naoki_mochizuki/items/5a1757d222806cbe0cd1)
こちらの記事を参考にAWSにアプリをデプロイしていたのでunicoronの設定を同じものにしています。
nginxの設定ファイルはこちらを参考にさせていただきました。
[Nginx設定のまとめ](https://qiita.com/syou007/items/3e2d410bbe65a364b603#server%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF)
[nginxについてまとめ(設定編)](https://qiita.com/morrr/items/7c9

AWSを用いてrailsアプリをデプロイするプロセスを頑張って噛み砕いてみるvol.5

## 近況報告
 **私の大好きなアーティスト,ポルノグラフィティのボーカル,岡野昭仁がyoutuberデビュー**して一ヶ月。最新の投稿ではLiSAのカバーしてて界隈では大盛り上がりでした。~~界隈 #とは~~

何がすごいって,カバーなのに岡野昭仁の曲と化すんですよ。圧倒的な経験実力声量があるからこそですよね。プログラミングも先人たちの知恵をコピーしたり応用したりフル活動して自分たちの作品を作り上げていくのだから負けては要られません!

### 今回の目標
・インフラ整備での各アクションの言語化
・コードを単に打っているだけでは理解しきれないし,他に応用できないので言語化して整理
・テックキャンプ受講生支援

## おおまかな流れ
・本番環境でrailsを起動させる。
・アセットファイルのコンパイル

##事前準備
[vol.1](https://qiita.com/aaabb6211/items/6194fa53f29061dc5444)
[vol.2](https://qiita.com/aaabb6211/items/2f8c5034b791767dee7a)
[vol.3]

Action Cableについて

# 背景
Railsでチャット機能の実装はどのようにするのかなと気になって調べてみると「Action Cable」というものを使うと簡単に実装できるとあったので簡単ではあるが、備忘録として自分なりに概要を書こうと思った。

##Action Cableとは
WebSocketとRailsのその他の部分をシームレスに統合するためのもの。Action Cable が導入されたことで、Rails アプリケーションの効率の良さとスケーラビリティを損なわずに、通常のRailsアプリケーションと同じスタイル・方法でリアルタイム機能をRubyで記述できます。

##実装手順
1.speakというアクションをもつ、ChatRoomチャンネルを作成する
※channels/chat_room.coffeeファイルはいらないので削除する

“`
$ rails g channel chat_room speak
“`

2.app/assets/javascripts/chat.coffeeをchat.jsにrenameし以下を記述する。

“`chat.js

if(/chat/.test(win

[Rails]Hello ~ Enum ~

はじめに
===
Railsに触れ始め1ヶ月あまり、ふと`enum`に出会った。
その出会いについてまとめてみます

出会い
===
Aさん: 権限とか状態がこのサービスにはたくさんあるんだ
自分: へーそうなんですね。(覚えるの大変そうだな。。。)

しばらく一人で調べてみる。それっぽいのはあるけど、なんかよくわからん。なので聞いてみた

自分: 権限とかってどうやって判断してるんですか?
Aさん: enum 使ってる
自分: enum?何それおいしいの?

私は〜こうして〜enumと~出会ったので〜あったー。

enum is nani?
===
– 皆大好き`ActiveRecord`の追加されたモジュールです。(4.1以降)
– 特定のカラムの値と文字列(シンボル)をマッピングさせる

何が嬉しいの?
===
Userモデルに`state`カラムがあり、属性として`active`と`inactive`があると仮定します。おそらく下記のどちらかのパターンで設計する可能性があるかと思います。

| カラム名 | 型 | 値 | 作成方法 |
| —- | —- | —

Docker+rails環境開発

※雑メモです

### はじめに

久しぶりです。私は今フリーランスをしています。ちなみにフロントエンド(React + TypeScript)です。私の現場のバックエンドがrailsなので、今日からバックエンドについていろいろまとめようかなと。この記事では最初の肝である「**環境構築**」です。

※結構簡易的に書いてます。雑です。ご了承ください。

### 事前準備

#### Docker

[公式サイト](https://hub.docker.com/editions/community/docker-ce-desktop-mac)よりダウンロードしてください。

### 1.ディレクトリ作成

“`shell
$ mkdir docker-rails-sample
$ cd docker-rails-sample
“`

### 2.Dockerfile記述

“`dockerfile
FROM ruby:2.6.3

# 必要なパッケージのインストール
RUN apt-get update -qq && \
apt-get install -y build-e

content_tagの使い方について

# 背景
見たこと無い記述が出てきて調べた際に便利だったので、備忘録として書きます。

##content_tagとは
Railsのビューヘルパーで、これを用いるとHTMLコードの要素を生成することが出来ます。
これを使うことでスマートなコードを書くことができます!

##使い方

“`ruby

#通常
content_tag(:p)
#=> “

content_tag(:p, “テスト”, id: “test”, class: “test-class”)
#=> “

テスト

# 入れ子
content_tag(:div, id: “hoge”) do
 content_tag(:p, “テスト”)
end
#=> “

テスト

# ヘルパーに切り出して使う
def helper
 #処理
 hoge = 値
 content_tag(:div, hoge) 返り値
end
“`

DBからデータを取り出すメソッド

# 背景
データを取り出すメソッドとして「pluckメソッド」「mapメソッド」があります。
その2つをもう少し詳しく知りたかったので調べて簡単に解説します。

## pluckメソッドとは
pluckはRailsでデータベースからデータを取り出すメソッド。
pluckではデータは配列として取り出され、指定したカラムが2つ以上の場合は、配列の配列になる。

“`
モデル.pluck(カラム名)
“`

##使い方

“`ruby

#1.データ作成
User.create(name:”広瀬すず”)
User.create(name:”新垣結衣”)
User.create(name:”浜辺美波”)

#2.pluckメソッドを使って,nameのカラムの値を取り出す

User.pluck(:name)
# => [“広瀬すず”, “新垣結衣”, “浜辺美波”]
“`

###問題点と解決法
以下のように記述してしまうと、配列の形のまま出力されてしまう。

“`ruby

<%= User.pluck(:name) %>
# =>[“広瀬すず”, “新垣結衣”, “浜辺美波”

AWSへのrails:db seedでハマった件と対処法

#AWSへのrails:db seedでハマった件と対処法

##背景
AWS上のアプリに対してローカル環境からrails db:seedを実行したところ以下のエラーが発生し、
ハマったので記録しておきます。
*エラーは _task-appというroleがAWS上にありません_ というエラー

“`bash
MAC: XXX$ bundle exec rails db:seed RAILS_ENV=production
rails aborted!
ActiveRecord::NoDatabaseError: FATAL: role “task-app” does not exist
“`

## 目次
* [動作環境](#動作環境)
* [結論](#結論)
* [経緯](#経緯)
* [原因](#原因)
* [おわりに](#おわりに)

—————————————
## 動作環境
`OS : macOS Mojave 10.14.6`
`ruby : 2.6.3p62`
`rails : 5.2.4`

## 結論
AWS上で

Gem、RubyGems、Bundlerについてちょっと深ぼってみる

## はじめに

『Gemってどこに保存されていて、どんな風にインストールされるんですか?』
と質問され、「Gemのこと全然しらない、、、!」と思ったのでちょっと深ぼってみました~??

※ Gemやbundlerのインストール方法や使用方法などは割愛しております?‍♀️

## 目標
GemやRubyGems、Bundlerにいまよりちょっと詳しくなる!?

## Gemとは?
一言でGemと言っても実は2つの意味を持っているみたいです。

①RubyGemsが公開しているRubyのライブラリ(パッケージ)自体のこと
②そのライブラリを管理するパッケージ管理システムの名前のこと(=RubyGemsのこと)

### RubyGemsとは?
>RubyGemsは、Ruby言語用のパッケージ管理システムであり、Rubyのプログラムとライブラリの配布用標準フォーマットを提供している。

簡単に言うと、ライブラリ(=Gem)をインストールしたりアンインストールする仕組みのこと!

“`terminal:gemコマンド
$ gem install 〇〇
$ gem uninstall 〇〇