- 1. Herokuへのデプロイ時、データベースの移行ができなかった原因と対処メモ
- 2. 【Rails6.0/Bootstrap】RailsアプリにBootstrapをGemで導入する方法
- 3. Github Actionsでプロジェクトに新しく追加されたgemを通知する
- 4. Google Mapsに複数のマーカーと情報ウィンドウを表示
- 5. 【RSpec】letの利点が分からないので、letとbefore両方試してみた
- 6. コントローラーに記述するセキュリティの記述
- 7. ActiveHashによるカテゴリー選択
- 8. innodb_large_prefixが有効になっている時は文字コードをutf8ではなくutf8mb4に設定する必要がある
- 9. [rails, payjp] カード登録時に一度リロードしないと登録できない。
- 10. コントローラーを追加せずに、Viewを追加する方法
- 11. [BUG] Segmentation fault at 0x0000000000000b88
- 12. railsで特定のマイグレーションファイルをロールバックする
- 13. 管理者機能の実装【Rails】
- 14. Rails ユーザー認証方法
- 15. 【フォロー機能】ruby/rails (フォローする側のモデルのつながりのみ解説)
- 16. Railsのアプリ名を変更して、GitHubのリポジトリ名を変更するまで
- 17. Rails/ES6/OpenWeatherMapで天気予報を表示してみた
- 18. 未経験ニートからエンジニアへの道
- 19. Railsいつもやっている初期設定
- 20. 学び直し1日目 環境構築、ログイン機能
Herokuへのデプロイ時、データベースの移行ができなかった原因と対処メモ
$ heroku run rails db:migrateでエラー
原因:マイグレーションファイル名がダブっていた
同じような変更をテーブルに加える場合でも、マイグレーションファイルの名前が一緒になってはいけないみたいです。
例えばテーブルにカラムを追加する際、「AddColumnsToBlogs」と命名してマイグレーションファイルを作成し、いくつかのカラムをテーブルに追加したとします。
その後、またカラムの追加が必要になった場合、1回目と同じくカラムの追加だからとマイグレーションファイルに「AddColumnsToBlogs」と命名すると、エラーになりました。(rails db:migrateは実行できましたが、タイトルの通りherokuへのデプロイ時にエラーが発生しました。)解決案:rails db:migrate:resetを実行する。
rails db:migrate:resetとは、
1. rails db:drop
2. rails db:create
3. rails db:migrate
を一度に実行してくれるコマンドです。(下記記
【Rails6.0/Bootstrap】RailsアプリにBootstrapをGemで導入する方法
## 概要
Rails6.0のアプリにBootstrap4.5を導入する方法をまとめました。
フロント開発に便利なCSSフレームワーク「Bootstrap」をRailsに導入したい方は、ぜひご参考下さい!【参考】
* [Bootstrap 4.5 公式ドキュメント(日本語)](https://getbootstrap.jp/docs/4.5/getting-started/download/#rubygems)
* [bootstrap-rubygem README](https://github.com/twbs/bootstrap-rubygem/blob/master/README.md)## 想定読者
“`:想定読者
1. RailsアプリにBootstrapを導入したい
2. でも、記事が多すぎて、結局どのGemを入れて良いのかわからない…!
3. なんとか入れたはいいけど、CSSが適用されない…??
“`本記事では、公式ドキュメントやGemのREADMEの記載を解説しつつ進んでいきます。
僕自身「公式に全部書いてあるなあ…」と実感できたいい例で
Github Actionsでプロジェクトに新しく追加されたgemを通知する
## はじめに
プロジェクトに新しいgemが追加された場合、そのgemの追加が本当に適切かコードレビューで見るべきポイントの一つだと思います。
とくにレビュアーが知らないgemの場合は、そのgemがどの程度活発にメンテされているか、技術的負債に繋がりかねないレガシーなgemでないか等、気にするべきポイントは多いと思います。
そんな訳で新しく追加されたgemをコードレビュー時に確認しやすくする為に作ったgithub actionを紹介します。## 何が出来るの?
pull_requestイベントのアクションとして実行することで、gemが新しく追加されたら作者・概要・最終更新日・ホームページといった情報をコメントで通知してくれるようになります。
![Demo](https://i.gyazo.com/7b87cc40ca21eb528b067fddb57ecc03.png)
## 使い方
Gemfileが更新された場合に通知する設定例。
“`yaml
name: New gemson:
pull_request:
paths:
– Gemfil
Google Mapsに複数のマーカーと情報ウィンドウを表示
#はじめに
Google Maps Platformを利用してGoogle Mapsに複数のマーカーと情報ウィンドウを表示する方法をまとめました。
テーマは「javascript初心者によるjavascript初心者のための解説」です。丁寧すぎたかも。#前提
Maps JavaScript API と Geocoding API のAPI KEYを取得している前提で進めます。
未取得の方は下記などを参考にしてみてください。– [Google Maps API を使ってみた](https://qiita.com/Haruka-Ogawa/items/997401a2edcd20e61037 “Google Maps API を使ってみた”)
– [Get an API Key(Google Maps Platform)](https://developers.google.com/maps/documentation/javascript/get-api-key?hl=ja “Get an API Key”)##バージョン
ruby 2.6.3
Rails 6.0.3
【RSpec】letの利点が分からないので、letとbefore両方試してみた
## はじめに
RSpec学習中に「letとbeforeなら、letを使ったほうが無難」ということを耳にしました。しっかり理解した上で、letを使いたいと思いletとbeforeの違いを調べたところ、淡白な解説を読むよりも、具体例を示したほうが一目瞭然であることに気づき、備忘録としてまとめることにしました。そこで、本記事では`userモデルの単体テスト`を例に、beforeとletを使用した時の挙動の違いを示します。
## 使用技術
– gem
– devise
– factory_bot
– rspec## 準備
– deviseで、ユーザモデルを作成
(https://qiita.com/Hal_mai/items/350c400e8763ce0487a3)
– factory_botで、テストデータを用意
– passwordは、存在チェックのvalidationがかけられているため、敢えて空白を代入し、保存時にエラーが出る前提のuserデータを用意しました。#### テストデータ(user)
“`rb
FactoryBot.define do
fa
コントローラーに記述するセキュリティの記述
#はじめに
コントローラーに記述する最低限のセキュリティについて、忘れないように記録しておく。##Basic認証
“`ruby:app/controllers/application_controller.rb
before_action :basic_authprivate
def basic_auth
authenticate_or_request_with_http_basic do |username, password|
username == ‘ユーザー名’ && password == ‘password’
end
end
“`##直接URLを入力されてもリダイレクトさせる
“`ruby
before_action :authenticate_user! #←ログイン状態でないときはサインインページに遷移
before_action :move_to_index
private
def move_to_index
@item = Item.find(params[:item_id])
redirect_to root_path
ActiveHashによるカテゴリー選択
# ActiveHashによるカテゴリー選択
## ActiveHashとは
都道府県名などの変更されないデータをモデルファイル内に直接記述することで、データベースへ保存せずにデータを取り扱うことができるGemです。また、このGemを使うことでデータベースに47の都道府県名のカラムを作ることなくデータを管理することができます。今回は私が作成中のアプリケーションの例で紹介していきます。
アプリケーションの説明として、収入の分類(給料、ボーナス、副業etc)など決まった選択肢をカテゴリー選択できること目標とします。公式ページはこちら↓↓↓
https://github.com/zilkey/active_hash
## Gemのインストール開発環境 rails 6.0.0
GemfileGemfileに追記する↓↓↓
“`ruby
gem ‘active_hash’
“`
引き続きbundle installを実行します。## モデルの作成
Incomeモデルを作成します。
“`ruby
rails g model income
“`
マイグレレーション
innodb_large_prefixが有効になっている時は文字コードをutf8ではなくutf8mb4に設定する必要がある
# 問題
データベースを作ろうとしたが実行されない。“`:ターミナル
naota7118@Naotas-MacBook-Air-6 my_syllabus % rails db:create
Configure a supported :charset and ensure innodb_large_prefix is enabled to support indexes on varchar(255) string columns.
Couldn’t create ‘mySyllabus_development’ database. Please check your configuration.
rails aborted!
サポートされている:charsetを構成し、varchar(255)文字列のインデックスをサポートするためにinnodb_large_prefixが有効になっていることを確認します。
‘mySyllabus_development’データベースを作成できませんでした。構成を確認してください。
“`# 解決方法
database.ymlにencodi
[rails, payjp] カード登録時に一度リロードしないと登録できない。
# はじめに
rails、payjpを使用した、クレジットカードの登録機能実装の際に起きた問題について記録します。# バージョン情報
– ruby 2.6.5
– rails 6.0.3.3# 起こった問題
クレジットカード新規登録の際に一度リロードしないと登録できず、
リロードした後に登録すると正常にカード情報が登録される。# 原因
turbolinksが影響を及ぼしていた。
本来ページ遷移するところを無理やりajaxに変えてDOMの部分変更によるもの。
処理やレスポンスの向上になるが、jsの処理が動かなくなったり悪さをします。# 解決方法
– application.js
– application.html.hamlのturbolinksの記述を削除
“`
#javascripts/application.js//= require jquery
//= require rails-ujs
//= require_tree .
“`“`ruby
#javascripts/application.js
= stylesheet_l
コントローラーを追加せずに、Viewを追加する方法
Qiita初投稿です!:v_tone2:
現在ポートフォリオ作成中で、以前Twitterでつぶやいたことを、詳しくまとめて記事にしたかったというのが投稿の経緯です。
今回はタイトルにある通り、コントローラーを追加せずにViewのページを追加する方法です。
自分のポートフォリオでは、ログイン前の画面とログイン後の画面を分けていたので、どうしても7つのアクションではカバーできないな…ということが起こりました。
今回は”top”という名前で新しいページを作ったので、それを例に挙げたいと思います。### 実装の手順
1. コントローラーに好きな名前のメソッドを定義
2. メソッド名と同じ名前のViewファイルを作成
3. ルーティングの設定
になります。## コントローラーに好きな名前のメソッドを定義
![スクリーンショット 2020-12-02 19.49.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/681943/e57582d9-bd93-e2ed-7ab4-589ea67b63f8.
[BUG] Segmentation fault at 0x0000000000000b88
# エラー文
awsでDBをマイグレーションしようとしたらエラーが発生しました。
**[BUG] Segmentation**なるものが発生していて、セグフォと呼ばれているそうです。“`console
/usr/local/bundle/ruby/2.6.0/gems/activerecord-5.2.3/lib/active_record/connection_adapters/mysql/database_statements.rb:19: [BUG] Segmentation fault at 0x0000000000000b88
“`# 原因
調べてみたら、MySQLが古かったようでした!# 対策
MySQLを5.2にアップデートします!“`ruby
gem “mysql2”, “~> 0.5.2”
“`# 参考
railsで特定のマイグレーションファイルをロールバックする
migrationファイルをロールバックしたいが、ただロールバックするだけでは一つ前の物しか適用されないため、IDを指定して任意のファイルをロールバックする方法。あくまで備忘録です。ご指摘などあればご鞭撻のほどよろしくお願いします。
まずは、マイグレーションファイルの状態を確認する。
“`
% bundle exec rake db:migration:status
“`
`db:migration:status`で状態を確認できる。“`
Status Migration ID Migration Name
————————————————–
up 20201120034343 Devise create users
up 20201343220111 Create snscredentials
up 20201699490534 Create houses
up 20201202100051 Create addresses
“`
管理者機能の実装【Rails】
#はじめに
現在ポートフォリオ作成のため、補助金の記事検索・閲覧ができるアプリケーションの作成をしています。記事の投稿は全てのユーザーができるものではないため、今回、管理者ユーザーを設定することで閲覧するユーザーとの差別化を図りました。アウトプットのため本記事を投稿しています。
[【初心者向け】管理者ユーザーと管理者用controllerの追加方法[Ruby, Rails]](https://qiita.com/tanutanu/items/7ce8826615f1af605164)
今回は上記の記事を参考にさせていただきました。ありがとうございました。
環境:Rails 6.0.0
#1.前提
既にユーザーの管理機能はdeviseというGemを使用して、実装できていることを前提としております。“`ruby:Gemfile
gem ‘devise’
“`#2.既に実装済みのUserテーブルへAdmin(管理者)を追加する
“`ruby:ターミナル
rails g migration AddAdminToUsers
“`こちらのコマンドを実行すると、、
Rails ユーザー認証方法
#はじめに
オリジナルアプリにユーザー認証機能を実装しました。忘れないように書き記します。#目次
1.ユーザー認証(Basic認証)とは
2.コントローラーへの記述
3.環境変数の設定#1.ユーザー認証とは
Webアプリケーションへのアクセスに対するパスワード設定のこと。一致したユーザーのみがアプリケーションを利用できる。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703987/c3634006-9651-1102-4f6f-6aa4282c08e4.png)
2.コントローラーへの記述
コントローラーは最上位となるアプリケーションコントローラーに記述する。「username」及び「password」は環境変数で設定したものを読み込む。“`ruby:app/controllers/application_controller.rb
before_action :basic_authprivate
def basic_auth
authen
【フォロー機能】ruby/rails (フォローする側のモデルのつながりのみ解説)
#【フォロー機能】ruby/rails
私はフォロー機能をつけるときにとても苦労しました。
なので自分用のメモとしても含めて解説を残したいと思います。
(すでに同類のとてもきれいなqiitaの記事が複数ありますが・・・)railsチュートリアルに書かれているフォロー機能の付け方が私にとって一番わかりやすいと思ったのでチュートリアルの書き方をベースに解説していきたいと思います。
この記事ではフォロー機能の付け方全部を説明するのではなくポイントになるところを抑えたいと思います。
###【前提】
userモデルの1つのidの人が別のidの人をフォローすることにする。
例えばid(1)の人がid(2)の人をフォローするということ。
(単にユーザーがユーザーをフォローするということを伝えたいだけです。)
以下の図はファイルとして作らなければいけないモデルの数が2つあることを表しています。
この時点ではrelationshipsモデルがなんとな~く中間モデルとしてあるっぽいと思っていただければ十分です。![リレーション.png](https://qiita-image-st
Railsのアプリ名を変更して、GitHubのリポジトリ名を変更するまで
どうも、三町哲平です!
開発が長引くと、Railsのアプリ名を変更したいということがあると思います。
しかし、初めてアプリ名を変更するとなると、一箇所変えただけでは、不具合の原因となりエラーが発生してしまうのではないかと思ってついつい思い止まって時間だけが無駄にすぎてしまうなんてこともあると思います。そんな、初心者の方にも必見のアプリ名のRailsのアプリ名変更方法を紹介します。
今回は、Docker-composeで開発環境も構築していますので、流れとして、
__1. Railsのアプリ名の変更方法
2. Docker-composeのアプリ名変更方法
3. GitHubのアプリ名の変更方法__この順番で紹介します。
例えば、Docker-composeを利用していないのであれば、2.は、読み飛ばしてもらって構わないですし、GitHubを利用していないのであれば、3.を飛ばして読み進めてください。
## 1. Railsのアプリ名の変更方法
### ①gemのrenameを使用
“`:Gemfile
gem ‘rename’
“`
“`
$ bundler
Rails/ES6/OpenWeatherMapで天気予報を表示してみた
![ezgif.com-gif-maker.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230985/b4f38ce6-5fae-a97c-9b89-52b3ca3889e3.gif)
#開発環境
Ruby: 2.6.5
Rails: 6.0.0# 事前準備
[OpenWeather](https://openweathermap.org/)のHPにアクセスしアカウントを作成してください。私は下記記事を参考にアカウントを作成しました。
[【Rails】OpenWeatherMapを用いて、登録住所の天気予報を、日本語で表示する方法](https://qiita.com/matsubishi5/items/fcd77eacb0ed111299e2)# 実装
“`app/controllers/weathers_controller.rb
class WeathersController < ApplicationController def index; end end ```
未経験ニートからエンジニアへの道
タイトルは半分釣りです 笑
3年半ピアノの営業として働いたのち、1年間ニートして最近エンジニアとして働き始めました。ニート期間中に勉強した **Rails, Docker, CircleCI, AWS, Terraform**それぞれの勉強方法を雑に紹介します。
これからエンジニアを目指す人の参考になれば幸いです。作ったポートフォリオはこちら
https://github.com/kagamirr0r/C0FEE#Ruby on Rails
####テックアカデミー
・webアプリケーションコース 8週間コース
Rails Tutorialの簡易版 わかりづらいところもある###ポートフォリオ作成
**・自分が使いたい&日本にないサービスを作る**
僕はこれがモチベーションになりました。**・テーブル数を10以上作る**
ER図を書きながらリレーションを考えました。非常に勉強になりました。
参考資料: [いまさら聞けない!?Oracle Database設計](https://www.oracle.com/jp/a/tech/docs/technical-reso
Railsいつもやっている初期設定
Rails newの後に、いつもやっている初期設定を備忘録としてまとめておく。
内容としては、
1. Slimの導入
2. Boostrapの導入
3. 日本語訳のファイルを導入
をしています。
# Slim、Bootstrapの導入
まずはSlimとBootstrapのGemを導入。“`ruby:Gemfile
gem ‘slim-rails’
gem ‘html2slim’
gem ‘bootstrap’
“`
“`
bundle
“`
レイアウトファイルをSlimに変更する。“`
bundle exec erb2slim app/views/layouts/ –delete
“`
application.cssを削除し、application.scssを作成し読み込む。“`
rm app/assets/stylesheets/application.css
“`
application.scssにBootstrapの読み込みの1行を記述。“`scss:app/assets/stylesheets/application.scss
@import
学び直し1日目 環境構築、ログイン機能
1日目は初歩の初歩から、
– 環境構築
– ログイン機能上2つをやっていきます。もう何度もやりましたが、
「できるけど理解はしていない」状態なのでやり直します!今日の教科書
[神戸プログラミングアカデミーrailsチュートリアル](https://www.prog-ac.com/archives/1230)↑のリンクを参考にやっていきます。
#環境構築
この章の学習ページ
[Ruby on Rails ハンズオン勉強会①](https://www.prog-ac.com/archives/1230)##メモ
特に注意することはなかった。
##気になったポイント
###bundlerとは?
学習ページ
[【Rails】結局bundlerって何?bundlerの仕組みを図解形式で徹底解説](https://pikawaka.com/rails/bundler)gemのバージョンやgemの依存関係を管理してくれるgem…らしい。
バージョン確認コマンド“`
bundler -v
“`
###GemfileとGemfile.lockの違い
[【Rail