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

Rails関連のことを調べてみた2020年11月14日
目次

【Ruby/Rails】Herokuでアプリケーションを公開する手順

# はじめに
## 前提
個人的な備忘録
ruby 2.6.5 / Rails 6.0.3.4 / Mysql2

# 手順
## rails_12factor インストール
“`ruby:Gemfile
group :production do
gem ‘rails_12factor’
end
“`
bundle install => **master にcommit**

## Herokuにアプリを作成
“`:ターミナル
% heroku create アプリ名
“`
アプリ名は _(アンダーバー)使えない

## Herokuにアプリができているか確認
“`:ターミナル
% git config –list | grep heroku
“`

## Mysqlの設定
clearDBアドオンを行う

“`:ターミナル
% heroku addons:add cleardb
“`

これによりDBがHerokuのデフォルトDB(PostgreSQL)からMysqlに変更

## Mysql2(Gem)への対応
URLを再設定する

“`:ターミナル
% he

元記事を表示

【Rails】論理削除を有効にする方法【paranoia discard】

記事はこちら↓
[【Rails】論理削除を有効にする方法【paranoia discard】](https://www.malanka.tech/entry/How-to-enable-logical-deletion-in-Rails)

元記事を表示

[Rails]マイグレーションファイルについて勉強してみた!(テーブルへのカラム追加)

#はじめに
Railsを操作していると、何となく存在は知っているけど、それがどういう役割を果たしているのかよく分かっていないファイルやコマンドが数多くあることに気づきました。
その中の一つが、マイグレーションファイルです。

モデルを作ると、なぜか知らんがマイグレーションファイルが出来上がっていて、`rails db:migrate`を打ち込むと、“schema.rb“にテーブルデータとして反映する…
それぐらいの認識でしたが、そこについて深掘りして解説していきます!

#マイグレーションファイルとは
マイグレーションファイルは、データベースを生成する際の設計図になるものです。
また、マイグレーションファイルを実行することで、記述した内容に基づいたデータテーブルが生成されます。

#マイグレーションファイルを生成する
ターミナルに、以下のように打ち込み、モデルを作成すると、自動的にマイグレーションファイルも生成されます。

“`ruby:基本構文
rails g model モデル名 #ここでは、モデル名を「book」とします
“`

“`ruby:db/migrate

元記事を表示

Rails / Ruby : Mail の HTML テキスト を取得する方法

Rails で、 ActionMailer::Base を継承した Mailer クラス では `mail` というメソッドを使って メールオブジェクトを作成します。
その返り値のメールオブジェクトのメソッド `deliver` を呼び出すとメールが送信されます。

## HTML をテキストとして取得

この HTML のメールの本文をテキストで取得する場合は次のようにメソッドを呼び出します。

“`ruby
mail.html_part.body.to_s
“`

この `html_part` は Rails が使用している Gem mail で定義されています。

“`ruby:2020-11-14時点でのコード
# Accessor for html_part
def html_part(&block)
if block_given?
self.html_part = Mail::Part.new(:content_type => ‘text/html’, &block)
else
@html_par

元記事を表示

既存のRailsアプリにVuetifyを導入した

# はやさを求めるなら
 Vue.jsが無事にできるようになったので、Vuetifyも、という手筈になった。Vuetifyとは素敵なコンポーネントがつまったフレームワークである。いちから作らなくてもボタンとかスライドとか、いちいちかっこいいやつがある。かっこいい。

 早速ドキュメントをみながら導入を試みた。しんどかった。全部英語だった。

https://vuetifyjs.com/en/getting-started/installation/

# 無からインストール

 はじめは既存のものに導入とか考えずに、無からやってみた。まずはVueのCLIというやつが必要らしい。公式を参考に入れよう。

https://cli.vuejs.org/

“`terminal
$ yarn global add @vue/cli
“`

 そして`vue`コマンドでつくる。

“`terminal
$ vue create my-app
“`

 数多くのファイル群ができるが、そこで以下のコマンドを入力する。

“`
$ yarn serve
“`

 この`yarn ser

元記事を表示

【Rails】updateアクション実行時にパスワードなどのバリデーションを通過させる方法

ユーザーのプロフィール情報を更新して保存するといった処理を実装するとき、ユーザーが変更したい情報のみを入力して、そのほかのフォームのバリエーションチェック(特にパスワード)はスキップさせたい!といった場面ってあるかと思います。今回はそのやり方を紹介します。

