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

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

学び直し1日目 環境構築、ログイン機能

1日目は初歩の初歩から、

– 環境構築
– ログイン機能

上2つをやっていきます。もう何度もやりましたが、
「知っていても理解ができていない」状態なのでやり直します!

今日の教科書
[神戸プログラミングアカデミーrailsチュートリアル](https://www.prog-ac.com/archives/1230)

↑のリンクを参考にやっていきます。

#環境構築

https://qiita.com/U-MA/items/996ae933ae94c5711883

#見出し1
##見出し2
###見出し3
####見出し4
#####見出し5
######見出し6

rail s

– まず読むべし
– こまめに下書き保存しようね
– そもそもMarkdown記法ってなんやねん
– 見出し(この↑の目次みたいな)やつってどうすんの?
– 目次ってどうやってつくってるの?
– 写真を載せたいんだけど、添付? 埋め込み?
– コードを載せたいのですけれど
– 表を作るときってどうすれば
– 他の記事を参考にしたいんだけど
– リンクってどうするの?
– 引用っ

元記事を表示

【Rails】carrierwave(キャリアウエーブ)の再生方法 「自動再生」「手動再生

#はじめに
carrierwave(キャリアウエーブ)で保存した動画の再生方法のを紹介します。
今回は「自動再生」と「手動再生」の二種類に着目してます。

前提に、下記の記事の続きになってますので、既にcarrierwaveを導入してるかた向けです。
分量が多かったので「保存」と「再生」で分けております。
よかったら参考にしてみてください。

【Rails】carrierwave(キャリアウエーブ)で動画の投稿(保存)
https://qiita.com/AKI3/items/541ff4d43c20eff190e2

###目次
1. 自動再生
2. 手動再生

#開発環境
ruby 2.6.5
rails 6.0.0

#実装
それでは実装していきます〜

#1. 自動再生
まずは、自動再生の方法です。

####コントローラーの編集
ビューで表示するために`@tops`を定義し、データが格納されるようにします。

“`app/controllers/tops_controller.rb
class TopsController < ApplicationController

元記事を表示

strftimeについて

## strftimeとは?
 日時データを指定したフォーマットで文字列に変換することができるメソッド。
 **Timeクラス**と**Dateクラス**、**DateTimeクラス**のオブジェクトを指定したフォームで文字列として取得し表示させることができる。
## 各クラスについて
◯Timeクラス
 日時を扱えるクラス。

“`ruby:ターミナル
# 現在の日時を取得
today = Time.now
=> 2000-01-01 12:00:00 +0000

# 日時を指定して作成
day = Time.new(2000,1,1,12,00,00)
=> 2000-01-01 12:00:00 +0000
“`
◯Dateクラス
 日付を扱えるクラス。rubyで使うためには**require “date”**が必要になる。

“`ruby:ターミナル
require “date”

# 現在の日時を取得
today = Date.today
=> Wed, 01 Jan 2000

# 日時を指定して作成
day = Date.new(2000,1,1)
=> Wed,

元記事を表示

railsでsnsアプリ開発

rails勉強のためにtwitterのようなsnsアプリを作成する。
あくまで個人的なメモみたいなので,めちゃくちゃ汚いです.

#環境構築
##rails ploject作成(失敗)
作成ディレクトリ内で
`$ rails new sns-app`
→databaseをpostgresqlにしなければならないため、
`rm -rf sns-app`
でアプリケーションごと削除

##postgresql
[参考1](https://qiita.com/asylum/items/2bb69fee5fc8ad932e37)

入っていることを確認
`$ psql –version
psql (PostgreSQL) 10.10 (Ubuntu 10.10-0ubuntu0.18.04.1)`

postgres始動
`sudo /etc/init.d/postgresql start`

`sudo su -`
`sudo su postgres`
でpostgresアカウントに切り替え

postgresアカウントで`$psql`でpostgresqlを動かせる状態(DB内)に

`

元記事を表示

Railsのformでのselect_box使い方!【初学者向け】

Railsでselect_boxの綺麗な書き方を知りたい!
そんな方必見です

# 前提知識
– RubyとRailsの基礎知識
– form_withの使い方の知識
– MVCの基本的な知識

# 書き方
<%= f.select( プロパティ名, タグの情報, {オプション} ) %>
こんな普通に記述していきます!

プロパティ…カラム名
タグの情報…セレクトボックスに使いたいデータ
オプション…セレクトボックスのオプション(include_blankなどをよく使います)

カラム名はuser_idやmenu_idなどidをとってくることが一般的です!!
タグの情報はoptionタグに使われるデータなので配列かハッシュで指定します!

[[表示名, 送信したいデータ], [表示名, 送信したいデータ]]

オプションは{ include_blank: ‘選択してください’}のように書くことが多いと思います。
このオプションをつけると

![スクリーンショット 2020-12-02 7.27.19.png](https://qiita-image-store.s3.ap

元記事を表示

Mysql2::Error: Unknown table ‘~’: DROP TABLE `~`の対処方法

少し前に起きたエラーで書こうか迷ったのですがまた同じエラーでつまずきたくないので書くことにしました。少しでも参考になれば幸いです。
#エラー内容
今回のエラーは僕の場合RSpecのテストのために`rails db:migrate RAILS_ENV=test`を実行したところMysql2::Error: Unknown table ‘myapp_test.notifications’: DROP TABLE ‘notifications’と出ました。
#確認したこと・試したこと
mysqlでmyapp_testのテーブルを確認したがnotificationsは入っていなかった。myapp_developmentのテーブルにはちゃんとnotificationsが入っていた。
一応rails db:create RAILS_ENV=testをやってみたがすでに作られてるよと言われた。
#対処方法
エラーとなったマイグレーションファイルがあるところを参照する
僕の場合テスト環境だったので、

“`
$ rails db:migrate:status RAI

元記事を表示

30代からのプログラミング勉強 6日目【Udemyコース/Ruby on Rails】

本日は比較的短めのコース視聴を実施。
分からないなりにはなりますが、コースレビューの様なものを書いていきます。

##学習内容

####【3日でできる】はじめての Ruby on Rails 4 入門(Rubyから学べる)

今回はこちらのUdemyコースを視聴。
率直な感想としては「自分にはまだ早かったけど見る価値はあった」です。

1から10まで丁寧に、というよりはwebアプリケーションが出来るまでの流れを簡単な解説を挟みつつ見ていくといった印象でした。

またRuby、Railsの導入についてはターミナルへの入力を真似していけばいいだけなので分かりやすいですが、動画内で解説されているバージョンは最新のものではないので注意が必要かもしれません。

説明は
「○○という記述には××という効果があり、例えばこんな時に使います」
ではなく
「××したいので○○と書きます」
というものが多く完全に知識がない状態だと聞き慣れない単語も多かったので、ある程度勉強した後に見るといいかもしれません。

##所感
はじめての、とはありますが説明少なめでサクサク進んでいく感じの講座なので(フ

元記事を表示

【Ruby on Rails初心者向け】ログインユーザーの最新投稿を取得する方法

本のレビューアプリ作成中、ログインユーザーの最新投稿を取得する方法が複数あったので、それぞれの簡単な使い方と違いについて備忘録としてまとめました。

## 【前提】
– rails_6.0.0_
– mysql2
– gem ‘devise’を使用してログイン機能を実装済み

## 【目的】
– current_userの最新投稿を取得すること
– ビューで最終投稿日時を表示すること

## 【結論】 : current_userに紐づく投稿を配列取得し、「.last」で取り出す

“`contoroller.rb

@last_review = Review.where(user_id: current_user.id).last
“`
whereメソッドでcurrent_userに関連する投稿を取得して、lastメソッドで最後の投稿のみを切り出します。

“`html.erb
<%= @last_review.created_at %>
“`
コントローラーで定義したインスタンス変数@last_reviewに対して、created_atカラムの情報を表示させます。

元記事を表示

deviseだけで管理者を設定したい

#はじめに
 現在作成中のアプリでユーザーを`user`と`admin`に2つに分けたいと思い、実装してみた。

##前提
 userのコントローラーやビューやモデルは作成済み。
 管理者設定のgemは使わず、deviseのみで完結させる。

##adminコントローラー生成まで

####deviseのconfigをいじる。

“`ruby:config/initializers/devise.rb/247行目
# ==> Scopes configuration
# Turn scoped views on. Before rendering “sessions/new”, it will first check for
# “users/sessions/new”. It’s turned off by default because it’s slower if you
# are using only default views.
config.scoped_views = true ←コメントアウトを外して、trueにする
“`

“`ruby:

元記事を表示

自動調整ツールRubocopの導入と使い方

# Rubocop
Rubocop(ルボコップ)はRubyの静的コード解析ツールです。
「インデントが揃っていない」「余分な改行・スペースがある」などの指摘をRubyStyleGuideに基づいて行ってくれます。

[公式GitHub](https://github.com/rubocop-hq/rubocop)

Rubocopを導入

“`ruby:Gemfile
group :development do
gem ‘rubocop’, require: false
end
“`

“`ruby:ターミナル
% bundle install
% touch .rubocop.yml
“`
続いてRubocopの設定を行います。

“`ruby:.rubocop.yml
AllCops:
# 除外するディレクトリ(自動生成されたファイル)
# デフォルト設定にある”vendor/**/*”が無効化されないように記述
Exclude:
– “vendor/**/*” # rubocop config/default.yml
– “db/**/*”

元記事を表示

プッシュ時にRSpec+Rubocopを自動でするようにCircleCIでbuildする【Rails】

#はじめに
Railsでアプリを作っている初学者です。
アプリ内にCircleCIを使った自動テストを入れたい!と思い、導入してみましたので、その時に詰まったことをまとめました。

同じようにアプリにCircleCIを入れたいなと思っている方の参考になれば嬉しいです!!

また、間違い等がありましたらご指摘いただけますと幸いです。

##バージョン
Ruby:2.6.6
Rails:5.2.4
Mysql:5.7
環境構築にDocker使用

##前提
以下は題名のことをしたい場合&CircleCIを理解する上で必要です!

・Dockerを使用したことがある
・Rspecを導入済
・Rubocopを導入済
・Githubアカウントがある

まず、CircleCIの公式入門ガイドをすることをおすすめします!自分は実際の挙動があまりイメージ出来なかったのですが、これでざっくり理解することができました。

CircleCI入門ガイド:https://circleci.com/docs/ja/2.0/getting-started/

そして入門ガイドをしたところで、CircleCI

元記事を表示

バリデーション不足によるエラー解決 ~Active Storage を用いた画像投稿機能の実装時発生~

##はじめに
・投稿者は初学者ですので誤った情報を投稿してしまうことがあります。その時はぜひ、遠慮会釈なしにご指摘いただけると幸いです。

##今回のエラーの原因
画像データのバリデーションが欠けていたため、本来であれば画像とセットで投稿しないといけないが、画像がない状態でデータの保存ができてしまっていた。
そのため、画像のないデータを受け取ったビューファイルが混乱し、エラーが起きた。

以下、詳細。

##画像投稿の実装の手順
画像投稿機能を実装しようと`ActiveStorage`を導入した。
そして、以下の手順で準備を進めた。
まずは投稿データと画像データが1対1の関係になるように記した。

“`models/prototype.rb
class Prototype < ApplicationRecord belongs_to :user has_one_attached :image #1対1の関係になる has_many :comments, dependent: :destroy validates :title, :catch_copy, :conc

元記事を表示

【備忘録】tapについて少し調べてみた。

# 環境
Ruby 2.6
Rails 5.1.7

# 背景
機能実装中、似たような処理を探していたら「tap」を見つけてなんだこれ、と思い調べた。これは初めて遭遇したので備忘録として。

# tapとは
“`ruby:
“foo”.tap {|str| puts str.reverse}
# oof
# => “foo”
“`

メソッドの返り値は変わっておらず小文字のままだけれど、tap自体は動いていて文字列が反対になっている。
調べたところによると、tapはメソッドの中で何かしたいけど、メソッド自体の評価は変えたくない時に使うみたい。

# 実際に見たコード
こんな使い方もある(らしい)。

“`ruby:

User.new.tap do |item|
item.name = “Taro”
item.address = “test@gmail.com”
— 中略 —
item.tel_num = “09012345678”
end.save!

“`
`end`の後にsave!ってなんやねんと思ったけど大分スッキリ書けますね。
ta

元記事を表示

Railsで通知機能を実装してみた

## 実装する事

– ポリモーフィック関連付けを用いた通知機能の作成
– 通知機能一覧の表示
– 確認した通知は表示しない

## ポリモーフィック関連付けとは?
 詳細は[RailsTutorial](https://railsguides.jp/association_basics.html#ポリモーフィック関連付け)を確認してください。
 後は記事の中で簡単に説明しています。

## なぜポリモーフィック関連付けで作成するのか
 通知モデルが一つのモデルに対してのみ関連づく場合はポリモーフィック関連付けを行う意味はありません。他のQiita記事を参考にされてください。
 通知モデルが複数のモデルに対して関連づく場合は是非ともポリモーフィック関連付けを行ってください。理由とポリモーフィック関連付けの説明に関しては下記に記載します。

### ポリモーフィック関連付けを使用しない場合のデメリット
 通知モデルが複数のモデルに対して関連づく場合、ポリモーフィック関連付けを使わなければ以下のような設計になると思います。

– Notificationテーブル
– visiter_i

元記事を表示

capistranoでデプロイするときにgitのエラー

よくあるデプロイコマンド
`$ cap staging deploy`
でエラー、あまり良く見たこと無いメッセージ、しかもついこの間までデプロイできてたのに…

“` bash
00:07 git:update
01 git remote set-url origin git@bitbucket.org:hogehoge/hoge.git
✔ 01 hoge@foo.com 0.008s
02 git remote update –prune
02 Fetching origin
02 error: rev-list died of signal 11
02 error: rev-list died of signal 11
02 error: bitbucket.org:hogehoge/hoge.git did not send all necessary objects
02
02 error: Could not fetch origin
“`

なんじゃこりゃ。エラー

元記事を表示

Windows・macOS完全対応GitLab開発環境最終版 (2020年12月)

わずか3ヶ月前に[macOSにGitLab開発環境セットアップ (GDK) (2020年9月)](https://qiita.com/tnir/items/ec704a58a7b54949cf7f)という記事を書きました。が、1四半期が経過し状況も変化したので新たに書くことになりました。

**tl; dr:** GitLab本体やGitaly(バックエンド)をmacOSやWindows、Linuxの各種環境で開発する環境を用意する。

### GitLab Development Kit
GitLab Development Kitと呼ばれるGitLab本体を手元のコンピュータで開発できるツールがGitLab開発開始直後より存在していました。
一方、AWSが3年前の今日2017年12月1日(日本時間)に発表した[AWS Cloud 9](https://aws.amazon.com/cloud9/)、マイクロソフト傘下GitHubの[GitHub Codespaces](https://github.com/features/codespaces) (現在Early access

元記事を表示

【保存版】個人開発の進め方 -全5ステップ-

#はじめに
個人開発の手順をまとめました。
手順通り進めれば、必ずサービスは出来ます。

各ステップが、なるべく省エネになるように意識して書いています。
本手順の目指すスタイルは、**小さく繰り返すプラン②**です
![lifecycle.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/106634/a24c1805-1f66-2676-ebf2-17cce3bcfba2.png)

是非、参考にしてみて下さい。
( twitterやってます![@gjfcgmi](https://twitter.com/gjfcgmi) )

#目次
| STEP | タイトル | 内容 |
| —- | —- | —- |
|①|[アイディアを探す](https://qiita.com/gjfcgmi/private/764d0ca8126754d450d4#-%E3%82%A2%E3%82%A4%E3%83%87%E3%82%A3%E3%82%A2%E3%82%92%E6%8E%A2%

元記事を表示

Active Storage:画像のサイズを指定したら表示速度が大幅改善したよ

# はじめに
## 問題
– ページに表示したい画像の量が多くてページの読込に時間がかかる
– ユーザーの投稿画像を表示するので事前にサイズの調整ができない

## 環境
– Active Storage
– mini_magick
– image_processing
– EC2 & S3 利用

## 考えたこと①
アップロード時にリサイズしたい
=> やり方わからず断念

## 考えたこと②
読込時にサーバー側でリサイズしたら速くならないかな
=> できた!

## 参考
こちらの記事を参考にしました。
[Active StorageのVariantの指定方法いろいろ](https://qiita.com/kazuomatz/items/3cdbd2c40576c2e9d89b)

***【2020.12.1追記】***

***改めてログを確認すると”Active Storage’s ImageProcessing transformer doesn’t support :combine_options, as it always generates a single Ima

元記事を表示

Rangeパーティションを削除する方法

パーティションしたテーブルを戻したい事はほとんどないような気がしますが、
たまたまやる機会があったので備忘録的な物として残しておきます。

まずは、普通に作ったパーティションを全て削除しようと思いました。
`ALTER TABLE table_name DROP PARTITION p201905, p201908,
p201911, p202002, p202005, p202008, p202011, p202102, p202105, p202108, p202111;`

`Cannot remove all partitions, use DROP TABLE instead` というエラーが出て駄目でした。

解決方法
`ALTER TABLE table_name REMOVE PARTITIONING;`

件数に寄りますがかなり時間が掛かります。

“`
create unique index unique_index_activities_id on activities (id) ;
ALTER TABLE table_name DROP PRIMAR

元記事を表示

Devise入門64のレシピ その2

これは「フィヨルドブートキャンプ Advent Calendar 2020」の1日目の記事です。
[フィヨルドブートキャンプ Part 1 Advent Calendar 2020 – Adventar](https://adventar.org/calendars/5086)
[フィヨルドブートキャンプ Part 2 Advent Calendar 2020 – Adventar](https://adventar.org/calendars/5230)

qiitaの文字数制限(?)に引っかかるようなので記事を分割しました。
[Devise入門64のレシピ その1](https://qiita.com/shita1112/items/8b1b66705534d508cb8b)
[Devise入門64のレシピ その2](https://qiita.com/shita1112/items/9dccb03a4e5dcc37e3ab)

# 目次

[Devise入門64のレシピ その1](https://qiita.com/shita1112/items/8b1b66705534d508

元記事を表示

OTHERカテゴリの最新記事