- 1. ユーザー登録でなぜメールアドレスが必要か
- 2. 【Ruby on Rails】DB保存時のカラムの制約(代表4つ)
- 3. 充電器を刺したらエラーが解決した話を頭の片隅に置いて欲しい
- 4. 【Rails】TwitterAPI使用時に、httpで送られてくる画像のURIをhttpsに変換した方法
- 5. 【100点満点】プログラミングスクール卒業生向けにコーディングテストを考えてみた【Ruby】
- 6. 【文系未経験エンジニア志望の方向け】逃げてきた数学にProject_Eulerを通じて向き合いませんか?
- 7. 【Rails×TwitterAPI】任意のハッシュタグがついたツイートを集める
- 8. IO.select処理で役に立つセルフパイプテクニック
- 9. 3分で分かる!sessionとcookieの違いを超ざっくり解説
- 10. 一番小さい値(ruby編)
- 11. 【初心者向け】予め登録したデータを、選択コマンドで入力フォームに自動入力させたい
- 12. Ruby 給料の計算プログラム
- 13. エラーメッセージの日本語化
- 14. 【入門】Ruby on Rails アプリケーションを作成してみる
- 15. Rails5へBootstrap導入
- 16. 【Ruby On Rails】RubyAws::Sigv4::Errors::MissingCredentialsErrorについて
- 17. railsのメソッド”link_to”がどう定義されているのか読解してみた
- 18. Rails初心者がRSpecに入門してみた
- 19. Ruby① Windows環境の構築
- 20. Ruby on Rails terminalがrollbackする時
ユーザー登録でなぜメールアドレスが必要か
# 大体の流れ
多くの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ヶ月目に突入しました。こんな記事も書いています。
[2020/06/24 06:00] トレンド7位
【卒業生】DMMWEBCAMPに通おうか迷っている人に伝えたい事 by yuki_snow1823 https://t.co/gpqJoV6930— Qiita:Trend (@QiitaTrend) June 23
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_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に値が入る
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”] ||= 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標準で搭載さ
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