#実装方法
バリデーションオプションにある、“:onオプション“を使います。例えば“on: :create“とすることによってレコードの新規作成時のみバリデーションチェックを行うことができます。
私の場合、利用規約と個人情報のチェック(acceptedカラム)にもバリデーションチェックを行っていたため、updateアクション時にもこのバリデーションチェックが発動してしまい、ユーザー情報の変更ができないという状態になってしまっていました。“:onオプション“でユーザーの新規登録時のみバリデーションチェックを行うようにすることで、これを回避することができます。

“`ruby:user.rb
validates :password, presence: true, length: { minimum: 6 }, on:

元記事を表示

メタプログラミングRuby(第I部・水曜日まで)を読んでいく

# 1章 頭文字M

– メタプログラミングとは、コードを記述するコードを記述することである。

## イントロスペクションとは?

> プログラミングやRubyでは一般に、イントロスペクションとは実行時にオブジェクト、クラスなどを見てそのことを知る能力です。

cf. [Rubyのイントロスペクション
](https://riptutorial.com/ja/ruby/topic/8752/ruby%E3%81%AE%E3%82%A4%E3%83%B3%E3%83%88%E3%83%AD%E3%82%B9%E3%83%9A%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3)

例:

“`rb
# 以下は、クラス定義です

class A
def a; end
end

module B
def b; end
end

class C < A include B def c; end end ## イントロスペクション # Q. Cのインスタンスメソッドとは何ですか? # A. C.instance_methods # [:c,

元記事を表示

Mysql2::Error::ConnectionError: Access denied for user ‘root’@’localhost’ (using password: YES)への対処

## 記事の目的
rails db:migrateやrails sをするも以下のようなエラーが出て、解決に時間がかかってしまいました?
必要な経過だけ記事で共有させて頂き、誰かのお役に立てれば幸いです。

“`
Mysql2::Error::ConnectionError: Access denied for user ‘root’@’localhost’ (using password: YES)
“`

##Mysql2::Error::ConnectionError: Access denied for user ‘root’@’localhost’ (using password: YES)はどういう時にエラーが出る?(結論:rootユーザのパスワードが正しくない)[現状把握①]

このエラーが何なのかしっかり言及している記事が見当たらなかったのですが、公式のリファレンスや英文の記事で把握できました。(using password: NOの場合の記事は多くあった気がする。。)

公式リファレンス(以下URL参照)には、「誤ったroot パスワードを使用していることを示してい

元記事を表示

Rails書評アプリ RSpec導入編

#RSpec導入
Railsの標準で入っているminitestではなく、実務に置いてminitestより採用率の高いRSpecを導入する。
テストの手法である**TDD(Test Driven Development),BDD(Behavior Driven Development)**に関しては追々学んでいく。
##各種設定
Capybara・・・webアプリケーションのブラウザ操作をシミュレーションできる
FactoryBot・・・テスト用のデータベースの作成をサポートするgem
###各Gemインストール

“`Gemfile
group :development, :test do
gem ‘byebug’, platforms: [:mri, :mingw, :x64_mingw]
gem ‘rspec-rails’, ‘~> 4.0.0’
gem ‘factory_bot_rails’, ‘~> 4.11’
gem ‘capybara’, ‘~> 2.13’
end
“`
`$bundle`
`$bin/rails g rs

元記事を表示

トップページにおしゃれな背景画像を使うだけでそれっぽいサイトになる説を検証してみた

# はじめに
## なぜやるか
就活用のポートフォリオを作っていて第一印象がなんだか安っぽいな〜と感じたので少し手を加えてみる

## 作っているもの
記事投稿アプリ(Qiitaに近い)

## before
![スクリーンショット 2020-11-13 20.33.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/771826/9a75f9f4-8766-c30f-78c3-6bd91f161b89.png)

非ログインユーザーでも閲覧できるようにしたいので、頭にログインページは設けず。
その結果、初めてのユーザーにとってどうしたらいいの?というインターフェースになってしまっている。

## after
![スクリーンショット 2020-11-13 20.34.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/771826/6db567d6-ba7f-e77a-012d-faa09b3d9bf7.png)

とり

元記事を表示

Railsで検索バーを設ける〜複数テーブルを結合させて検索を行う

# はじめに
今回は、投稿データ(Post)を検索バーでキーワード検索を行い、表示させる。また、複数のテーブルを結合させて、その範囲で検索できるように実装していきます。

# 完成イメージ
※後日掲載予定

# 環境
MacOS 10.15.7
ruby 2.6.5
Ruby on Rails 6.0.0

# 執筆者の状況

###テーブル
![searchFunction1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/683220/f2c6251a-407e-f77c-a4ea-1ea784ca7072.png)

利用者を「User」、投稿を「Post」、画像を「Image」、都道府県を「Prefecture」(seedデータ)としてテーブルを作成しております。
(テーブルの中身は投稿用に簡略化してます)

リレーションは次の通りです。

“`ruby:user.rb
has_many :posts, dependent: :destory
“`

“`ruby:post.rb
bel

