- 1. ユーザー登録でなぜメールアドレスが必要か
- 2. 【Ruby on Rails】DB保存時のカラムの制約(代表4つ)
- 3. 充電器を刺したらエラーが解決した話を頭の片隅に置いて欲しい
- 4. Next.jsアプリをChromeで開きっぱにするとRailsアプリで “/_next/webpack-hmr” のRoutingエラーになる話
- 5. 【Rails】TwitterAPI使用時に、httpで送られてくる画像のURIをhttpsに変換した方法
- 6. 【Bootstrap】基本のクラスまとめ
- 7. 【Rails×TwitterAPI】任意のハッシュタグがついたツイートを集める
- 8. Rails・deviseの自動送信メールの日本語版を作ってみた
- 9. よく使うdocker-composeコマンド
- 10. 3分で分かる!sessionとcookieの違いを超ざっくり解説
- 11. 一番小さい値(ruby編)
- 12. 【初心者向け】予め登録したデータを、選択コマンドで入力フォームに自動入力させたい
- 13. エラーメッセージの日本語化
- 14. 【入門】Ruby on Rails アプリケーションを作成してみる
- 15. Rails5へBootstrap導入
- 16. 【Ruby On Rails】RubyAws::Sigv4::Errors::MissingCredentialsErrorについて
- 17. railsのメソッド”link_to”がどう定義されているのか読解してみた
- 18. Rails初心者がRSpecに入門してみた
- 19. rails routesの読み方
- 20. 試験用のfluentdサーバーを作る
ユーザー登録でなぜメールアドレスが必要か
# 大体の流れ
多くの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ヶ月目に突入しました。こんな記事も書いています。
[2020/06/24 06:00] トレンド7位
【卒業生】DMMWEBCAMPに通おうか迷っている人に伝えたい事 by yuki_snow1823 https://t.co/gpqJoV6930— Qiita:Trend (@QiitaTrend) June 23
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_iresult = [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”] ||= urlcontent_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入れて繋ぎ込むのもだるい。。。
特に公式イメージだとシングルノードで起きないし、バージョン変わった時に全部のマイクロサービスで