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

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

ユーザー登録でなぜメールアドレスが必要か

# 大体の流れ
多くのwebサイトでは以下のような手順が取られている
1 : 新規登録画面でメールアドレスの入力を要求

2 : そのメールアドレスに対して本登録用のリンクを記載したメールを送信

3 : リンクから遷移した先のフォームに必要事項を記入

4 : 登録完了

# なぜemailを使った認証が必要なのか?
## 不正登録を防ぐ
もし、メール受信なくユーザー登録が完了してしまった場合、無限にアカウントが作れてしまう。
その場合、不正に利用されてしまう可能性があるので手順を複雑化し、不正利用を防ぐのが狙い。

## メールアドレスが有効か確認する
ユーザーとの連絡手段を確立するため。
もし、入力されたメールアドレスが間違っていた場合、ユーザーとの連絡が確立できず「ユーザー登録が完了した」事すらも伝えることができない。
よって、メールアドレスが正常に受信できるかどうか確認している

# Railsでの認証
Railsでログイン認証をするにはdeviseというgemを使って実装するみたい。

[[*Rails*] deviseの使い方(rails5版)](https:/

元記事を表示

【Ruby on Rails】DB保存時のカラムの制約(代表4つ)

# この記事を書いた背景
データ保存時の制約の指定の仕方が、マイグレーションファイルとモデルファイルとそれぞれに書く方法があることを知ったので、改めて代表的なバリデーションをまとめてみました。(結構前に勉強したことですが、改めてqiitaにまとめていこうと思います。)

# 実施環境
macOS Catalina 10.15.7
VS Code 1.50.0
Ruby 2.6.5
Rails 6.0.0

## ①NOT NULL制約
→データが空の状態では保存ができない制約

【マイグレーションファイルへの書き方】
**null: false**

“`java:20200919092740_create_item.rb
t.string :address, null: false
“`

【モデルファイルへの書き方】
**presence: true**

“`java:item.rb
validates :address, presence: true
“`

## ②一意性制約
→重複して同じデータを保存できない制約
【マイグレーションファイルへの書き方】
**u

元記事を表示

充電器を刺したらエラーが解決した話を頭の片隅に置いて欲しい

![arienai.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/557847/af690d62-2a78-81ef-7105-2bc37c9912b9.jpeg)
>グリード「ありえないなんてことは、ありえない」 ーーー鋼の錬金術師

## はじめに
正直しょーもない記事ですが、万が一でも誰かのためになればいいなと思いまとめました。

## 背景
メンターとしてプログラミングに関するエラー対応をしていた際に、以下のようなエラーに遭遇しました。

Rails5.2.4を使用し、RSpecの実行をしようとした際、`cannot load such file — spec_helper (LoadError)`と詳しくは覚えていませんが、何かしらの`NameError`が同時に起こりました。

生徒さんが設定したファイル・フォルダ名やディレクトリの位置などが全て合っていることを確認し、当該アプリケーションを一度githubに上げて頂いたのち、私のPCでclone、テストを通してみました。

皮肉にも自分

元記事を表示

Next.jsアプリをChromeで開きっぱにするとRailsアプリで “/_next/webpack-hmr” のRoutingエラーになる話

## 問題
rails s でローカルサーバーを起動したところ、20秒ごとにNo route matches [GET] “/_next/webpack-hmr” のエラーが出た。

1日前まで普通に動いていたのでおかしいなあと思いつつググってみるとこんなIssueがGitHubに。
[ActionController::RoutingError (No route matches [GET] “/_next/webpack-hmr”) every 20secs](https://github.com/rails/webpacker/issues/1447)

## 原因と対策

別で作業をしていたNext.jsのアプリのChromeタブが原因ぽいです。

解決方法はNext.jsアプリのChromeタブを閉じるだけですね。

## 所感
このIssueなかったらこの人みたいにめちゃくちゃ時間かかったかも。。。

ということで秒速で解決できますが、一見不可思議な問題なので一応日本語ソースとして投稿しておきました。

お役にたてれば幸いです。

元記事を表示

【Rails】TwitterAPI使用時に、httpで送られてくる画像のURIをhttpsに変換した方法

## はじめに

[yuki](https://twitter.com/yuki82511988)と申します。DMMWEBCAMP にお世話になって、今は WEB エンジニアとして勤務しつつ、自分で仲間を集めてサービス開発したり、プログラミングの家庭教師したり毎日エンジニアライフをエンジョイしています。

未経験から目指している方向けのサポートやエラー質問なども引き受けておりますので、気になった方は DM へお願いします。

## 前提と問題
RailsをAPIとして活用していて、`gem twitter`を使って画像収集をしていた際に問題が起こりました。
twitter APIが取得してくる画像のURIが`http`から始まっており、せっかくhttps通信ができているサイトに「安全ではありません」の警告が出てしまいました。

ちなみに、その時コンソールにはこんなエラーが出ていました。

“`console
Mixed Content: The page at ‘https://hogehoge.com’ was loaded over HTTPS, but requested an

元記事を表示

【Bootstrap】基本のクラスまとめ

# 概要

最近、Bootstrapを使ってフロントを作っています。
自分への備忘録としてこれまでに使ってきたクラスをまとめておきます。

参照
Bootstrap (ver. 4.5) : https://getbootstrap.jp/

# ブレークポイント

* sm : 576px
* md : 768px
* lg : 992px
* xl : 1200px

# レイアウト
## container
* 固定幅のコンテナ
* 各ブレークポイントごとに最大幅が変わる

## row
* グリッドシステムの行を決める要素
* 子にcolを持つことで真価を発揮

## col
* グリッドシステムの列を決める要素
* rowの子要素として使う
* col-sm-3
* sm : 576px未満で縦並び
* 3 : (3/12 = 25% の幅)

# ボタン
## btn
* ボタンを作る

## btn-primary
* 青ベースのボタンを作る
* danger : 赤ベース

元記事を表示

【Rails×TwitterAPI】任意のハッシュタグがついたツイートを集める

# 自己紹介
プログラミングスクールDMMWEBCAMPを卒業し、[物流×ITの自社開発企業](https://www.dialog-inc.com/)でWebエンジニアをしております[yuki](https://twitter.com/yuki82511988)と申します。
現在5ヶ月目に突入しました。

こんな記事も書いています。

元記事を表示

Rails・deviseの自動送信メールの日本語版を作ってみた

# はじめに
検索の仕方が悪いのかもしれないのだが、deviseの自動送信メールの日本語訳の定型文が見つからなかった。
なので、自分のポートフォリオで使った定型文を記事にしようと思います。
参考になるという方がいらっしゃれば幸いです。

# 前提
– 署名に記載するURL・問い合わせメールアドレスは環境変数(dotenv-railsのGem)を利用。
– メールの件名は、「devise-i18n」「devise-i18n-views」のGemを使って日本語訳されているものとする。
– 翻訳文は直訳ではなく、日本で一般的に使われているような文面で作成しました。間違い・不足がないように心がけましたが、心優しい方は、間違い・不足の部分を発見されたらお気軽にご指摘くださると幸いです。
– 後でI18n対応というものを知ったので、この記事では本文のI18n対応はしてません。翻訳文のみ直接テンプレートファイルに記載してます。多言語対応したいという時は、下記を参照すると良いと思います。

https://qiita.com/tiktak/items/a70ef7940fa4710f37cb

#

元記事を表示

よく使うdocker-composeコマンド

#よく使うdocker-composeコマンドまとめ

・ボリュームを削除して、停止。

“`
docker-compose down -v
“`

・キャッシュなしでビルド

“`
docker-compose build –no-cache
“`

・バックグラウンドで起動

“`
docker-compose up -d
“`

・コンテナに接続

“`
docker-compose exec #{container} bash
“`

元記事を表示

3分で分かる!sessionとcookieの違いを超ざっくり解説

![スクリーンショット 2020-11-04 0.35.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/e4f8de0f-1f4d-224a-0e95-63aa5b176b67.png)
# sessionとcookieの共通した役割

まずsessionとcookieは情報を記憶するといった共通の役割があります!
これがこんがらがる原因ですね、、、

# cookieとは
まずcookieとはブラウザで持っているファイルのことを表しています。
クロームだったりファイヤーフォックスだったり色々とありますね。

例えばログイン情報だったりもブラウザにcookieを使って保存してあります。
後わかりやすいのが広告ですね!!

![スクリーンショット 2020-11-04 0.35.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/7cddcaef-27ea-11a9-e2be-5aecaf9

元記事を表示

一番小さい値(ruby編)

#一番小さい値をRubyで求める

#入力される値
n_1
n_2
n_3
n_4
n_5
#期待する出力
n_1, n_2, n_3, n_4, n_5 のうち最も小さい数字を出力する
#条件
すべてのテストケースにおいて、以下の条件をみたす。
・1 ≦ n_1, n_2, n_3, n_4, n_5 ≦ 100
#入力例1
10
12
4
8
46
#出力例1
4
#回答
“`java:
n_1 = gets.to_i
n_2 = gets.to_i
n_3 = gets.to_i
n_4 = gets.to_i
n_5 = gets.to_i

result = [n_1, n_2, n_3, n_4, n_5 ]
puts result.min
“`
#出力結果
4
#解説
##n_1からn_5までの変数に入力例である10から46までをgets.to_iを用いて代入する
##次にresultという変数にn_1からn_5までの数値を配列に入れて代入する
##最後にputsでresultを出力するが、最小の数値だけを求めたいのでminを用いて出力する
##minをmaxにすれば

元記事を表示

【初心者向け】予め登録したデータを、選択コマンドで入力フォームに自動入力させたい

# 困っていたこと
– プルダウンに予め登録したデータをセットして、それを選択すると、フォームに自動入力させたいと思っていた
– いろんな記事を試してみたが、formヘルパーを使用していると上手くいかない方法が多かった
– formヘルパーをやめるなどの方法もあったが、セキュリティのためにformヘルパーを使えることが望ましいと考えた

# やりたいこと
– 予め雛形となるデータを登録しておく
– 選択コマンドで選択すると、入力フォームに自動入力される
– 単なるテンプレートではなく、登録時に数値を変えることも可能にしたい

# 開発環境
ruby ‘2.6.6’
gem ‘rails’, ‘~> 6.0.3’, ‘>= 6.0.3.3’

# 実装内容
– undone_actionモデル(カラムは、action_nameとdefault_time)には、予めデータが登録されている状態
– undone_actionsをセレクトボックスにセット
– セレクトボックスを選択すると、イベントが発生し、入力フォームのsavings_nameとearned_timeに値が入る

元記事を表示

エラーメッセージの日本語化

#はじめに
 対象年齢が低いアプリケーションを作成しているため、エラーメッセージを日本語にしたいと思い、導入した。
###エラーメッセージの日本語化
Gemfileに
① `rails-i18n`を記述する。

“`ruby:config/application.rb
module アプリ名
class Application < Rails::Application (中略) config.i18n.default_locale = :ja config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}').to_s] end end ``` configから始まっている下の2行を追記する。 ③ config/locales/modelsの配下に、ja.ymlを作成する。 ```ruby:config/locales/models/ja.yml ja: activerecord: models: モデル名: モデ

元記事を表示

【入門】Ruby on Rails アプリケーションを作成してみる

# はじめに
つい先日お仕事でRuby on Railsデビューを果たしました。
Railsというと画面表示を伴うWebサービスが作られている印象が大きかったのですが、お仕事ではRailsでAPIが作られていました。
なので、ここではWebサービス、APIの作成を両方試してみようと思います。

## 環境
Windows 10 Home 64ビット
※環境構築は「[Ruby on Railsインストール(Windows10)](https://qiita.com/AoiLaurent/items/0b3b5f41fbd143bfa563)」にて。

## Railsが動く仕組み
RailsはMVCモデルをベースとした仕組みにより動きます。
MVCはそれぞれ「Model」(モデル)、「View」(ビュー)、「Controller」(コントローラ)の頭文字からきており、Railsでアプリケーションを開発するときに度々出てきます。
※MVCの詳細は「[Ruby on Rails – MVCモデルとRESTアーキテクチャ](https://qiita.com/AoiLaurent/items/

元記事を表示

Rails5へBootstrap導入

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

“`
$ bundle
“`

“` ruby:application.scss
@import “bootstrap”;
“`

“`javascript:application.js

//= require jquery3
//= require popper
//= require bootstrap-sprockets
“`

この二つの間に記述する
//= require turbolinks
//= require_tree .

元記事を表示

【Ruby On Rails】RubyAws::Sigv4::Errors::MissingCredentialsErrorについて

# エラーの背景
AWS導入後、ローカル環境で開発中のアプリから画像をアップロードし、実際に保存した物がS3に保存されているかを確認しようとしたところ、今回の様なエラーがでました。

# エラー文の意味
![スクリーンショット 2020-11-03 21.00.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/770386/fd03179b-b537-ef16-36d2-1812ed776c19.png)

####「読み込めません。認証情報が欠けているので、次のいずれかを用いて認証情報を与えてあげてください」
という感じになります。

:access_key_id
:secret_access_key
:credentials

….

つまり、それらの認証情報を正しく拾って、読み込まれていない可能性があるということです。

# 確認したこと
S3で保存先できる様にするために、S3でデータが格納される様にバケットは用意しましたし、リージョンやチェックボックスも適切な設定しました。バケットポリシー

元記事を表示

railsのメソッド”link_to”がどう定義されているのか読解してみた

優れたコードを読むことがエンジニアとして成長する促進剤になる、と職場のエリートエンジニアの方に教わったので早速、実践!
ついでに共有してみます。

良質なコードを学ぶことで可読性が高く、バグの少ないコードを書けるようになるかと思いますので、ぜひ皆さんも参考にしてみてください。

手始めにlink_toから。

# link_toの定義
“`
def link_to(name = nil, options = nil, html_options = nil, &block)
html_options, options, name = options, name, block if block_given?
options ||= {}

html_options = convert_options_to_data_attributes(options, html_options)

url = url_for(options)
html_options[“href”] ||= url

content_tag(“a”, name || url, html_opt

元記事を表示

Rails初心者がRSpecに入門してみた

#初めに

なんとかRailsチュートリアルを一周終えたので、RSpecの導入をしてみたいと思います。
まずはRSpecそのものについてと、それに付随して使うフレームワーク等を紹介します。

#そもそもRSpecとは?

RSpecとは、Rubyにおける振舞駆動開発のためのテスティングフレームワーク(wikipedia抜粋)

振舞駆動開発というのは、どうやら動作を先に作り、後からコードを書いていく開発手法のことのようです。
つまり、動作を記述した仕様書のようなものを事前に作って、それに沿って機能を実装していくということですね。
「テストを書く」というよりも、「仕様書を書く」といった感覚が近いのかもしれません。

#Capybara

capybaraはRails5.1から同梱されるようになった、テスト用フレームワークです。RSpecと組み合わせることで、実際に人が手作業で確認するブラウザ操作を自動的に行ってくれます。

#FactoryBot

FactoryBotはテスト用のデータ作成をサポートしてくれるgemです。テストデータの作成には、似たようなものとしてRails標準で搭載さ

元記事を表示

rails routesの読み方

#はじめに
今回は、rails routesコマンドを入力した際に、記述されているルーティングの読み方を説明していきたいと思います。

## 1.ルーティングとは

端的に言うとリクエストの行き先を指定する「道しるべ」と言えます。

## 2.ルーティングの設定
routes.rbファイルに記載するとルーティングが設定できます。

“`
Rails.application.routes.draw do
get ‘posts’, to: ‘posts#index’
end
“`

## 3.ルーティングの確認

“`rails routes“`コマンドをターミナルで入力することで設定されたルーティングを確認できます。

## 4.rails routesの読み方
“`
Prefix Verb URI Pattern Controller#Action
posts GET /posts(.:format) posts#index
“`
Prefix・・・URI Patternに名前をつけて変数化したもの
Verb・・・HTTPメソッド
URI Pat

元記事を表示

試験用のfluentdサーバーを作る

fluentdを使うシステムを作っていく過程で、そもそもfluentdにデータが送られていることをどうテストしようかと悩んだので色々調べてみた。

# やりたいこと

fluentdを使うシステムを作っていく過程で、fluentdにデータが送られていることを確認するテストをサクッと書きたい。

# 方針

CIを行う上で出来る限りテストの時間を短くしたいので、FluentLoggerで投げたデータをなるべくリアルタイムでoutputに連携したい。

以前は自分でソケット開いて待ち受けるコードを書いていたけど、バージョン上がってSSLが絡んで面倒になったので、なるべくpluginとかでなんとかしたい。

CIを回す際にdockerを使って周囲のミドルウェアを立てることが多いので、以前に一度Elasticsearchをミドルウェアキットに入れて試してもみたが、直接呼んでないElasticsearchをわざわざ建ててテストのためにelasticsearch-ruby入れて繋ぎ込むのもだるい。。。
特に公式イメージだとシングルノードで起きないし、バージョン変わった時に全部のマイクロサービスで

元記事を表示

OTHERカテゴリの最新記事