元記事を表示

rbenvを用いて任意バージョンのRubyの環境構築を行う方法

この記事では rbenv を用いて任意のバージョンの Ruby 環境を構築する方法を紹介します。

## rbenv とは?

rbenv **とはバージョンの異なるrubyをまとめて管理するツール**のことです。

rbenvを利用することで異なるバージョンのrubyを一元管理することができ、
さらに任意のバージョンにいつでも切り替えられるようになるため
任意のバージョンで Ruby を使うことができます。

例えば自己学習を進めているときに、例えばある教材では ruby 2.5.2 を使うといっているのに
別な教材では ruby 2.7.0 を使うように指示が出ていると、バージョン間の差異によりエラーが発生して詰まることがあります。

rbenv を使うことで、いつでも好きなバージョンを使うことが出来るので
少なくともバージョン間の差異によるエラーは抑制することができます。

## rbenv のセットアップ

それでは実際に rbenv をセットアップしていきましょう。

### rbenv をインストール

rbenv は HomeBrew でインストールできます。
以下のコ

元記事を表示

[Rails][ActiveStorage] 特定のuserがavatarを持っているかどうか調べる

あるuserがavatarを持っていない場合、 `user.avatar` にアクセスしようとすると例外が発生する。これを防ぐには `user.avatar.attached?` として事前にファイルが添付されているか調べるようにする。

“`rb
class User < ApplicationRecord has_one_attached :avatar end user = User.last user.avatar.attached? => false

# 添付がないのにアクセスしようとすると例外が発生
user.avatar.url
=> Module::DelegationError: url delegated to attachment, but attachment is nil

# 以下のようにすることで回避できる
user.avatar.url if user.avatar.attached?
=> nil
“`

メモ:このコミットで例外が発生しないように対応されるよう
https://github.com/rails/rails/commit/

元記事を表示

【Rails】collection_selectでCSSが適用されない時は、classを指定できてるか確認しよう

## はじめに
– オリジナルアプリ開発で発見したことについて、定着と備忘のためにまとめていきます。

## 結論

– CSS書けてるはずなのに変化がないときは、以下を確認してみよう
– class名が間違っていないか
– 記述したことが開発ツール上でも表示されているか
– `collection_select`のoptionとHTML属性には `{}` を付けよう

## 経緯

### やりたいこと

– `collection_select`で作ったセレクトボックスのスタイリングをしたい

### 作成したコード(誤り)

