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

Ruby関連のことを調べてみた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、テストを通してみました。

皮肉にも自分

元記事を表示

【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

元記事を表示

【100点満点】プログラミングスクール卒業生向けにコーディングテストを考えてみた【Ruby】

## はじめに

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

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

今回は、とあるところで「プログラミングスクールの卒業生に、コーディングテストをするとしたらどんなものを出すか?」という問を出されたので、当時(6ヶ月前位)の自分の回答を記したいと思います。

今なら**ソート**を聞きたいなとか色々あるんですが、当時の思い出として共有します。
Rubyを学習して、ちょうど卒業した位の方は是非挑戦してみてください。自分も作った当時、同じ卒業生でした。

## 問題
100点満点採点です。

“`
【問題文】
あなたはプログラミング勉強中の生徒で、日々沢山の勉強をしています。
今日は今月の初日と仮定します。
頑張り屋さんのあなたは、

元記事を表示

【文系未経験エンジニア志望の方向け】逃げてきた数学にProject_Eulerを通じて向き合いませんか?

## はじめに

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

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

私はかつてド文系で国語科の高等学校の教員をやっていたのですが、色々あって今は上のキャリアで楽しく過ごしています。
大学受験の際に数学は2Bまで学習していたのですが、プログラミングをする時にとても役立ちました。

もし、高校の頃に **「ちょっと数学を避けてしまったな…。でも考え方がプログラミングに使えそうだしな…。」**と言う方向けに、今回は数学とプログラミングが同時に学習・復習できる**Project Euler**をご紹介します。

## Project Eulerとは
プロジェクトオイラーと読みます。
https://projecteuler.net/

元記事を表示

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

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

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

元記事を表示

IO.select処理で役に立つセルフパイプテクニック

## はじめに

IO.select処理をしていて困った問題としてブロッキング問題があると思います。ブロッキングとは、バッファにデータが全くなくてデータ読み込み処理で待機が発生したり、バッファにデータがあるが、読み込みたいバイト数のデータがなくてデータ読み込み処理が待機したりすることで起きる現象です(書き込みも同様)。IO.select処理でブロッキングが発生したら後続の処理が待たされてしまい非効率です。この問題を解決する方法としてセルフパイプテクニックがあります。セルフパイプテクニックの歴史は1990年頃から始まり、現在も私たちが普段使っているライブラリーで使われてます。[セルフパイプテクニック](https://cr.yp.to/docs/selfpipe.html)

## IO.selectでブロッキングが起きる例と解決例

例えば、rubyでIO.select処理を行いたい場合は、IO.pipeというものを使いこのように書くことができます。これはブロッキングが起きてしまう例です。

“`ruby:例1
eg_1 = -> {
async_heavy_process = –

元記事を表示

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に値が入る

元記事を表示

Ruby 給料の計算プログラム

# はじめに

今回は標準入力からアルバイトの給与の計算プログラムを作っていきます。

“`
給料は以下のルールで決まっています。

・9 時から 17 時まで : 時給 X 円 (通常の時給)
・17 時から 22 時まで : 時給 Y 円 (夜の時給)
・それ以外の時間 : 時給 Z 円 (深夜の時給)

あなたの N 日間の出勤時刻と退勤時刻が 1 時間単位で与えられます。
N 日間の合計で得られる金額を計算してください。

入力例 の場合、4 日間で時給 X 円、Y 円、Z 円となる時間帯を満遍なく働いており、
金額の合計は Z×9 + X×8 + Y×5 + Z×1 = 1500×9 + 1000×8 + 1300×5 + 1500×1 = 29500 円となります。
“`
“`
入力例
1000 1300 1500
4
0 9
9 17
17 22
22 23
“`
“`
出力例

29500
“`

# ソース
“`ruby.rb
m = gets.split.map &:to_i
# 自給額の取得
nums = gets.to_i
# 出勤日数の取得

t

元記事を表示

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

#はじめに
 対象年齢が低いアプリケーションを作成しているため、エラーメッセージを日本語にしたいと思い、導入した。
###エラーメッセージの日本語化
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標準で搭載さ

元記事を表示

Ruby① Windows環境の構築

備忘録

# インストーラ付きのRubyダウンロード
以下のサイトからWindows用バイナリをダウンロードする。

* [RubyInstaller](https://rubyinstaller.org/)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/476387/4bf3e54b-ff5c-89bb-f37c-a5c496351290.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/476387/fe796568-5d1d-ae32-63c6-8b5a7fb69c7f.png)

ダウンロードしたexeファイルをダブルクリックする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/476387/9cac6545-069f-672c-2819-3597d5018d82.png

元記事を表示

Ruby on Rails terminalがrollbackする時

今回はコンソールで動かした時にrollbackされる現象についての解決法をまとめました。
今回はスクレイピングを例に用いて説明します。 後半に解説が乗っています。

“`scraping.rb
class Scraping < ApplicationRecord def self.get_infomation require 'mechanize' agent = Mechanize.new links = [] current_page = agent.get("https://talent-dictionary.com/s/jobs/3/20") elements = current_page.at('.home_talent_list_wrapper') boxs = elements.search('.item') roks = boxs.search('.right') qqqs = roks.search('a') eee

元記事を表示

OTHERカテゴリの最新記事