“`erb
#erbファイル

<%= f.label :occupation_id, "職種", class:"search-label" %>
<%= f.collection_select(:occupation_id, Occupation.all, :id, :name, selected: @search_params[:occupation_id], include

元記事を表示

[Rails]データベースのデータ型種類について勉強してみた!

#はじめに
データベースのデータ型ってメッチャ種類があって、ややこしいですよね。
当方、まだまだプログラミング駆け出しの身なので、
**「えっ、この場合はどれを使えばいいの?」**
ってなることが非常に多く、その度にGoogle検索をするのですが、丁度良い解説に巡り会えなかったので、アウトプットも兼ねて記事を書きます!
よろしくお願いします。
#データ型種類一覧
| データ型 | 種類 |
|:———–|:————|
| integer | 整数型(4バイト) |
| bigint | 整数型(8バイト) |
| decimal | 固定長整数型(精度の高い小数) |
| float | 数値(浮動小数点数) |
| string | 文字列(1 〜 255文字) |
| text | 長い文字列(1 〜 4,294,967,296文字) |
| date | 日付(1000-01-01 〜 9999-12-31)|
|

元記事を表示

【GitHub】リモートmasterブランチを過去の情報にすり替える方法(個人開発のみ推奨)

備忘録です。
リモートmasterブランチを過去の状態に直し復活させることを実現します。

#経緯
デプロイ時に全く予測のできないエラーと遭遇し、ログを読み仮説・検証をしても解決されませんでした。全くエラーの原因が予想できなかったため、エラーが起きる直前に戻したいと思いました。しかし、個人開発ということもあり、簡単にたくさんのマージしてしまった(慎重に行うべきでした、反省です)ので、masterブランチを過去の状態に戻すしか方法が考えられませんでした。

#注意
この方法は個人開発のみ推奨です。チームで開発の場合は推奨しません。
(そもそも過去の情報にすり替えることは推奨されません。)←ここ重要!

また、マイグレーションファイル(あるいはschemaやその他)の情報とのズレに気をつけてください。テスト環境でデータベースが壊れた場合や、syntax errorが起きて手に負えなくなった場合、database.yml等を修正して、他のデータベースを作成して、そこで保存する様にしてください。

私自身約2ヶ月前にプログラミングの勉強を始めたばかりの初学者です。
実行した行動を思い出しながら

元記事を表示

Railsを使ったToDoリストの作成(1.プロジェクトの立ち上げ)

#概要
本記事は、初学者がRailsを使ってToDoリストを作成する過程を`PCとの会話を意識して`記述したものです。
私自身のような初学者にとって読んでタメになり、私自身の復習にも役立つことを願って執筆しております。

#環境
* `ruby 2.6.5p114`
* `Rails 6.0.3.4`

#第1章 プロジェクトの立ち上げ

第1章では、Railsでアプリ開発をするための初期設定を行います。初期設定には、`iTerm`、`VSCode`、`Sourcetree`、`GitHub`を使用します。

##1 iTermでToDoアプリを立ち上げる

“`:iTerm
$ rails new ToDo-app
=>Webpacker successfully installed ? ?
“`
>?‍♂️ToDo-appというディレクトリ配下にファイルを作成してください
>?インストールが完了しファイルを作成しました

`ディレクトリ ⇨ フォルダのこと。ファイルを分類するための容れ物であり、複数のファイルを保管する場所である。`

##2 VSCodeでディレクトリを開く

元記事を表示

10週間終えた202011/13

### 10週間終えた感想
まずはスタートラインにやっと立てた自分に乾杯
1日1日無駄な時間が無かったです。これは死ぬまで継続すること

###継続は力なり
まず朝起きて、今日しなければいけないことを紙に書き出し可視化する(遊びでも仕事でも)
その後、1日でしないといけないことの項目を細分化
細分化した中から、時間を決める。
予定通りに進まなかったら、消去法。
体が覚えるまでひたすら繰り返し

###アプリを開発手順
企画→要件定義→設計→開発→保守・運用

###これからの人生設計
まずは今回学習したプログラミング言語以外の言語を学ぶ事
そしてオリジナルアプリの制作をする

エラーが出た時はエラー文を読み取り仮説を立てる。
最小限に抑えたいので一つの機能が終わればデプロイする事

元記事を表示

【Rails】 button_toメソッドを初めて活用してみた

#はじめに
Railsでオリジナルアプリを作成しています。indexアクションで表示されるページから直接updateアクションを実行したく、button_toメソッドを活用しました。

※今まで作ったアプリは、ツイートなどの登録一覧情報があるindexから詳細(show)ページに遷移します。そこから編集ページ(edit)に遷移して、情報を更新(update)します。このshow、editアクションを割愛して直接updateアクションを行いました。

**開発環境**
ruby 2.6.5
Rails 6.0.3.4

#目次
1.button_toの使い方
2.link_toとの違い

#1.button_toの使い方
よく使うlink_toと似ていて、リンクではなくボタンを作成できます。中身はシンプルでボタン名、パスやアクションそしてオプションで構成されます。デフォルトのHTTPメソッドはpostです。

“`ruby:○○.html.erb
<%= button_to "ボタン名", { パス or コントローラー名とアクション名 }, { オプション } %>
“`

今回作

元記事を表示

Rails初心者で自作のvalidationを作りたい人、この指に止〜まれ。

##この記事について
rails初心者がrails初心者のために書いた自由な記事。
ここ最近、友達の子どもがやたらと「**うんこ!!!うんこ!!!!**」と連発してくるので、**うんこ**と言えば面白くなるという甘い考えを排除するためにvalidationをうまく利用してお下品な言葉をこの世に広げないようにするのが目的。

##環境
Rails5

##事前準備
– rails newの実行
– 適当にcontroller、modelやテーブルの作成やらroutingの設定をしておく。

##実践
今回はPostモデルのcontentカラムに相応しくない単語(うんこ)が含まれる内容が投稿されそうになったら、検証エラーを出してサービスの愛と平和の世界を守って汚い言葉を広げないようにしていく。

###Postsテーブルのカラム

“`ruby
ActiveRecord::Schema.define(version: 2018_06_10_125752) do

# These are extensions that must be enabled in order to sup

元記事を表示

OTHERカテゴリの最新記事